C语言上机题库百科园第5章南信大.docx
《C语言上机题库百科园第5章南信大.docx》由会员分享,可在线阅读,更多相关《C语言上机题库百科园第5章南信大.docx(36页珍藏版)》请在冰豆网上搜索。
C语言上机题库百科园第5章南信大
C语言上机题库百科园第5章!
南信大!
第五章
单选
有以下程序,程序运行后的输出结果是()
#include
#include
intmain()
{
chara[20]=”ABCD\0EFG\0”,b[]=”IJK”;
strcat(a,b);printf(“%s\n”,a);
return0;
}
A.ABCDE\0FG\0IJK
B.ABCDIJK
C.EFGIJK
D.IJK
有以下程序,程序运行后的输出结果是()
#include
intmain()
{chars[]="012xy\08s34f4w2";
inti,n=0;
for(i=0;s[i]!
=0;i++)
if(s[i]>='0'&&s[i]<='9')n++;
printf("%d\n",n);
return0;
}
A.7
B.0
C.8
D.3
下列选项中,能够满足"若字符串s1等于字符串s2,则执行ST"要求的是()
A.if(strcmp(s2,s1)==0)ST;
B.if(s1-s2==0)ST;
C.if(strcpy(s1,s2)==1)ST;
D.if(s1==s2)ST;
以下选项中正确的语句组是()
A.chars;s={"BOOK!
"};
B.chars[];s="BOOK!
";
C.chars[10];s="BOOK!
";
D.chars[]="BOOK!
";
以下数组定义中错误的是()
A.intx[2][3]={{1,2},{3,4},{5,6}};
B.intx[2][3]={1,2,3,4,5,6};
C.intx[][3]={0};
D.intx[][3]={{1,2,3},{4,5,6}};
若有定义语句:
intm[]={5,4,3,2,1},i=4;则下面对m数组元素的引用中错误的是()
A.m[m[0]]
B.m[2*2]
C.m[--i]
D.m[m[i]]
下列选项中,能正确定义数组的语句是()
A.intnum[];
B.intN=2008;
intnum[N];
C.intnum[0…2008];
D.#defineN2008
intnum[N];
有以下程序,程序运行时若输入:
howareyou?
Iamfine<回车>则输出结果是()
#include
intmain()
{chara[30],b[30];
scanf("%s",a);
gets(b);
printf("%s\n%s\n",a,b);
return0;
}
A.howareyou?
Iamfine
B.howareyou?
Iamfine
C.how
areyou?
Iamfine
D.howareyou?
下面是有关C语言字符数组的描述,其中错误的是()
A.不可以用赋值语句给字符数组名赋字符串
B.可以用输入语句把字符串整体输入给字符数组
C.字符数组中的内容不一定是字符串
D.字符数组只能存放字符串
intaa[MAX];
printf("输入一个整数");
scanf("%d",&limit);
sum=fun(limit,aa);
for(i=0;i{
if(i%10==0&&i!
=0)/*每行输出10个数*/
printf("\n");
printf("%5d",aa[i]);
}
/******************************/
wf=fopen("debug\\2.out","w");
sum=fun(15,aa);
for(i=0;ifprintf(wf,"%d\n",aa[i]);
fclose(wf);
/*****************************/
return0;
}
【参考代码】
inti,j,k=0;
for(i=2;i<=lim;i++)
{
for(j=2;j
if(i%j==0)break;
if(j>=i)
aa[k++]=i;
}
returnk;
/*请编写函数fun,函数的功能是:
求出二维数组周边元素之和,作为函数值返回。
二维数组中的值在主函数中赋予。
例如,若二维数组中的值为
13579
29994
69998
13570
则函数值为61。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
*/
#include
#include
#defineM4
#defineN5
intfun(inta[M][N])
{
/***************Begin************/
/***************End************/
}
voidmain()
{
FILE*wf;
intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,10}};
inti,j,y;
printf("Theoriginaldatais:
\n");
for(i=0;i{for(j=0;jprintf("%6d",aa[i][j]);
printf("\n");
}
y=fun(aa);
printf("\nThesun:
%d\n",y);
printf("\n");
/******************************/
wf=fopen("debug\\out10.dat","w");
fprintf(wf,"%d",y);
fclose(wf);
/*****************************/
}
【参考代码】
inti,j,sum=0;
for(i=0;ifor(j=0;jif(i==0||i==M-1||j==0||j==N-1)
sum=sum+a[i][j];
returnsum;
/*编写一个函数,从传入的num个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
*/
#include
#include
#include
voidfun(chara[][81],intnum,charmax[])
{
/***************Begin************/
/***************End************/
}
voidmain()
{
FILE*wf;
charss[10][81],ps[81];
chars[3][81]={"abcd","deg","diegns"},p[81];
inti=0,n;
printf("输入若干个字符串:
");
gets(ss[i]);
puts(ss[i]);
while(!
strcmp(ss[i],"****")==0)/*用4个星号作为结束输入的标志*/
{
i++;
gets(ss[i]);
puts(ss[i]);
}
n=i;
fun(ss,n,ps);
printf("\nmax=%s\n",ps);
/******************************/
wf=fopen("debug\\out15.dat","w");
fun(s,3,p);
fprintf(wf,"%s",p);
fclose(wf);
/*****************************/
}
【参考代码】
inti=0;
strcpy(max,a[0]);
/*找出最长的一个字符串*/
for(i=0;iif(strlen(max)strcpy(max,a[i]);
/*请编写一个函数fun,它的功能是:
求出1到m(含m)之内能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
例如,若传给m的值为50,则程序输出:
711142122283335424449
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
*/
#include
#include
#defineM100
intfun(intm,inta[])
{
/***************Begin************/
/***************End************/
}
voidmain()
{
FILE*wf;
intaa[M],n,k;
n=fun(50,aa);
for(k=0;kif((k+1)%20==0)/*每行输出20个数*/
{printf("%4d",aa[k]);
printf("\n");
}
else
printf("%4d",aa[k]);
printf("\n");
/******************************/
wf=fopen("debug\\out4.dat","w");
for(k=0;kfprintf(wf,"%d\n",aa[k]);
fclose(wf);
/*****************************/
}
【参考代码】
inti,j=0;
for(i=1;i<=m;i++)
if(i%7==0||i%11==0)
a[j++]=i;
returnj;/*返回这些数的个数*/
/*请编写一个函数fun,它的功能是:
将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转为整数的函数)。
例如,若输入字符串"-1234",则函数把它转换为整数值-1234。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
*/
#include
#include
longfun(charp[])
{
/***************Begin************/
/***************End************/
}
voidmain()
{
FILE*wf;
chars[6];
longn;
printf("Enterastring:
\n");
gets(s);
n=fun(s);
printf("%ld\n",n);
/******************************/
wf=fopen("debug\\out13.dat","w");
fprintf(wf,"%ld",fun("-1234"));
fclose(wf);
/*****************************/
}
【参考代码】
longn=0,i=0;
intflag=1;
if(p[i]=='-')/*负数时置flag为-1*/
{i++;flag=-1;}
elseif(p[i]=='+')/*正数时置flag为1*/
i++;
while(p[i]!
='\0')
{n=n*10+p[i]-'0';/*将字符串转成相应的整数*/
i++;
}
returnn*flag;
/*请编写一个函数voidfun(charss[]),其功能是:
将字符串ss中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
例如,若输入abc4EFg,则应输出aBc4EFg。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
*/
#include
#include
voidfun(charss[])
{
/***************Begin************/
/***************End************/
}
voidmain()
{
chartt[100];
FILE*out,*in;
printf("Pleaseenterancharacterstringwithin50characters:
\n");
gets(tt);
printf("\n\nAfterchanging,thestring\n%s",tt);
fun(tt);
printf("\nbecomes\n%s",tt);
/******************************/
in=fopen("in.dat","r");
out=fopen("debug\\out14.dat","w");
fgets(tt,16,in);
strcat(tt,"Afterchangingthestring");
fun(tt);
fprintf(out,"%s",tt);
fclose(in);
fclose(out);
/******************************/
}
【参考代码】
inti,n=0;
while(ss[i])
{
n++;
i++;
}
for(i=0;iif((ss[i]>='a'&&ss[i]<='z')&&i%2!
=0)
/*将下标为奇数位置的字母转换成大写*/
ss[i]=ss[i]-32;
ss[i]='\0';
/*编写一个函数fun,它的功能是:
实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。
例如,分别输入下面两个字符串:
FirstString
SecondString
则程序输出:
FirstStringSecondString
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
*/
#include
#include
voidfun(charp1[],charp2[])
{
/***************Begin************/
/***************End************/
}
voidmain()
{
FILE*wf,*in;
chars1[80],s2[40];
charp1[80]="FirstString",p2[40]="SecondString";
printf("Enters1ands2:
\n");
scanf("%s%s",s1,s2);
printf("s1=%s\n",s1);
printf("s2=%s\n",s2);
printf("Invokefun(s1,s2):
\n");
fun(s1,s2);
printf("Afterinvoking:
\n");
printf("%s\n",s1);
/******************************/
in=fopen("in.dat","r");
wf=fopen("debug\\out16.dat","w");
fscanf(in,"%s%s",p1,p2);
fun(p1,p2);
fprintf(wf,"%s",p1);
fclose(in);
fclose(wf);
/*****************************/
}
【参考代码】
inti,j;
for(i=0;p1[i]!
='\0';i++);
for(j=0;p2[j]!
='\0';j++)
p1[i++]=p2[j];
p1[i]='\0';
/*请编写函数fun,其功能是:
将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。
例如,输入17,则应输出46891012141516。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
*/
#include
#include
intfun(intm,intxx[])
{
/***************Begin************/
/***************End************/
}
voidmain()
{
FILE*wf;
intm,n,zz[100];
printf("\nPleaseenteranintegernumberbetween10and100:
");
scanf("%d",&n);
m=fun(n,zz);
printf("\n\nThereare%dnon-primenumberslessthan%d:
",m,n);
for(n=0;nprintf("\n%4d",zz[n]);
/******************************/
wf=fopen("debug\\out7.dat","w");
m=fun(30,zz);
for(n=0;nfprintf(wf,"%d\n",zz[n]);
fclose(wf);
/*****************************/
}
【参考代码】
inti,j,n=0;
for(i=4;i/*找出大于1小于整数m的非素数*/
{for(j=2;j
if(i%j==0)break;
if(j
}
returnn;/*返回非素数的个数*/
/*请编写一个函数voidfun(chartt[],intpp[]),统计在tt字符串中"a"到"z"26个字母各自出现的次数,
并依次放在pp所指数组中。
例如,当输入字符串abcdefghabcdeabc后,
程序的输出结果应该是:
333221110000000000000000000
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
*/
#include
#include
voidfun(chartt[],intpp[])
{
/***************Begin************/
/***************End************/
}
voidmain()
{
FILE*wf;
charaa[1000];
intbb[26],k;
system("CLS");
printf("\nPleaseenteracharstring:
");
scanf("%s",aa);
fun(aa,bb);
for(k=0;k<26;k++)
printf("%d\n",bb[k]);
/******************************/
wf=fopen("debug\\out2.dat","w");
fun("abcdefgabcdeabc",bb);
for(k=0;k<26;k++)
fprintf(wf,"%d\n",bb[k]);
fclose(wf);
/*****************************/
}
【参考代码】
inti;
for(i=0;i<26;i++)
pp[i]=0;
i=0;
for(;tt[i]!
='\0';i++)
if(tt[i]>='a'&&tt[i]<='z')
pp[tt[i]-'a']++;
程序改错
/*下列给定程序中,函数fun的功能是:
删除字符串s中所有空白字符(包括Tab符、回车符及换行符)。
输入字符串时用"#"结束输入。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
*/
#include
#include
#include
fun(char*p)
{inti,t;charc[80];
for(i=0,t=0;p[i];i++)
if(!
isspace(*(p+i)))c[t++]=p[i];
/**********ERROR**********/
c[t]="\0";
strcpy(p,c);
}
voidmain()
{charc,s[80];
inti=0;
printf("Inputastring:
");
c=getchar();
while(c!
='#')
{s[i]=c;i++;c=getchar();}
s[i]='\0';
fun(s);
puts(s);
}
【参考答案】
c[t]=0;
c[t]='\0';
/*下列给定程序中,函数fun的功能是:
求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行