题库 题库

【简答题】

学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数proc(),其功能是:按分数的高低排列学生的记录,高分在前。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include
#define M l6
typedef struct
{
char num[l0];
int S;
}
STREC:
void proc(STREC a[])
{
int i,j;
STREC t;
for(i=1;i
排序*/
for(j=0;j<M-1;J++)&NBSP;。
if(a[j].s
的记录,高分在前*/
{t=a[j];a[j]=a[j+1];a[j+1]=t;)
}
void main()
{
STREC stu[M]={{"GA005",85),{"GA003",76},
{"GA002",69},{"GA004",85),{"GA001",91),
{"GA007",72),{"GA008",64),{"GA006",87),
{"GA015",85),{"GA013",91),{"GA012",64),
{¨GA014",91),{"GA011",66),{"GA017",64},
{"GA018",64),{"GA016",72}};
int i;
proc(stu);
printf("The data after sorted:\n");
for(i=0;i<M;I++)
{
if(i%4= =0)
//每行输出4个学生记录
printf("n");
printf("%s%4d",stu[i],num,stu[i].s);
}
printf("\n");
}

参考答案

voiD proC(STREC A[])
{
int i,j;
STREC t;
for(i=1;i<M;i++)//用冒泡法来按从高到低排序
for(j=0;j<M-1;j++)
if(a[j].s<a[j+1].s)//按分数的高低排列学生的记录,高分在前
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
}

相关试题

单选题 关于C语言中数的表示,以下叙述中正确的是(  )。 查看答案
单选题 若变量已正确定义,在语句“if(W)printf("%d\n",k);”中,以下不可替代w的是( )。 查看答案
单选题 有以下程序:
#include
void fun(char*C,int d)
{*c=*c+1,d=d+1;
printf(%"c%,c",*c,d);
}
main(  )
{char b='a'a='A';
fun(&b,a);printf(%"c,%c\n",b,a);
)
程序运行后的输出结果是(  )。
查看答案
单选题 有以下程序:
#include
main(  )
{ int a=1,b=0;
if(--a)b++;
else if(a=0)b+=2;
else b+=3:
print[("%d\n",b);
}
程序运行后的输出结果是(  )。
查看答案
单选题 设有定义:“int a=1,b=2,C=3;”,以下语句中执行效果与其他三个不同的是(  )。 查看答案
单选题 下列叙述中正确的是(  )。 查看答案
单选题 有以下程序(说明:字母A的ASCIl码值是65):
#include
void fun(char*s)
{while(*s)
{if(*s%2)printf("%C",*s);
s++;
}
}
main(  )
{char a[]="BYTE"; 。
Fun(a);printf("\n");
}
程序运行后的输出结果是(  )。
查看答案
单选题 有以下程序:
#include
void func(int n)
{ int i;
for(i=0;i<=n;i++)printf("*"):
printf("#");
}
main(  )
{func(3);printf("????");func(4);printf("n\");
程序运行后的输出结果(  )。
查看答案
单选题 以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。
#define MIN-2147483647
int findmax(int x[],int n)
{int i,max;
for(i=0;i<N;I++)
{max=MIN;
if(max
return max;
}
造成错误的原因是(  )。
查看答案
单选题 结构化程序所要求的基本结构不包括(  )。 查看答案
单选题 有以下程序:
#include
double f(double x);
main(  )
{double a=0; int i;
for(i=0;i<30;i+=10)a+=f((double)i);
printf("%5.of\n",a);
}
double f(double x)
{ return x*x+1; }
程序运行后的输出结果是(  )。
查看答案
单选题 以下C语言用户标识符中,不合法的是(  )。 查看答案
单选题 有以下程序:
#include
main(  )
{int a=2,b=2,C=2;
print{("%d\n",a/b&c);
}
程序运行后的输出结果是(  )。
查看答案
单选题 设x、Y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是(  )。 查看答案
单选题 以下选项中,合法的一组C语言数值常量是( )。 查看答案
单选题 以下选项中关于C语言常量的叙述错误的是(  )。 查看答案
单选题 有以下程序:
#include
struct stu
{ int num;char name[l0];int age;};
void fun(struct stu*p)
{ printf("%s\n",p->name);}
main(  )
{ struct stu x[3]={{01,"Zhang",20),{02,"Wang",l9},{03,"Zha0",l8}};
fun(x+2);
}
程序运行后的输出结果是(  )。
查看答案
单选题 有以下程序:
#include
#include
main()
{ int*a,*b,*C;
a=b=c=(int*)malloc(sizeof(int));
*a=1;*b=2,*c=3;
a=b:
printf("%d,%d,%d\n",*a,*b,*c);
}
程序运行后的输出结果是( )。
查看答案
单选题 下列能正确进行字符串赋值的是(  )。 查看答案
单选题 以下函数不能用于向文件中写人数据的是(  )。 查看答案