全国信息与通信人才培训考试管理办公室
2. main() { int n ; float s=1.0; for(n=10;n>1;n- -) s=s+1/n;
printf(“%6.1f\\n”,s); } 答案:s=s+1.0/n 3. main( ) { int sum , k ; sum=0 ; k= 1 ;
while (k < =100 ) sum = sum+k ; k + + ;
p rintf (“ sum=%d\\n”, sum) ; } 答案:
while (k < =100 ) { sum = sum+k ; k + + ; } 4. main( )
{ int k , a( 8 ) ; for( k=0; k<10 ; k++)
机密 第 16 页 共9 页
全国信息与通信人才培训考试管理办公室
scanf(“%d”, &a(k)); ...... } 答案:
int k , a[8] ; scanf(“%d”, &a[k]); 5. main( ) {int a;
scanf(“%d”, a);
if (a = 1) printf(“One\\n”) ; } 答案:printf(\四.编程题 (共计10分)
编写一个函数int fun(int *s,int t,int *k),用来求出数组的最小元素在数组中的下标并存放在k所指的存储单元中。 如,输入如下整数: 234 345 753 134 436 458 100 321 135 760 则输出结果为6,100。 注:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:
#include
int fun(int *s,int t,int *k) {
机密 第 17 页 共9 页
全国信息与通信人才培训考试管理办公室
} main()
{ int a[10]={234,345,753,134,436,458,100,321,135,760},k; clrscr(); fun(a, 10, &k);
printf(\ } 答案
int fun(int *s,int t,int *k) { int i;
*k=0; /*k所指的数是数组的下标值*/ for(i=0;i
*k=i; /*找到数组的最小元素,把该元素的下标赋给k所指的数*/ return s[*k]; /*返回数组的最小元素*/} 模拟题:
一.单项选择题(每题2分,共计60分)
1. 根据C语言的语法规则,下列()个是不合法标识符:A A.While B. Name C. Rern5
机密 第 18 页 共9 页
全国信息与通信人才培训考试管理办公室
D. _exam
2. 属于 C 语言的数据类型是:C
A.复数型 B.逻辑型 C.双精度型 D.集合型
3. 假设变量a,i已正确定义,且i已正确赋值,合法的语句是 :B A.a==1 B.++i; C.a=a++=5; D.a=int(i);
4. 设有以下定义和语句,则*(*(p+2)+1)的值为:D int[3][2]={ 10,20,30,40,50,60},(*p)[2]; p=a; A.16
B.32 C.64
D.60
5. int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则值为 6 的表达式是:C A.*p+6 B.*(p+6) C.*p+=5 D.p+5 6. 有以下程序 #include main()
{ FILE *fp; int i=20,j=30,k,n; fp=fopen(\);
fprintf(fp,\\n\);fprintf(fp,\\n\); fclose(fp);
机密 第 19 页 共9 页
全国信息与通信人才培训考试管理办公室
fp=fopen(\);
fscanf(fp,\,&k,&n); printf(\\n\); fclose(fp); }
程序运行后的输出结果是:A A.20 30 B.20 50 C.30 50 D.30 20
7. 以下说法中正确的是:A
A. C 语言程序总是从 main( )函数开始执行
B.在 C 语言程序中,要调用函数必须在 main( )函数中定义 C. C 语言程序总是从第一个函数开始执行
D.C 语言程序中的 main( )函数必须放在程序的开始部分 8. Break语句的正确的用法是:B
A. 无论在任何情况下,都中断程序的执行,退出到系统下一层 B. 在多重循环中,只能退出最靠近的那一层循环语句 C. 跳出多重循环 D. 只能修改控制变量
9. 在下列程序中,没有构成死循环的是:D A.int i=100; while(1)
机密 第 20 页 共9 页