2016 年 计 算 机 二 级 (C 语 言 ) 模 拟 试 题 及 答 案 (4) 一 填 空 题 1 C 语 言 中 基 本 的 数 据 类 型 有 : 2 C 语 言 中 普 通 整 型 变 量 的 类 型 说 明 符 为, 在 内 存 中 占 字 节, 有 符 号 普 通 整 型 的 数 据 范 围 是 3 整 数 -35 在 机 内 的 补 码 表 示 为 4 执 行 下 列 语 句 int a=8;a+=a-=a*a; 后,a 的 值 是 5 有 如 下 语 句 :chara[ ]={ I am a student }; 该 字 符 串 的 长 度 是,A[3]= 6 符 号 a 和 a 的 区 别 是 7 所 谓 指 针 就 是 & 运 算 符 的 作 用 是 * 运 算 符 的 作 用 是 8 有 如 下 输 入 语 句 :scanf( a=%d,b=%d,c=%d,&a,&b,&c); 为 使 变 量 a 的 值 为 1,b 的 值 为 3,c 的 值 为 2, 从 键 盘 输 入 数 据 的 正 确 形 式 应 是 二 选 择 题 1 设 整 型 变 量 a 为 5, 使 b 不 为 2 的 表 达 式 是 ( ) A. b=a/2 B. b=6-(--a) C. b=a%2 D. b=a>3?2:1 2 为 了 避 免 嵌 套 的 条 件 分 支 语 句 if-else 的 二 义 性,C 语 言 规 定 :C 程 序 中 的 else 总 是 与 ( ) 组 成 配 对 关 系 A. 缩 排 位 置 相 同 的 if B. 在 其 之 前 未 配 对 的 if C. 在 其 之 前 未 配 对 的 最 近 的 if D. 同 一 行 上 的 if 3 以 下 程 序 的 输 出 结 果 是 ( ) int x=10,y=10; 1
printf( %d%d\n,x--,--y); A. 1010 B. 9 9 C. 9 10 D. 10 9 4 设 A 为 存 放 ( 短 ) 整 型 的 一 维 数 组, 如 果 A 的 首 地 址 为 P, 那 么 A 中 第 i 个 元 素 的 地 址 为 ( ) A.P+i*2 B.P+(i-1)*2 C.P+(i-1) D.P+i 5 选 出 下 列 标 识 符 中 不 是 合 法 的 标 识 符 的 是 ( ) A. hot_do B. cat1 C. _pri D. 2ab 6 以 下 程 序 的 输 出 结 果 是 ( ) int a=5; float x=3.14; a*=x*( E - A ); printf( %f\n,(float)a); A. 62.000000 B. 62.800000 C. 63.000000 D. 62 7 设 有 说 明 double(*p1)[n]; 其 中 标 识 符 p1 是 ( ) A. N 个 指 向 double 型 变 量 的 指 针 B. 指 向 N 个 double 型 变 量 的 函 数 指 针 C. 一 个 指 向 由 N 个 double 型 元 素 组 成 的 一 维 数 组 的 指 针 2
D. 具 有 N 个 指 针 元 素 的 一 维 指 针 数 组, 每 个 元 素 都 只 能 指 向 double 型 量 8 在 C 程 序 中 有 如 下 语 句 :char *func(int x,int y); 它 是 ( ) A. 对 函 数 func 的 定 义 B. 对 函 数 func 的 调 用 C. 对 函 数 func 的 原 型 说 明 D. 不 合 法 的 9 以 下 程 序 的 输 出 结 果 是 ( ) char str[15]= hello! ; printf( %d\n,strlen(str)); A. 15 B. 14 C. 7 D. 6 10 分 析 以 下 程 序 的 输 出 结 果 是 ( ) {inta=5,b=-1,c; c=adds(a,b); printf( %d,c); c=adds(a,b); printf( %d\n,c); } int adds(int x,int y) {static int m=0,n=3; n*=++m; m=n%x+y++; return(m);} A. 2,3 B. 2,2 C. 3,2 D. 2,4 3
11 下 列 描 述 中 不 正 确 的 是 ( ) A. 字 符 型 数 组 中 可 能 存 放 字 符 串 B. 可 以 对 字 符 型 数 组 进 行 整 体 输 入 输 出 C. 可 以 对 整 型 数 组 进 行 整 体 输 入 输 出 D. 不 能 在 赋 值 语 句 中 通 过 赋 值 运 算 符 = 对 字 符 型 数 组 进 行 整 体 赋 值 12 以 下 程 序 的 输 出 结 果 是 ( ) #definef(x) x*x {int a=6,b=2,c; c=f(a)/f(b); printf( %d\n,c); } A.9 B.6 C.36 D.18 13 设 有 如 下 定 义 : int x=10,y=3,z; 则 语 句 printf("%d\n",z=(x%y,x/y)); 的 输 出 结 果 是 ( ) A. 1 B. 0 C. 4 D. 3 14 定 义 如 下 变 量 和 数 组 :int i; int x[3][3]={1,2,3,4,5,6,7,8,9}; 则 语 句 for(i=0;i<3;i++)printf("%d",x[i][2-i]); 的 输 出 结 果 是 ( ) A. 159 B. 147 C. 357 D. 369 15 以 下 对 二 维 数 组 a 进 行 正 确 初 始 化 的 是 ( ) A. int a[2][3]={{1,2},{3,4},{5,6}}; 4
B. int a[ ][3]={1,2,3,4,5,6}; C. int a[2][ ]={1,2,3,4,5,6}; D. int a[2][ ]={{1,2},{3,4}}; 16 两 次 运 行 下 面 的 程 序, 如 果 从 键 盘 上 分 别 输 入 6 和 3, 则 输 出 结 果 是 ( ) int x; scanf("%d",&x); if(x++>5) printf("%d",x); else printf("%d\n",x - -); A. 7 和 5 B. 6 和 3 C. 7 和 4 D. 6 和 4 17 设 有 如 下 定 义 : char *aa[2]={"abcd","abcd"}; 则 以 下 说 法 中 正 确 的 是 ( ) A)aa 数 组 成 元 素 的 值 分 别 是 "abcd" 和 ABCD" B)aa 是 指 针 变 量, 它 指 向 含 有 两 个 数 组 元 素 的 字 符 型 一 维 数 组 C)aa 数 组 的 两 个 元 素 分 别 存 放 的 是 含 有 4 个 字 符 的 一 维 字 符 数 组 的 首 地 址 D)aa 数 组 的 两 个 元 素 中 各 自 存 放 了 字 符 'a' 和 'A' 的 地 址 18 下 列 程 序 的 输 出 结 果 是 ( ) char *p1="abcd", *p2="abcd", str[50]="xyz"; strcpy(str+2,strcat(p1+2,p2+1)); printf("%s",str); A. xyabcab B. abcabz C. ABabcz D. xycdbcd 19 下 列 程 序 的 输 出 结 果 是 ( ) int a[5]={2,4,6,8,10},*p,* *k; p=a;k=&p; 5
printf("%d",*(p++)); printf("%d\n",* *k); A. 4 4 B. 2 2 C. 2 4 D. 4 6 20 不 能 把 字 符 串 :Hello! 赋 给 数 组 b 的 语 句 是 ( ) A. char b[10]={'h','e','l','l','o','!'}; B. char b[10];b="hello!"; C. char b[10];strcpy(b,"hello!"); D. char b[10]="hello!"; 三 读 程 序 题 1 float f=3.1415927; printf( %f,%5.4f,%3.3f,f,f,f); 则 程 序 的 输 出 结 果 是 2 int x=6, y=7; printf( %d,,x++); printf( %d\n,++y); 程 序 的 输 出 结 果 是 3 a=3; a+=(a<1)?a:1; printf( %d,a); 结 果 是 4 for (a=1,b=1;a<=100;a++) { if(b>=20) break; if(b%3==1) {b+=3;continue;} b-=5; } 程 序 的 输 出 结 果 a 的 值 为 5 int y=1, x, *p, a[ ]={2,4,6,8,10}; 6
p=&a[1]; for(x=0;x<3;x++) y + = * (p + x); printf("%d\n",y); 程 序 的 输 出 结 果 y 的 值 是 四 程 序 填 空 题 1 从 键 盘 上 输 入 10 个 数, 求 其 平 均 值 int i; float f,sum; for(i=1,sum=0.0;i<11;i++) { ; ; } printf( average=%f\n,sum/10); } 2 以 下 程 序 是 建 立 一 个 名 为 myfile 的 文 件, 并 把 从 键 盘 输 入 的 字 符 存 入 该 文 件, 当 键 盘 上 输 入 结 束 时 关 闭 该 文 件 #include { FILE *fp; char c; fp= ; do{ c=getchar(); fputs(c,fp); }while(c!=eof); } 3 以 下 程 序 的 功 能 是 : 从 键 盘 上 输 入 若 干 个 学 生 的 成 绩, 统 计 并 输 出 最 高 成 绩 和 最 低 成 绩, 当 输 入 负 数 时 结 束 输 入. 请 填 空. { float x,amax,amin; 7
scanf("%f",&x); amax=x; amin=x; while( ) { if(x>amax) amax=x; if( ) amin=x; scanf("%f",&x); } printf("\namax=%f\namin=%f\n",amax,amin);} 五 编 程 题 1. 三 个 整 数 a b c, 由 键 盘 输 入, 输 出 其 中 最 大 的 一 个 数 2. 输 出 1900~2000 年 中 所 有 的 闰 年 每 输 出 3 个 年 号 换 一 行 ( 判 断 闰 年 的 条 件 为 下 面 二 者 之 一 : 能 被 4 整 除, 但 不 能 被 100 整 除 或 者 能 被 400 整 除 ) 3. 请 编 一 个 函 数 int fun(int a), 它 的 功 能 是 : 判 断 a 是 否 是 素 数, 若 a 是 素 数, 返 回 1; 若 不 是 素 数, 返 回 0 A 的 值 由 主 函 数 从 键 盘 读 入 4. 有 N 个 学 生, 每 个 学 生 的 信 息 包 括 学 号 性 别 姓 名 四 门 课 的 成 绩, 从 键 盘 上 输 入 N 个 学 生 的 信 息, 要 求 输 出 总 平 均 成 绩 最 高 的 学 生 信 息, 包 括 学 号 性 别 姓 名 和 平 均 成 绩 参 考 答 案 : 一 填 空 题 (1) 整 型 实 型 字 符 型 (2) int, 2, -32768~ +32767 (3) 1111111111011101 (4) - 112 (5)14, m (6) a 是 字 符 串 常 量, 而 a 是 字 符 常 量 (7) 存 放 地 址 值 的 变 量 或 常 量, 或 者 答 地 址 (8) 取 运 算 对 象 的 地 址 取 指 针 变 量 所 指 的 内 容 (8) a=1,b=3,c=2 二 选 择 题 1 C 2 C 3 D 4 B 5 D 6 A 7 C 8 C 9 D 10 A 11 C 12 C 13 D 14 C 15 B 16 C 17 D 18 D 19 C 20 B 三 阅 读 程 序 题 8
(1) 3.141593,3.1416,3.142 (2) 6,8 (3) 4 (4) 22 (5) 19 四 程 序 填 空 题 1 scanf( %f,&f); sum+=f; 2 fopen( myfile,w) fclose(fp); 3 x>=0.0 x<=amin 五 编 程 题 1 {int a,b,c; printf( 请 输 入 三 个 整 数 : ); scanf( %d,%d,%d,&a,&b,&c); if(a<b) if(b<c) printf( max="%d\n,c);<br">else printf( max=%d\n,b); else if(a<c) printf( max="%d\n,c);<br">else printf( max=%d\n,a); } 2 #include stdio.h {int I,n; for(n=0,i=1900;i<=2000;i++) {if(i%4==0&&i 0!=0 I@0==0) {printf( %d,i); n++; } if(n%3==0) printf( \n ); } } } 3 #include stdio.h int fun(int a) {int I; if(a==2) return 1; I=2; while((a%i)!=0&&i<=sqrt((float)a)) I++; if(a%i==0) {printf( %d is not a prime!,a); 9
return 0; } printf( %d is a prime!,a); return 1; } {int x; printf( \n please enter a number: ); scanf( %d,&x); printf( %d\n,fun(x)); } 4 #include"stdio.h" #define N 3 struct student {long stu_num; char sex; char name[15]; int score[4]; float average; }; {int I,j,index; float sum,max; struct student stuarr[n]; for(i=0;i<n;i++) {printf("please input %d student information:\n",i+1); scanf("%ld,%c,%s",&stuarr[i].stu_num,&stuarr[i].sex,stuarr[i].name); for(j=0;j<4;j++) scanf("%d",&stuarr[i].score[j]); } for(i=0;i<n;i++) {sum=0.0; for(j=0;j<4;j++) sum+=stuarr[i].score[j]; stuarr[i].average=sum/4.0; } max=stuarr[0].average; index=0; 10
for(i=1;i<n;i++) if(stuarr[i].average>max) {max=stuarr[i].average; index=i; } printf(" 总 平 均 成 绩 最 高 的 学 生 信 息 是 学 号 =%ld, 性 别 =%c, 姓 名 =%s, 平 均 成 绩 =%4.1f\n",stuarr[index].stu_num,stuarr[index].sex,stuarr[index].name, stuarr[index].average);} 11