【真题1】 下列给定程序中,函数fun()的功能是:判断一个整数m 是否是素数, 若是返回1,否则返回0。在main()函数中,若fun()返回1 则输出YES,若fun() 返回0 则输出NO! 试题程序: #include < conio.h >#include < stdio.h >int fun(int m) { int k=2; while (k< =m__1__(m%k)) __2___ if(__3__) return 1; else return 0; } main() { int n; printf("\nPlease enter n: "); scanf("%d",&n); if(fun(n)) printf("YES\n"); else printf("NO!\n"); } (2011年2月) 解析: 填空1:函数fun()的功能是判断m 是否为素数:m 从2 开始作为除 数,并对m取余,空的两边都是逻辑表达式,左边判断k是否小于m,右边判 断k是否可以被m 整除,两边的关系是逻辑与。 填空2:这个循环的作用是在k小于m且不被m整除的情况下自加,要注意的 是在句尾加';',这是C语言的规定。 填空3:在循环结束之后,如果m 和k相等那么m就是素数,这里要注意的是 表达式中的'=='不要写成赋值符号'=' 。 答案:【1】&& 【2】k++ ; 【3】m==k 【真题2】 给定程序modi.c 中,函数fun 的功能是:计算并输出k 以内最大的10 个能被13 或17 整除的自然数之和。k 的值由主函数传入,若k 的值为500,则函 数值为4622。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main 函数, #include < conio.h >#include < stdio.h >int fun( int k ) { int m=0, mc=0, j, n; while ((k >= 2) && (mc < 10)) {/************found************/ if ((k%13 = 0) || (k%17 = 0)) { m = m+ k; mc++; } k--; } return m; /************found************/ _____ main ( ) { clrscr( ); printf("%d\n", fun (500)); } (2011年2月) 解析: 本题的考核点是C语言中常用运算符的使用,以及一些常用规定。 观察题目可知,if语句表达的条件必须是能够整除13 或整除17,即某个数除 以13 或17 后等于0。"="是赋值运算符,"=="才是"等于"运算符。所以, "="应改为"=="。 每一个C 程序的函数体部分都必须由大括弧{ }括起来。{ }对应要完整,所以 在横线处应填入}。 【真题3】 请编一个函数 fun ,其中n 所指存储单元中存放了数组中元素的个数。 函数的功能是:删除所有值为 y 的元素。数组元素中的值和 y 的值由主函数通过键 盘读入。 注意: 部分源程序存在文件prog.c 中。 请勿改动主函数main 和其它函数中的任何内容,仅在函数fun 的花括号中填入你编 写的若干语句。 #include < conio.h >#include < stdio.h >#define M 20 void fun ( int bb[ ], int *n, int y ) {……} main( ) { int aa[M], n, y, k; clrscr(); printf( "\nPlease enter n : " ); scanf ( "%d", &n ); printf ( "\nEnter %d positive number :\n ", n ); for (k = 0; k< n; k++ )scanf ("%d",&aa[k]); printf ( "The original data is : \n" ); for (k = 0; k< n; k++ ) printf ("%5d",aa[k]); printf ("\nEnter a number to deleted: " ); scanf ("%d", &y ); fun ( aa, &n, y ); printf ("The data after deleted %d : \n", y ); for ( k = 0; k < n; k++ ) printf ( "%4d ", aa[ k ] ); printf( "\n" ); } (2011年2月) 解析: 本题的考核点是数组、循环语句和删除数组中某个元素的算法。 解题思路:先通过外循环语句将数组中的所有元素依次与y值相比较,如果与y 值不相等,则将其值存入另一个数组中,最后再将这些与y值不相等的值存回 原来数组中,并修改数组元素总个数。 void fun ( int bb[ ], int *n, int y ) { int i,j=0; int aa[M]; for(i=0;i< *n;i++) if(bb[i]!=y) aa[j++]=bb[i]; /*如果与y值不相等,则将其值存入到aa数组中*/ *n=j; /*修改数组元素总个数*/ for(i=0;i< *n;i++) bb[i]=aa[i]; /*些与y值不相等的值存回原数组aa中*/ } |