试卷编号:11833 所属语言:C语言 试卷方案:gl1 试卷总分:100分 共有题型:6种 ━━━━━━━━━━━━━━━ 一、填空 共10题 (共计20分) ━━━━━━━━━━━━━━━ 第1题 (2.0分) 题号:1531 若 char w,int x,float y,double z;则表达式w*x+z-y的结果为【1】类型. 答案: =======(答案1)======= double =========或========= 双精度 第2题 (2.0分) 题号:310 当a=3,b=2,c=1;时,执行以下程序段后 c=【1】. if(a>b) a=b; if(b>c) b=c; else c=b; c=a; 答案: =======(答案1)======= 2 第3题 (2.0分) 题号:322 下列语句输出的结果是【1】,int a=-1;printf("%x",a); 答案: =======(答案1)======= ffff 第4题 (2.0分) 题号:653 int x; x=-3+4*5-6, 则x的值为【1】. 答案: =======(答案1)======= 11 第5题 (2.0分) 题号:1134 若有定义:char s[ ]="china"; 则Turbo C系统为数组s开辟【1】个字节的内存单元. 答案: =======(答案1)======= 6 第6题 (2.0分) 题号:1543 C语言中调用【1】函数来关闭文件. 答案: =======(答案1)======= fclose =========或========= fclose() 第7题 (2.0分) 题号:1285 输入整型变量a的值. int a; scanf("%d",【1】); 答案: =======(答案1)======= &a 第8题 (2.0分) 题号:1437 C语言源程序文件的后缀是.C,经过编译之后,生成后缀为.OBJ的【1】文件,经连接生成后缀.EXE的可执行文件。 答案: =======(答案1)======= 目标 第9题 (2.0分) 题号:1183 假设变量a,b均为整型,表达式 (a=5,b=2,a>b?a++:b++,a+b) 的值是【1】. 答案: =======(答案1)======= 8 第10题 (2.0分) 题号:681 已知 a=10,b=15,c=1,d=2,e=0,则表达式(c==b)>e的值为【1】. 答案: =======(答案1)======= 0 ━━━━━━━━━━━━━━━ 二、判断 共10题 (共计10分) ━━━━━━━━━━━━━━━ 第1题 (1.0分) 题号:1576 C程序的注释不能是中文文字信息。 答案:N 第2题 (1.0分) 题号:24 C语言中只能逐个引用数组元素而不能一次引用整个数组。 答案:Y 第3题 (1.0分) 题号:1569 语句int a=2,b=2;if(a==3)b=1;执行后b的值是1。 答案:N 第4题 (1.0分) 题号:21 语句scanf("%7.2f",&a);是一个合法的scanf函数。 答案:N 第5题 (1.0分) 题号:1574 switch语句不可以用if语句代替。 答案:N 第6题 (1.0分) 题号:5 若有定义和语句: int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0; for(i=0;i<3;i++) sum+=a[i][2-i];则sum=21. 答案:Y 第7题 (1.0分) 题号:1109 两个字符串中的字符个数相同时才能进行字符串大小的比较 答案:N 第8题 (1.0分) 题号:31 共同体变量所占的内存长度等于最长的成员的长度。 答案:Y 第9题 (1.0分) 题号:26 int a[3][4]={{1},{5},{9}}; 它的作用是将数组各行第一列 的元素赋初值,其余元素值为0。 答案:Y 第10题 (1.0分) 题号:14 用fopen("file","r+");打开的文件"file"可以进行修改。 答案:Y ━━━━━━━━━━━━━━━━━ 三、单项选择 共15题 (共计30分) ━━━━━━━━━━━━━━━━━ 第1题 (2.0分) 题号:639 以下能正确定义数组并正确赋初值的语句是()。 A:int N=5,b[N][N]; B:int a[1][2]={{1},{3}}; C:int c[2][]={{1,2},{3,4}}; D:int d[3][2]={{1,2},{34}}; 答案:D 第2题 (2.0分) 题号:608 下列选项中,合法的C语言关键字是()。 A:VAR B:cher C:integer D:default 答案:D 第3题 (2.0分) 题号:4558 下列关于 C 语言的叙述错误的是 ( ) A:英文字母大小写不加以区分 B:不同类型的变量可以出现在同一个表达式中 C:在赋值表达式中赋值号两边的类型可以不同 D:某些运算符在不同的场合可以有不同的含义 答案:A 第4题 (2.0分) 题号:528 对于void类型函数,调用时不可作为()。 A:自定义函数体中的语句 B:循环体里的语句 C:if语句的成分语句 D:表达式 答案:D 第5题 (2.0分) 题号:3138 若int a=2,则执行完表达式a-=a+=a*a后,a的值是 A:-8 B:-4 C:-2 D:0 答案:D 第6题 (2.0分) 题号:4552 以下标识符中,能作为合法的C用户定义标识符的是()。 A:yu B:7u C:=9 D:a+3 答案:A 第7题 (2.0分) 题号:3553 以下选项中合法的用户标识符是______。 A:long B:_2Test C:3Dmax D:A.dat 答案:B 第8题 (2.0分) 题号:111 设C语言中,int类型数据占2个字节,则unsigned类型数据占()。 A:1个字节 B:2个字节 C:4个字节 D:8个字节 答案:B 第9题 (2.0分) 题号:145 经下列语句定义后,sizeof(x),sizeof(y),sizeof(a),sizeof(b)在 微机上的值分别为()。 char x=65; float y=7.3; int a=100; double b=4.5; A:2,2,2,4 B:1,2,2,4 C:1,4,2,8 D:2,4,2,8 答案:C 第10题 (2.0分) 题号:572 表达式18/4*sqrt(4.0)/8值的数据类型为()。 A:int B:float C:double D:不确定 答案:C 第11题 (2.0分) 题号:3154 如果int a=2,b=3,c=0,下列描述正确的是 A:a>b!=c和a>(b!=c)的执行顺序是一样的 B:!a!=(b!=c)表达式的值为1 C:a||(b=c)执行后b的值为0 D:a&&b>c的结果为假 答案:B 第12题 (2.0分) 题号:3560 t为int类型,进人下面的循环之前,t的值为0 while( t=1 ) { ……} 则以下叙述中正确的是______。 A:循环控制表达式的值为0 B:循环控制表达式的值为1 C:循环控制表达式不合法 D:以上说法都不对 答案:B 第13题 (2.0分) 题号:93 以下运算符中,优先级最高的运算符是()。 A:?: B:++ C:&& D:, 答案:B 第14题 (2.0分) 题号:199 若有int a[][]={{1,2},{3,4}}; 则*(a+1),*(*a+1)的含义分别为()。 A:非法,2 B:&a[1][0],2 C:&a[0][1],3 D:a[0][0],4 答案:B 第15题 (2.0分) 题号:144 设a为整型变量,初值为12,执行完语句a+=a-=a*a后,a的值是()。 A:552 B:144 C:264 D:-264 答案:D ━━━━━━━━━━━━━━━━ 四、程序填空 共2题 (共计20分) ━━━━━━━━━━━━━━━━ 第1题 (10.0分) 题号:479 /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:十个小孩围成一圈分糖果,老师分给第一个小孩 10 块,第二 个小孩 2 块,第三个小孩 8 块,第四个小孩 22 块,第五个 小孩16 块,第六个小孩 4块,第七个小孩 10 块,第八个小孩 6 块,第九个小孩 14 块,第十个小孩20 块。然后所有的小孩 同时将自己手中的糖分一半给左边的小孩;糖块数为奇数的人 可向老师要一块。问经过这样几次调整后大家手中的糖的块数 都一样?每人各有多少块糖? -------------------------------------------------------*/ #include main() { int i,count=0,a[11]={0,10,2,8,22,16,4,10,6,14,20} ; /***********SPACE***********/ while(【?】) { for(i=1 ; i<=10 ; i++) a[i-1]=a[i-1]/2+a[i]/2 ; a[10]=a[10]/2+a[0] ; for(i=1 ; i<=10 ; i++) /***********SPACE***********/ if(【?】) a[i]++ ; for(i=1 ; i<10 ; i++) /***********SPACE***********/ if(a[i]!=a[i+1]) 【?】; if(i==10) break ; else { a[0]=0 ; count++ ; } } printf("count=%d number=%d\n",count,a[1]) ; } 答案: =======(答案1)======= 1 =======(答案2)======= a[i]%2 == 1 =======(答案3)======= break 第2题 (10.0分) 题号:163 /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 题目:以下程序的功能是:采用二分法在给定的有序数组中查找用户输入的值,并显示查 找结果。请填写适当的符号或语句,使程序实现其功能。 如输入5输出为:找到位置为6 如输入10输出为:10未找到 -------------------------------------------------------*/ #include "stdio.h" #define N 10 main() { int a[ ]={0,1,2,3,4,5,6,7,8,9},k; int low=0,high=N-1,mid,find=0; printf("请输入欲查找的值:\n"); scanf("%d",&k); while (low<=high) { /***********SPACE***********/ mid=【?】; if(a[mid]==k) { printf("找到位置为:%d\n",mid+1);find=1; } if(a[mid] #define N 20 void fun(int a[], int n) { int i, j, t, p; for (j = 0 ;j < n-1 ;j++) { /**********FOUND**********/ p = j for (i = j;i < n; i++) /**********FOUND**********/ if(a[i] >a[p]) /**********FOUND**********/ p=j; t = a[p] ; a[p] = a[j] ; a[j] = t; } } main() { int a[N]={9,6,8,3,-1},i, m = 5; printf("排序前的数据:") ; for(i = 0;i < m;i++) printf("%d ",a[i]); printf("\n"); fun(a,m); printf("排序后的数据:") ; for(i = 0;i < m;i++) printf("%d ",a[i]); printf("\n"); } 答案: =======(答案1)======= p = j; =======(答案2)======= if(a[i] < a[p]) =========或========= if(a[p] > a[i]) =======(答案3)======= p = i; ━━━━━━━━━━━━━━━━ 六、程序设计 共1题 (共计10分) ━━━━━━━━━━━━━━━━ 第1题 (10.0分) 题号:411 /*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能:对任意输入的 x,用下式计算并输出 y 的值。 -1 x<0 y= 0 x=0 1 x>0 ------------------------------------------------*/ #include void wwjt(); int fun(int n) { /**********Program**********/ /********** End **********/ } void main () { int x,y; printf("enter x:"); scanf("%d",&x); y=fun(x); printf("x=%d,y=%d\n",x,y); wwjt(); } void wwjt() { FILE *IN,*OUT; int i; int iIN; long int iOUT; IN=fopen("in.dat","r"); if(IN==NULL) { printf("Please Verify The Currernt Dir..it May Be Changed"); } OUT=fopen("out.dat","w"); if(OUT==NULL) { printf("Please Verify The Current Dir.. it May Be Changed"); } for(i=0;i<5;i++) { fscanf(IN,"%d",&iIN); iOUT=fun(iIN); fprintf(OUT,"%ld\n",iOUT); } fclose(IN); fclose(OUT); } 答案: int m; if(n<0) m=-1; else if(n==0) m=0; else m=1; return m; 或 int m; if(n>=0) if(n>0) m=1; else m=0; else m=-1; return m;