AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > C语言

数组的初始化

51自学网 2015-09-08 http://www.51zixue.net


[例5-7] 数列排序,采用选择法实现对有5个数的数列进行排序。
选择法的算法思想是:(降序)
1. 将待排序的n个数放入数组n u m中,即n u m [ 0 ]、n u m [ 1 ]、. . . n u m [ n - 1 ]。
2. 让n u m [ 0 ]与后续n u m [ 1 ] . . . n u m [ n - 1 ]依次比较,保证大数在前、小数在后。此次比较,
n u m [ 0 ]是数组中最大。
3. 余下n - 1个元素
4. num[1]与n u m [ 2 ] . . . n u m [ n - 1 ]依次比较,大数在前、小数在后,此次n u m [ 1 ]是全部元素的
最大。
n u m [ n - 2 ]与n u m [ n - 1 ]比较,n u m [ n - 2 ]存大数。
n u m [ n - 1 ]存小数,比较结束,整理有序。
例:待排序5个数为: 44 76 82 63 71
一趟排序: 1次比较:76 44 82 63 71
2次比较:82 44 76 63 71
3次比较:82 44 76 63 71
4次比较:82 44 76 63 71
最大
#include <stdio.h>
m a i n ( )
{
int num[5];
int i,j ;
int temp;
num[0]=94; num[1]=76; num[2]=82; num[3]=63; num[4]=71;
for(i=0; i<4; i++)
for(j=i+1; j<5; j++)
{
i f ( n u m [ i ] > n u m [ j ] )
{
t e m p = n u m [ i ] ;
n u m [ i ] = n u m [ j ] ;
n u m [ j ] = t e m p ;
}
}
for(i=0; i<5; i++)
p r i n t f ( " % 4 d " ,n u m [ i ] ) ;
p r i n t f ( " o k / n " ) ;
}
这是一个非常简单的排序程序,我们只需稍加扩展就可以编制出很多功能强大的管理程
序,如学生统计总分、平均排列年级名次等。
[例5-8] 简易学生成绩查询系统。
图5 - 3为学生成绩登记表,下例程序完成如下功能:
1) 根据输入的学生学号,给出各次考试成绩及平均成绩;
2) 根据输入考试的次数,打印出该次考试中每个学生的成绩,并给出平均分;
3) 根据学号查出学生某次考试成绩;
4) 录入考试成绩。

#include <stdio.h>
m i a n ( )
{
int select;
int i,j ;
int score[5][7];
int average=0;
int sum=0;
d o {
printf("本程序有4项功能/n");
printf("1、根据学号查询学生成绩/n");
printf("2、根据考试号统计成绩/n");
printf("3、根据考试号和学号查询成绩/n");
printf("4、成绩录入/n");
printf("0、退出/n");
printf("请输入选择(0-4):");
scanf("%d/n",&select);
switch(select)
{
case0:
printf("OK/n");
exit(0)
break;
case1:
printf("输入学号:");
scanf("%d/n",&i);
for(j=1;j<7;j++)
{
printf("第%d科成绩是%d/n",j,score[i][j]);
sum+=score[i][j];
}
average=sum/6;
printf("学生的平均成绩是%d/n",average);
break;
case2:
printf("输入考试号:");
scanf("%d/n",&j);
for(i=1;i<5;i++)
{
printf("第%d号学生本科成绩是%d/n",i,score[i][j]);
sum+=score[i][j];
}
average=sum/4;
printf("本科平均成绩是%d/n",average);
break;
case3:
printf("输入学号和考试号:");
scanf("%d%d/n",&i,&j);
printf("第%d号学生的第%d科考试成绩是%d/n",i,j,
score[i][j]);
break;
case4:
printf("请输入成绩/n");
for(i=1;i<5;i++)
for(j=1;j<7;j++)
scanf("%d/n",&score[i][j]);
break;
default:
break;
}while(1);
}
从本例中可以看出,当涉及到二维数组时,通常用两重for循环来存取元素。

 
 
说明
:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,51zixue.net不保证资料的完整性。
 

上一篇:指针与指针变量  下一篇:多维数组