【真题1】 给定程序的功能是求出1 到1000 之内能被7 或11 整除但不能同时被 7 和11 整除的所有整数放在数组a 中,通过n 返回这些数的个数。 #include < stdio.h > void fun(int *a, int *n) { int i, j = 0 ; for(i = 1 ; i < = 1000 ; i++) { /**************found**************/ if(((i % 7 == 0) || (i % 11 == 0)) && i % 77 != 0) a[j++] = ___1___ ; } /**************found**************/ *n = ___2___ ; } main() { int aa[1000], n, k ; /**************found**************/ fun ( ___3___ ) ; for ( k = 0 ; k < n ; k++ ) if((k + 1) % 10 == 0) printf("\n") ; else printf("%5d", aa[k]) ; } 解析: 本题的考核点是循环语句和整除算法。 解题思路:使用循环语句使循环变量依次从1 递增到1000,并将每个值与7 和11 进行取余比较,将符合条件的值存放入数组中并统计符合条件的值的个 数。 本评析仅供参考。 答案:【1】i 【2】j 【3】 a,&n 【真题2】 给定程序modi.c 中,函数fun 的功能是:实现两个整数的交换。 例如 给a 和b 分别输入:60 和65,输出为:a=65 b=60 请改正程序中的错误,使它 能得出正确结果。 注意:不要改动main 函数, #include < stdio.h > #include < conio.h > /************found************/ void fun(int a,b) {int t; /************found************/ t=b;b=a;a=t; } main() {int a,b; clrscr(); printf("Enter a,b:");scanf("%d%d",&a,&b); fun(&a,&b); printf("a=%d b=%d\n",a,b); } (2011年2月) 解析: 本题的考核点是函数的入口参数和基本算法。 函数的参数表是由逗号分隔的变量表,变量表由变量类型和变量名组成,与普 通的变量说明不同,函数参数必须同时具有变量类型和变量名,程序"void fun ( int a, b )"语句中第二个函数参数没有变量类型,是错误的;另外,从主函数 里的"fun( &a, &b);"语句可以看出,fun 函数的两个参数应为整型指针。综上 所述,应该把"void fun ( int a, b )"语句改为"void fun(int *a,int *b)"或相 同作用的语句。所以,fun 函数里的"t=b;b=a;a=t;"语句也是错误的,应该改 为"t=*b;*b=*a;*a=t;"或相同作用的语句。本评析仅供参考。 【真题3】 请编写函数fun,对长度为7 个字符的字符串,除首、尾字符外,将其 余5 个字符按降序排列。例如,原来的字符串为CEAedca,排序输出为 CedcEAa。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main 和其他 函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。 #include < stdio.h > #include < ctype.h > #include < conio.h > int fun(char *s,int num) {……} main() { char s[10]; clrscr(); printf("输入7 个字符的字符串:"); gets(s); fun(s,7); printf("\n%s",s); } (2011年2月) 解析: 本题的考核点是对除首、尾字符外的其它字符按降序排列的算法。 提示 思路:只对除首、尾字符外的字符排序,排序可用多种方法来实现,本题用的 是选择法,通过一变量来记录大数的下标,再与前面的数交换,从而实现降序 排序。 本评析仅供参考 int fun(char *s,int num) {int i,j,h,t; for (i=1;i< num-1;i++) { h=i; for (j=i;j< num-1;j++) if (s[h]< s[j]) h=j;/*从字符串的第i+1 个字符到num-1 个字 符中找出最大的字符,并将其数组下标赋值给h*/ if (h!=i)/*判断找到的最大字符的下标是否为第i 个字符*/ { t=s[h];s[h]=s[i];s[i]=t;}/*将s[h]与s[i]中的字符进 行交换*/ |