福建省二级C语言-4 (1)

  • 格式:doc
  • 大小:22.76 KB
  • 文档页数:8

福建省二级C语言-4(总分:100.00,做题时间:90分钟)一、选择题(总题数:20,分数:40.00)1.C语言程序的基本单位是______。

(分数:2.00)A.函数√B.过程C.子例程D.子程序解析:2.C语言中基本数据类型有______。

(分数:2.00)A.整型、实型、逻辑型B.整型、字符型、逻辑型C.整型、实型、字符型√D.整型、实型、字符型、逻辑型解析:3.依据C语言的语法规则,下列______是用户定义的合法标识符。

(分数:2.00)A.elseB.Else √er$3D.5_object解析:4.若已定义int x=136, y; ,执行语句y=x/10%10; 后,y的值是______。

(分数:2.00)A.1B.3 √C.6D.0解析:5.语句printf("%c, %d/n", 66, 66); 的输出结果是______。

(分数:2.00)A.B,66 √B.B,BC.66,BD.66,66解析:6.以下程序运行结果是______。

#include<stdio.h>int main(){int a=-1, b=3, k;k=(a<=0)&&(!b<=0);printf("%d, %d, %d/n", a, b, k);return 0;}(分数:2.00)A.-1,1,1B.-1,1,0C.-1,3,1 √D.-1,3,0解析:7.以下四个运算符,按优先级由高到低的排列顺序是______。

(分数:2.00)A.!、%、==、= √B.%、!、==、=C.!、%、=、==D.!、=、%、==解析:8.执行以下程序,若从键盘输入5,则输出结果是______。

#include<stdio.h>int main(){int k;scanf("%d", &k);switch(k){default:printf("%d", k);case 1:printf("%d", k);break;case 2:printf("%d", 2*k);case 3:printf("%d", 3*k);break;}return 0;}(分数:2.00)A.55 √B.5C.10D.15解析:9.设E为一表达式,以下与do…while(E);不等价的语句是______。

(分数:2.00)A.do…while(!E==0);B.do…while(E>0||E<0);C.do…while(E==0);√D.do…while(E!=0);解析:10.若已知k为一维整型数组,则表达式sizeof(k)/sizeof(int)的值等于______。

(分数:2.00)A.数组k所占用的字节数B.数组k中第一个元素的值C.数组k的元素个数√D.数组k中非零元素的个数解析:11.若已定义int a[][3]={1, 2, 5, 6, 8, 9, 11}; ,则a数组第一维的大小是______。

(分数:2.00)A.5B.4C.2D.3 √解析:12.若已定义char str1[]="good-bye", str2[10]; ,则对函数strcpy不正确使用的是______。

(分数:2.00)A.strcpy(str1, "hello11");B.strcpy(str2, "hello12");C.strcpy(str1[], "hello13"); √D.strcpy(str2, str1);解析:13.在C语言中,下列叙述正确的是______。

(分数:2.00)A.函数的定义允许嵌套,但函数的调用不允许嵌套B.函数的定义不允许嵌套,但函数的调用允许嵌套√C.函数的定义和调用都不允许嵌套D.函数的定义和调用都允许嵌套解析:14.以下含有宏定义的程序中,数组a的大小是______。

#include<stdio.h>#define N 10int main(){int a[N], i;for(i=0; i<N; i++)a[i]=i+2;for(i=0; i<N; i++)printf("%4d", a[i]);return 0;}(分数:2.00)A.9B.10 √C.11D.无法确定解析:15.若有以下定义和语句:int a=4, b=3, *p, *q, *w; p=&a; q=&b; w=q; q=NULL; ,则以下错误的语句是______。

(分数:2.00)A.*q=0; √B.w=p;C.*p=a;D.*p=*w;解析:16.若有以下定义和语句:int a[3][5], (*p)[5]; p=a;则能正确引用元素a[1][3]的是______。

(分数:2.00)A.*(*(p+3)+1)B.**(p+1)+3C.*(p+1)+3D.*(*(p+1)+3) √解析:17.若有以下定义语句:struct person{Int num;char name[10];float weight;}wei, lin;下列叙述正确的是______。

(分数:2.00)A.person是结构类型名√B.wei是结构类型名C.struct是结构类型名D.wei、lin都是结构类型person的成员名解析:18.若有以下说明,能正确引用"Li Ming"的方式是______。

struct stu{char name[20];int num;}stu1[2]={{"Ma Hong", 18}, {"Li Ming", 17}};struct stu*p=stu1;(分数:2.00)A.stu1[1].name √B.p->nameD.(*p++).name解析:19.以下关于typedef的叙述不正确的是______。

(分数:2.00)A.使用typedef便于程序的通用B.用typedef可以增加新类型√C.用typedef只是将已存在的类型用一个新的名称来表示D.用typedef可以定义各种类型名,但不能用来定义变量解析:20.若已定义:FILE*fp; ,要在文本文件data.txt后追加数据,应使用语句______。

(分数:2.00)A.fp=fopen("data.txt", "wb+")B.fp=fopen("data.txt", "wt")C.fp=fopen("data.txt", "rb+")D.fp=fopen("data.txt", "at+") √解析:二、程序填空题(总题数:1,分数:20.00)(在每对/**/之间填写内容,完成题目的要求)(分数:20.00)(1).以下程序用以查找1~100之间含有3或7数字的所有整数,并按每行最多打印10个数的形式输出。

#include<stdio.h>int find(/**/ 1/**/){int a, flag=0;while(y!=0){a=/**/ 2/**/;if((a==3)||(a==7)){flag=1;break;}y=y/10;}return/**/ 3/**/;}int main(){int x, n=0;for(x=1; x<100; x++)if(find(/**/ 4/**/){printf("%2d", x);n++;if(n%10==0)printf("/n");}return 0;}(分数:10.00)解析:int y y%10 flag x(2).以下程序中的fun函数用以输出一个数除1和本身外的所有因子,如无因子,则提示为素数。

#include<stdio.h>/**/ 1/**/fun(int x){int i, mark=0;for(i=2; i<=x/2; i++)if(/**/ 2/**/==0){printf("%2d", i);mark=1;}if(mark==0)printf("%d is a prime number!", x);printf("/n");}int main(){int a;printf("Input a number:");scanf("%d", &a);fun(/**/ 3/**/);return 0;}(分数:10.00)解析:void x%i a三、程序改错题(总题数:1,分数:20.00)(修改每对/**/之间存在的错误,完成题目的要求)(分数:20.00)(1).以下程序以每行最多12个的方式打印10~1000之间满足正序读和反序读都相同的所有数,如55、232等。

#include<stdio.h>int main(){/**/ 1 int i, n/**/;for(i=10; i<=99; i++)if(i/10==i%10){printf("%5d", i);n++;if(/**/ 2 n%12=0/**/)printf("/n");}for(i=100; i<=999; i++)if(/**/ 3 i/100==i/10/**/){printf("%5d", i);n++;if(n%12==0)printf("/n");}return 0;}(分数:10.00)解析:int i, n=0 n%12==0 i/100==i%10(2).以下程序中dele(char*s)函数的功能是删除字符串s中所有非字母字符,并将字符串压缩。

例如原字符串为:abcl2ef5ghij8#%%yz,处理后的字符串为:abcefghijyz。

#include<stdio.h>void dele(/**/ 1 char s /**/){int i=0, t;while(*(s+i)!="/0"){if(/**/ 2*(s+i)<"A"||(*(s+i)>"Z"&&*(s+i)>"a")||*(s+i)<"z"/**/){t=i;while(*(s+t)!="/0"){*(s+t)=*(s+t+1);/**/ 3 i++/**/;}}else i++;}}int main(){char str1[100];printf("Enter a string:");gets(str1);dele(str1);printf("Now string is:%s/n", str1);return 0;}(分数:10.00)解析:char*s*(s+i)<"A"||(*(s+i)>"Z"&&*(s+i)<"a")||*(s+i)>"z"t++四、编程题(总题数:1,分数:20.00)(补充每对/**/之间的程序段,完成题目的要求)(分数:20.00)(1).程序中的fun()函数,用以完成如下数学表达式。