考号:028姓名:028剩余时间:01:51:10IP:192.168.12.98网络连接:●2012年(上)全国信息技术水平考试计算机程序设计技术水平证书(C语言)考试试卷第一大题:单选题(30 分)1. (1分)设有说明语句char *a="\123xyz";则变量a()。
(A) 包含7个字符(B) 包含6个字符(C) 包含5个字符(D) 包含4个字符2. (1分)下列定义语句中错误的是()。
(A) int a[]={1,2}; (B) char *a[3]; (C) char s[10]="test"; (D) int n=5,a[n];3. (1分)下面程序的输出结果是()。
#define SU(X,Y) (X)*Yvoid main( ){ int a=3,b=4;printf("%d\n",SU(a++,b++));}(A) 12 (B) 15 (C) 16 (D) 204. (1分)下面程序的运行结果是()。
#include"stdio.h"#include"string.h"void main( ){char b[30],*chp;strcpy(&b[0],"CH");strcpy(&b[1],"DEF");strcpy(&b[2],"ABC");printf("%s \n",b);}(A) CDABC (B) DEFABC (C) ABCDE (D) ABCDEF5. (1分) 下面程序的输出结果是()。
#include <stdio.h>int gcd(int m, int n){if(m==n)return m;else if(m>n)return gcd(m-n, n);elsereturn gcd(m, n-m);}void main( ){printf(″Gcd = %d\n″, gcd(24, 36));}(A) Gcd=60 (B) Gcd=24 (C) Gcd=12 (D) Gcd=366. (1分)已知int a=20; a*=2; 则a的值为()。
(A) 40 (B) 22 (C) 18 (D) 207. (1分)已知:char str1[10], str2; 则下列输入语句中正确的是()。
(A) scanf ("%s%c", str1, &str2); (B) scanf ("%s%s", &str1,str2); (C) scanf ("%c%c", &str1,str2); (D) scanf ("%c%s", &str1,str2);8. (1分)为了向二进制文件尾部增加数据,打开文件的方式应采用()。
(A) "ab"(B) "rb+"(C) "wb"(D) "wb+"9. (1分)下列各函数的首部中正确的是()。
(A) void fun1(var x:integer,var y:integer)(B) void fun1 (int x,y)(C) void fun1 (int x, int y)(D) Sub fun1 (x as integer, y as integer)10. (1分)在C语言中,紧跟在关键字if后一对圆括号里的表达式()。
(A) 只能用逻辑表达式(B) 只能用关系表达式(C) 只能用逻辑表达式或关系表达式(D) 可以是任意表达式11. (1分)在位运算中,操作数每右移一位,其结果相当于()。
(A) 操作数乘以2 (B) 操作数除以2 (C) 操作数除以4 (D) 操作数乘以412. (1分)若执行fopen函数时发生错误,则函数的返回值是()。
(A) 地址值(B) 0 (C) 1 (D) EOF13. (1分)在C语言中,具有动态申请内存块功能的函数是()。
(A) malloc() (B) free() (C) new() (D) delete()14. (1分)C语言规定,以数组名做实参时,它和对应形参之间的数据传递方式是()。
(A) 用户指定传递方式(B) 无传递(C) 单向值传递(D) 地址传递15. (1分)下面程序的输出结果是()。
#include <stdio.h>void main(){int a=4,b=3,c=2,d=1;if (b>c&&!(d==a))printf("%d\n",(a<b?a:d<c?d:b)); elseprintf("%d\n",(a>b?a:d>c?d:b)); }(A) 1 (B) 2 (C) 3 (D) 416. (1分)在执行int a[][3]={{1,2},{3,4}};语句后,a[1][2]的值是()。
(A) 3 (B) 4 (C) 0 (D) 217. (1分)有如下定义:struct{int x;char *y}tab[2]={{1,”ab”},{2,”cd”}},*p=tab;则:表达式*p->y的结果是()。
(A) 'a'(B) 'b'(C) 'c'(D) 'd'18. (1分)下面程序的输出结果是()。
#include <stdio.h>#define N 2#define M 2void main( ){int a[M][N];int i,j;for(i=0;i<M;i++)for(j=0;j<N;j++)a[i][j]=i+j-(i-j);printf("%d\n",*(a[1]+1));}(A) 1 (B) 2 (C) 3 (D) 419. (1分)下面程序的输出结果是()。
#include <stdio.h>void main(){ int x=0,s=0;while(! x !=0) s+=++x;;printf ("%d\n",s );}(A) 0 (B) 1 (C) 表达式是非法的(D) 执行无限次20. (1分)下面程序的输出结果是()。
#include<stdio.h>void main ( ){ char ch[7]="3xy456";int i,z=0;for (i=0;ch[i]>'0'&&ch[i]<='9';i+=2) z=10*z+ch[i]-'0';printf("%d\n",z);}(A) 3 (B) 35 (C) 5 (D) x21. (1分)若所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是()。
(A) 7 (B) 8 (C) 6 (D) 222. (1分)下面程序的输出结果是()。
#include <stdio.h>void main(){int a=2,b=-1, c=2;if(a) if(b<0) c=0;else c++;printf("%d\n",c);}(A) 0 (B) 1 (C) -1 (D) 223. (1分) 下面程序的输出结果是()。
#include <stdio.h>void fun(){static int a=0;a+=2;printf("%d",a);}void main(){int i;for(i=0;i<=3;i++) fun();printf("\n");}(A) 0246 (B) 2222 (C) 2468 (D) 2024. (1分)对下列程序段,描述正确的是( )。
int k=10;while(k=0) k=k-1;(A) 循环体语句一次也不执行(B) 循环是无限循环(C) 循环体执行了10次(D) 循环体语句执行了一次25. (1分)下列叙述中不正确的是( )。
(A) 在不同的函数中可以使用相同名字的变量(B) 函数中的形式参数是局部变量(C) 在一个函数内的复合语句中定义的变量在本函数范围内有效(D) 在一个函数内定义的变量只在本函数范围内有效26. (1分)在C语言中,变量所分配的内存空间大小()。
(A) 均为一个字节(B) 由变量的类型决定(C) 由用户自己定义(D) 是任意的27. (1分)下列数组声明中,属于非法的是()。
(A) int a[][]; (B) char x[25][890]; (C) int room[-2] [2]; (D) (A)和(C)28. (1分)下面程序的输出结果是()。
void main(){ int a=0, i;for (i=1; i<4; i++){switch (i){ case 0:case 3: a+=2;case 1:case 2: a+=3;default: a+=5;}}printf("%d", a);}(A) 24 (B) 21 (C) 26 (D) 2329. (1分)sizeof(double)的返回值类型是()。
(A) 双精度型(B) 单精度型(C) 不合法(D) 整型30. (1分)如果x 是一个整型变量,那么赋值x = 1/3的结果是()。
(A) 0.33 (B) 0 (C) 0.30 (D) 未定义的无用数据第二大题:程序填空题(20 分)1. (10分)下列程序功能为从键盘输入一字符串,再将其删除某字符后赋给另一字符串。
如输入的字符串为”I am a student.”,要求删除其中的字符a后为”I m student.”输出。
#include<stdio.h>void main( ){char str1[81],str2[81],ch;int i,j=0;printf("input a string:");【1】;printf("\n delete?");ch=getchar();for(i=0; 【2】;i++)if(str1[i]!=ch)str2[ 【3】]=str1[i];else【4】;str2[i-j]= 【5】;puts(str2);}2. (10分)下列程序功能为从键盘读入正整数n,然后计算s=1+1+2+1+2+3+ ...... +n。
要求外循环i从1--n变化,内循环计算p=1+2+ (i)#include<stdio.h>void main(){【6】i,j,n,s,p;printf("input n=");scanf( 【7】);for( 【8】;i<=n;i++) {for(p=0,j=1; 【9】;j++) p+=j;s= 【10】;}printf("n=%d,s=%d\n",n,s);}第三大题:编程题(50 分)1. (25分)备注:考生按照系统提示目录保存试题文件,每道试题建立一个文件夹,文件夹名为题目编号。