{ k=0;
**********************************
*p=toupper ( * (p-1)); } }
else k=l; } main()
{ char chrstr[64]; int d;
printf(\:\ gets(chrstr); d=strlen(chrstr); chrstr[d]=' '; chrstr[d+l]=0;
printf (\:\\n %s\ fun (chrstr);
printf (\:\\n %s\}
编程题:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:把分数最高的学生数据放在h所指的数组中。注意:分数高的学生可能不只一个,函数返回分数最高学生的人数。 注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
int fun (STREC *a, STREC *b) { } main ( )
{ STREC s[N]={{\{\{\
{\85}, {\91}, {\{\{ \STREC h[N]; int i, n; FILE *out; n=fun (s,h);
printf(\:\\n\for (i=0; i printf(\输出最高分学生的学号和成绩* / printf (\ out=fopen(\fprintf (out, \for(i=0; i fprintf(out, \ fclose (out); } 第15套 填空题:请补充函数fun(),该函数的功能是:求100(不包括100)以内能被2或5整除,但不能同时被2和5整除的自然数。结果保存在数组bb中,函数fun()返回数组bb元素的个数。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。 试题程序: #include for(【1】; i<100; i++) if((i%2!=0&&i%5==0) || (i%2==0&&i%5!=0) ) 【2】; 【3】; } main ( ) { int i, n; int bb [N]; n=fun (bb); for(i=0; i printf {\ printf (\ } } 改错题:下列给定程序中,函数fun()的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include STU *fun(STU a[], int m) { STU b[N],*t; int i, j, k; ********************************** *t=calloc (m, sizeof (STU)); for(i=0;i if(b[i] .s>b[j] .s) j=i; ********************************** t [k] . num=b [j ].num; t[k].s=b[j] .s; b[j] .s=0; } return t; } outresult (STU a [ ], FILE *pf) { int i; for (i=0; i fprintf(pf, \ fprintf(pf, \} main ( ) { STU a[N]={{\ \ STU *porder; int i, m; printf (\ outresult (a, stdout); printf (\:\ scanf (\ while (m>10) { printf(\:\ scanf (\ } porder=fun (a, m); printf (\ printf (\:\\n\ for (i=0; i printf(\ free (porder); } 编程题:编写一个函数,从传入的num个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include fun(char (*a) [81], int num, char *max) { } main ( ) { char ss[10] [81] ,*ps; int n, i=0; printf (\输入若干个字符串:\ gets (ss [i] ); puts (ss [i] ); while ( ! strcmp (ss [i], \用****作结束输入的标记*/ { i++; gets (ss [i] ); puts (ss [i] ); } n=i; ps=fun(ss,n, &ps); printf (\} 第16套 填空题:请补充main函数,该函数的功能是:打印出满足个位的数字、十位上的数字和百位上的数字都相等的所有三位数。 本题的结果为:111 222 333 444 555 666 777 888 999。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。 试题程序: #include main() { int g, s, b; for(g=l; g<10; g++) for (s=l; s<10; s++) for(b=l; b<10; b++) { if(【1】 ) printf(\【2】 ); } } 改错题: 下列给定程序中,函数fun()的功能是:将m(1≤m≤10)个字符串连接起来,组成一个新串,放入pt所指字符串中,例如:把3个串abc,CD,EF串联起来,结果是abcCDEF。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include ********************************** int fun(char str[] [10],int m, char *pt) { int k,q,i,j=0; for (k=0; k for (i=0; i ********************************** pt[i]=str[k,i]; pt+=q; pt[0]=0; } pt- =j; } main ( ) { int m, h; char s[10][10],p[120]; printf(\: \ scanf(\ printf (\:\\n \ for(h=0;h gets (s [h] ) ; fun (s,m,p); printf(\:%s\\n \} 编程题:假定输入的字符串中只包含字母和*号。请编写函数fun(),它的功能是:只