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