江苏省计算机二级C语言试题及答案.docx
《江苏省计算机二级C语言试题及答案.docx》由会员分享,可在线阅读,更多相关《江苏省计算机二级C语言试题及答案.docx(12页珍藏版)》请在冰豆网上搜索。
江苏省计算机二级C语言试题及答案
江苏省计算机二级C语言试题及答案
江苏省计算机2级考试
-学年第学期c程序设计试卷()
题号
一
二
三
四
五
六
七
八
九
总分
得分
一、选择题(本题共20道小题,共40分。
)
1.表示关系x≤y≤z的c语言表达式为
A)(X<=Y)&&(Y<=Z)
B)(X<=Y)AND(Y<=Z)
C)(X<=Y<=Z)
D)(X<=Y)&(Y<=Z)
2.以下程序的输出结果是
main()
{
inta=12,b=12;
printf("%d%d\n",--a,++b);
}
A)1010B)1212C)1110D)1113
3.以下的for循环
for(x=0,y=0;(y!
=123)&&(x<4);x++);
A)是无限循环B)循环次数不定C)执行4次D)执行3次
4.有以下程序
main()
{
chara[]="programming",b[]="language";
char*p1,*p2;
inti;
p1=a;p2=b;
for(i=0;i<7;i++)
if(*(p1+i)==*(p2+i))
printf("%c",*(p1+i));
}
输出结果是
A)gmB)rgC)orD)ga
5.以下说法中正确的是
A)#define和printf都是C语句B)#define是C语句,而printf不是
C)printf是C语句,但#define不是D)#define和printf都不是C语句
6.下面的程序
main()
{intx=3;
do{
printf("%d\n",X-=2);
}while(!
(--x));}
A)输出的是1B)输出的是1和-2C)输出的是3和0D)是死循环
7.下面能正确进行字符串赋值操作的语句是
A)chars[5]={"ABCDE"};B)chars[5]={'A'、'B'、'C'、'D'、'E'};
C)char*s;s="ABCDEF";D)char*s;scanf("%s",s);
8.以下程序的输出结果是
main()
{inti,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];
for(i=0;i<4;i+=2)printf("%d",p[i]);
}
A)52B)51C)53D)97
9.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为
A)a<>0B)!
a
C)a=0D)a
10.下面各语句行中,能正确进行赋字符串操作的语句行是
A)charst[4][5]={"ABCDE"};B)chars[5]={'A','B','C','D','E'};
C)char*s;s="ABCDE";D)char*s;scanf("%s",s);
11.若fp是指向某文件的指针,且已读到该文件的末尾,则C语言函数feof(fp)的返回值是
A)EOFB)-1C)非零值D)NULL
12.设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是
A)k=*p1+*p2;
B)p2=k;
C)p1=p2;
D)k=*p1*(*p2);
13.下面程序的输出是
main()
{inta=-1,b=4,k;
k=(a++<=0)&&(!
(b--<=0));
printf("%d%d%d\n",k,a,b);}
A)003B)012C)103D)112
14.若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是
A)pb=&xB)pb=x;C)*pb=&x;D)*pb=*x
15.设有
staticcharstr[]="Beijing";
则执行
printf("%d\n",strlen(strcpy(str,"China")));
后的输出结果为
A)5B)7C)12D)14
16.以下程序的输出结果是
A)10192B)9876C)10990D)101091
main()
{intx=10,y=10,I;
for(i=0;x>8;y=++i)
printf("%d,%d",x--,y);
}
17.设有如下函数定义:
intf(char*s)
{char*p=s;
while(*p!
='\0')p++;
return(p-s);}
如果在主程序中用下面的语句调用上述函数,则输出结果为
printf("%d\n",f("goodbey!
"));
A)3B)6C)8D)0
18.若执行下面的程序时从键盘上输入3和4,则输出是
main()
{inta,b,s;
scanf("%d%d",&a,&b);
s=a;
if(a
s=s*s;
printf("%d\n",s);}
A)14B)16C)18D)20
19.下面四个选项中,均是C语言关键字的是:
A.autoenumincludeBswithtypedefcontinue
CsignedunionscanfDifstructtype
20.有以下程序
viodfun(inta,intb,intc)
{a=456;b=567;c=678;}
main()
{
intx=10,y=20,z=30;
fun(x,y,z);
printf("%d,%d.%d",x,y,z);
}
输出结果是
A)30,20,10
B)10,20,30
C)456,567,678
D)678,567,456
二、填空题(每空1分,共10分。
)
1.为表示关系:
x≤y≤z,应使用的C语言表达式是_____________。
2.字符串是以__________为结束标志的一维字符数组。
有定义:
chara[]="";则a数组的长度是____________。
3.设inta;floatf;doublei;则表达式10+'a'+i*f值的数据类型是___________。
4.设有说明语句"inta[3][4]={{1,2},{3,4,5},{6,7,8}};"则a[0][2]的初始化值为_____________,a[2][2]的初始化值为______________。
5.假定p所指对象的值为25,p+1所指对象的值为46,则执行"(*p)++;"语句后,p所指对象的值为___________
6.程序由主要由__________、_________组成。
7.有函数调用fun1(x+y,(y,z),10,fun((x,y―1)));函数fun1有_______
个参数
三、判断题(本题共10道小题,共10分。
)
1.在C中,外部变量的隐含类别是自动存储类别()
2.实参和与其对应的形参共占用一个存储单元()
3.在不得已的情况下(例如提高程序运行效率),才使用goto语句()
4.条件表达式可以取代if语句,或者用if语句取代条件表达式()
5.函数中的静态变量在函数每次调用时,都会重新设置初值()
6.全局变量都是静态存储()
7.如果在所有函数定义之前,在函数外部已做了声明,则各个主调函数不必再做函数原型声明()
8.系统不允许用户重新定义标准库函数()
9.若调用一个函数,且此函数中没有return语句,则该函数没有返回值()
10.函数调用:
strcat(strcpy(str1,str2),str3)的功能是将串str2连接到串str1之后再将串str1复制到串str3中()
四、程序填空(本题共5道小题,每题4分,共20分。
)
1.以下fun函数把ch中的大写字母转换成字母序列中的下一个大写字母,字母Z转换成字母A,其它字符不变,返回转换后的字母或其它字符。
请填空。
charfun(charch)
{
if(ch=='Z')ch=__________;
elseif(ch>='A'&&ch<='Y')ch=__________;
returnch;
}
2.以下sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。
请填空。
voidsstrcpy(char*s,char*t)
{while(*s++=_____________);}
main()
{charstr1[100],str2[]="abcdefgh";
sstrcpy(str1,str2);
printf("%s\n",str1);
}
3.以下程序段用于构成一个简单的单向链表。
structSTRU
{intx,y;
floatrate;
____________p;
}a,b;
a.x=0;a.y=0;a.rate=0;a.p=&b;
b.x=0;b.y=0;b.rate=0;b.p=NULL;
4.电话990拨号上网费率白天是每小时4.20元,夜间是每小时2.70元。
使用的分钟(整数minute)和费率(含小数fei)变量由键盘输入,请补上语句。
main()
{intminute;floatfei;
scanf(______________);
printf("上网费=%8.2f元\n",_____________);
}
5.以下程序中,for循环体执行的次数是______________。
#defineN2
#defineMN+1
#defineKM+1*M/2
main()
{inti;
for(i=1;i{...}
...
}
五、编程题(本题共2道小题,共20分。
)
1.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
例如:
153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
2.请编写函数fun,函数的功能是:
在字符串中所有数字字符前加一个$字符。
例如,输入:
A1B23CD45,则输出为:
A$1B$2$3CD$4$5。
江苏省计算机等级考试
-学年第学期c程序设计试卷(参考答案)
题号
一
二
三
四
五
六
七
八
九
总分
得分
一、选择题(本题共20道小题,共40分。
)
1.A
2.D
3.C
4.D
5.D
6.B
7.C
8.C
9.D
10.C
11.D
12.B
13.C
14.A
15.A
16.D
17.C
18.B
19.B
20.A
二、填空题(每空1分,共10分。
)
1.(x<=y)&&(y<=z)
2.'\0',0
3.double
4.0,8
5.26
6.数据结构,算法
7.4
三、判断题(本题共10道小题,共10分。
)
1.对
2.错
3.错
4.错
5.错
6.错
7.对
8.对
9.错
10.
四、程序填空(本题共5道小题,每题4分,共20分。
)
1.'A',ch+1
2.*t++
3.StructSTRU*
4."%d%f",&minute,&fei
fei*minute/60
5.4
五、编程题(本题共2道小题,共20分。
)
1.main()
{
inti,j,k,n;
printf("'waterflower'numberis:
");
for(n=100;n<1000;n++)
{
i=n/100;/*分解出百位*/
j=n/10%10;/*分解出十位*/
k=n%10;/*分解出个位*/
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
{
printf("%-5d",n);
}
}
printf("\n");
}
2.#include
voidfun(char*s)
{chara[100];
inti=0;
while(*s)
if(*s>='0'&&*s<='9'){a[i++]='$';a[i++]=*s++;}
elsea[i++]=*s++;
a='\0';
strcpy(s,a);
}
main()
{chars[80];
printf("enterastring:
");
scanf("%s",s);
fun(s);
printf("theresult:
%s\n",s);
}