上海计算机二级c试题含解析Word文档下载推荐.doc
《上海计算机二级c试题含解析Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《上海计算机二级c试题含解析Word文档下载推荐.doc(13页珍藏版)》请在冰点文库上搜索。
![上海计算机二级c试题含解析Word文档下载推荐.doc](https://file1.bingdoc.com/fileroot1/2023-4/30/060438ef-3362-4bc0-acd8-248269cfcee7/060438ef-3362-4bc0-acd8-248269cfcee71.gif)
{
int*a[10],b,c;
a[0]=&
b;
*a[0]=5;
c=(*a[0])++;
printf(“%d%d\n”,b,c);
}
(5)设有如下程序:
intclock;
floatf;
charcpu[20];
scanf(“%4d%f%s”,&
clock,&
f,cpu);
printf(“%d%.0f%s\n”,clock,f,cpu);
}
假设输入数据流为200015.0P4isGOOD!
,请写出执行该程序後的输出结果。
(6)下列程序的输出结果是什么?
main()
intc1=0,c2=0,c3=0,c4=0;
char*p=”12395632123378”;
while(*p){
switch(*p){
case‘1’:
c1++;
break;
case‘2’:
c2++;
case‘3’:
c3++;
default:
c4++;
}
p++;
}
printf(“c1=%dc2=%dc3=%dc4=%d\n”,c1,c2,c3,c4);
}
(7)执行下列程序後,s的值为多少?
#definesq(X)X*X
ints=15,a=2,b=1;
printf(“s=%d\n”,sq(a+b)/sq(a+b));
试题二(12分,每小题6分)
阅读下列程序,写输出结果。
(1)#defineN6
voidmain()
{
inti,j,a[N];
for(i=1;
N;
i++){
a[i]=1;
for(j=i-1;
j>
1;
j--)
a[j]+=a[j-1];
for(j=1;
j<
=i;
j++)
printf(“%4d”,a[j]);
printf(“\n”);
(2)#include<
voidfun(char*s)
{while(*s){
*s=(*s-‘0’+3)%10+’0’;
++s;
{
chara[]=”314762985”;
inti;
fun(a+3);
for(i=0;
3;
++i)
printf(“%c\n”,a[3*i+1]);
试题三(12分,每小题6分)
改错。
下列程序各有三个错误,请纠正。
(1)以下程序的功能是输入一个字符串,并将其中的字符’a’用字符串’shu’替代後输出。
如输入为“123abcaHello”,则输出为“123shubcshuHello”。
#01#include<
#02voidmain()
#03{
#04inti;
charline[81];
#05scanf(“%s”,&
line);
#06for(i=0;
line[i]!
=’\n’;
i++)
#07if(line[i]==’a’)
#08printf(“shu”);
#09else
#10printf(“%s”,line[i]);
#11}
T
H
I
J
A
W
V
S
(2)以下程序实现对输入的长度小于100的英文字母串(空格表示结束)进行头尾相接,围成一个环,输出按顺时针方向出现的相邻两个递增字母及其个数(如下图中的HI,IJ,ST,总共出现3次)。
#01#include<
string.h>
#02voidmain()
#03{
#04chars[100];
#05intk,len,no;
#06scanf(“%s”,s);
#07len=strlen(s);
#08s[len]=s[0];
#09s[len++]=’\0’;
#10for(k=0;
k<
len;
k++)
#11if(s[k-1]+1==s[k]){
#12printf(“%c%c\n”,s[k-1],s[k]);
#13no++;
#14}
#15printf(“%d\n”,no);
#16}
试题四(18分,每小题6分)
按要求编程序段。
(1)求出任意一个数m(设4<
=m<
=1000)的所有素因子。
例如,37的素因子是37;
420的素因子是2,2,3,5,7。
(2)设有一维数组说明charT[5],存放五个字母’A’,’B’,’C’,’D’,’E’,编程按以下格式输出结果。
ABCDE
BCDEA
CDEAB
DEABC
EABCD
(3)输入正偶数,计算以下级数值和并输出结果(显示结果保留小数点後5位)。
试题五(15分,每空3分)
填空。
【问题描述】以下程序不断地从键盘输入字符,直到输入EOF(control+z)为止。
对于输入的小写字符,先转换为相应的大写字符,其它字符不变,然后逐个输出到文件text.txt中,行结束符回车(‘\n’)也作为一个字符对待,最后统计文件中的字符个数和行数。
#include<
main()
{
FILE*fp;
charc,str[256];
inti=0,no=0,line=0;
if((fp=fopen(“text.txt”,
(1)))==NULL)
printf(“can`topenthisfile.\n”);
exit(0);
printf(“pleaseinputastring.\n”);
while((c=getchar())!
=EOF)
if(c>
=’a’&
c<
=’z’)
(2);
fputc((3),fp);
fclose(fp);
if((fp=fopen(“text.txt”,“r”))==NULL)
printf(“can`topenthisfile.\n”)
while(!
feof(fp))
c=(4);
no++;
if((5))line++;
printf(“line=%dcharacter_no=%d\n”,line,no);
试题六(15分,每空3分)
【问题描述】已知X和Y是两个整型数组,而且X中的数据按从小到大的顺序排列,Y中的数据按从达到小的顺序排列。
以下程序将X和Y中的数归并,并按从小到大的顺序保存到整型数组Z中,然后输出数组Z中的各个元素。
例如,X数组为{1,12,23,37},Y数组为{123,78,36,3},归并後生成的新数组Z为{1,3,12,23,36,37,78,123}。
voidsorted(intup[],intdown[],intmerged[],intn)
inti,j,k,m;
i=k=0;
j=n-1;
while(
(1))
if(up[i]<
=down[j])
(2);
i++;
k++;
else
{
merged[k]==(3);
j--;
k++;
}
if(i==n&
j>
=0)
for(;
=0;
merged[k++]=(4);
if(j==0&
i<
n)
n;
merged[k++]=(5);
intpu[]={1,12,23,37},down[]={123,78,36,3},merged[8],k;
sorted(up,down,merged,4);
for(k=0;
8;
printf(“%5d”,merged[k]);
printf(“\n”);
}