printf("%5d",a[i]);
printf("\n");
}
intmain()//主函数
{
{printf("sort1:
\n");//调用sort1函数
inta[10];
sort1(a);}
{printf("sort2:
\n");//调用sort2函数
inta[30000],n;
sort2(a,n);}
{printf("sort3:
\n");//调用sort3函数
inta[30000],n;
charstyle;
sort3(a,n,style);}
return0;
}
<这个程序中输入字符时由于前面的程序的干扰,第一个输入字符语句会直接跳过,所以要另加一个空白的输入字符的语言,从而使程序中输入字符的语句能够正常运行>
<由于数组的长度必须要定义,而且不能用变量定义,鉴于要进行比较的数据量n是一个整形的数,定义数组为一个较长数组即可>
3,运行结果:
3,用指针优化学生成绩排名
1,流程图:
Sortcopy
main
2,程序:
#include
#include
voidsort(int*p)//定义函数sort
{//将成绩数组按照从高到低进行排序,要求用函数实现
inti,j,t;
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(*(p+j)<*(p+j+1))
{t=*(p+j);*(p+j)=*(p+j+1);*(p+j+1)=t;}
}
voidcopy(char*a,char*b)//定义函数copy
{
for(;*a!
='\0';a++,b++)//复制该字符串,用函数实现
{*b=*a;}
*b='\0';
}
intmain()
{
inti,j,t,stu[10],*p;//定义一个数组stu[10]存放10个学生的成绩
p=stu;
printf("请输入10个数据:
\n");
for(i=0;i<10;i++)//从键盘输入数据,用指针实现
scanf("%d",p+i);
printf("数组stu[10]的内容为:
\n");
for(i=0;i<10;i++)//将数组stu[10]的内容输出到屏幕上,用指针实现
printf("%5d",*(p+i));
printf("\n");
for(i=0;i<9;i++)//将成绩数组按照从高到低进行排序,用指针实现
for(j=0;j<9-i;j++)
if(*(p+j)<*(p+j+1))
{t=*(p+j);*(p+j)=*(p+j+1);*(p+j+1)=t;}
printf("成绩数组按照从高到低进行排序为:
\n");
p=stu;
for(i=0;i<10;i++)
printf("%5d",*(p+i));
printf("\n");
p=stu;
sort(p);//调用函数sort
printf("第三步内容放在函数中实现为:
\n");
for(i=0;i<10;i++)
printf("%5d",*(p+i));
printf("\n");
printf("采用指针方法,输入字符串studentscore:
\n");
char*a="studentscore";
charb[14];
copy(a,b);//调用函数copy
printf("%s\n",b);
return0;
}
<指针的传递是双向的,在赋值中有多种方法,比如说对数组直接赋值,或者直接对指针变量进行赋值>
<复制该字符串,用函数实现时是用循环语句把一个字符串的每一个字符赋值给另一个字符串>
3,运行结果:
4,学生成绩单制作
1,流程图:
<结构体语言具有简洁,方便,模块化的特点,在初始化及输出过程中要注意输入输出方式>
<在输入字符串的时候,输入语句中不应有&>
2,程序:
#include
StructStudent//定义结构体
{
charnumber[10];
charname[10];
intscore[3
];
floataverage;
}student[10];
intmain()
{
inti,j,t;
for(i=0;i<10;i++)//初始化结构体
{printf("\n输入student%d成绩:
\n",i+1);
printf("number:
");
scanf("%s",student[i].number);
printf("name:
");//存放10个学生的学号,姓名,三门课的成绩
scanf("%s",student[i].name);
for(j=0;j<3;j++)
{printf("score%d:
",j+1);
scanf("%d",&student[i].score[j]);
}
student[i].average=(student[i].score[0]+student[i].score[1]+student[i].score[2])/3.0;
printf("average:
%f",student[i].average);
}
printf("\n");
printf("输出数学成绩最高的学生的学号、姓名、以及该门课程的成绩:
\n");//输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩
intmax=0,max_math=0,max_chinese=0,max_english=0,max_average=0,max_i=0;
for(i=0;i<10;i++)
{
if(max_math{max_math=student[i].score[0];
max_i=i;}
}
printf("number=%s,name=%s,max_math=%d\n",student[max_i].number,student[max_i].name,student[max_i].score[0]);
printf("输出中文成绩最高的学生的学号、姓名、以及该门课程的成绩:
\n");
for(i=0;i<10;i++)
{
if(max_chinese{max_chinese=student[i].score[1];
max_i=i;}
}
printf("number=%s,name=%s,max_chinese=%d\n",student[max_i].number,student[max_i].name,student[max_i].score[1]);
printf("输出中文成绩最高的学生的学号、姓名、以及该门课程的成绩:
\n");
for(i=0;i<10;i++)
{
if(max_english{max_english=student[i].score[0];
max_i=i;}
}
printf("number=%s,name=%s,max_english=%d\n",student[max_i].number,student[max_i].name,student[max_i].score[2]);
printf("输出三门课程的平均分数最高的学生的学号、姓名及其平均分:
\n");//输出三门课程的平均分数最高的学生的学号、姓名及其平均分
for(i=0;i<10;i++)
{
if(max_average{max_average=student[i].average;
max_i=i;}
}
printf("number=%s,name=%s,max_average=%f\n",student[max_i].number,student[max_i].name,student[max_i].average);
for(i=0;i<9;i++)//将10个学生按照平均分数从高到低进行排序
for(j=0;j<9-i;j++)
if(student[j].average{t=student[j].average;student[j].average=student[j+1].average;student[j+1].average=t;}
printf("numbernamemathChineseEnglishaverage\n");
for(i=0;i<10;i++)//输出排序后的结果
printf("%8s%8s%9d%9d%9d%6.2f\n",student[i].number,student[i].name,student[i].score[0],student[i].score[1],student[i].score[2],student[i].average);
return0;
3,运行结果: