C语言试题 8.docx
《C语言试题 8.docx》由会员分享,可在线阅读,更多相关《C语言试题 8.docx(35页珍藏版)》请在冰豆网上搜索。
C语言试题8
本改错题共有1道,改错题源文件在考生目录中,请在******下一行将错误改正。
不得增行与减行,改正后使程序运行正确存盘即可。
改错题的源文件分为:
modi1.c,
第1题分值为:
10分,
下列给定程序中,函数fun()的功能是计算并输出high以内的素数之和。
high由主函数传给fun()函数。
若high的值为100,则函数的值为1060。
请改正程序中的错误,使它能得到正确结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include
#include
#include
intfun(inthigh)
{
intsum=0,n=0,j,yes;
while(high>=2)
{
yes=1;
for(j=2;j<=high/2;j++)
/**********************found***********************/
ifhigh%j==0
{
yes=0;
break;
}
/**********************found***********************/
if(yes==0)
{
sum+=high;
n++;
}
high--;
}
returnsum;
}
main()
{
printf("%d\n",fun(100));
}
请编写一个函数intfun(intn),求s=1+2+...+n,n通过键盘输入,大小n不超过1000,如输入100,输出结果应为5050,函数的返回值为所求和。
注意:
部分源程序已给出。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
此题的源文件在考生目录下,文件名为:
prog1.c
#include
#include
intfun(intn)
{
}
main()
{
FILE*wf;
intn,i,k=0;
ints,bb[10];
printf("请输入n:
\n");
scanf("%d",&n);
s=fun(n);
printf("和为:
%d",s);
printf("\n");
/******************************/
wf=fopen("out.dat","w");
for(i=101;i<=110;i++)
bb[k++]=fun(i);
for(k=0;k<10;k++)
fprintf(wf,"%d",bb[k]);
fclose(wf);
/*****************************/
}
一、选择题答案
1.若变量已正确说明为float类型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是:
A)10<回车>
22<回车>
33<回车>
B)10.0,22.0,33.0<回车>
C)10.0<回车>
22.033.0<回车>
D)1022<回车>
33<回车>
你所选择的答案是:
*,正确答案是:
B×
2.下列程序段的输出结果是
voidfun(int*x,int*y)
{printf("%d%d",*x,*y);*x=3;*y=4;}
main()
{intx=1,y=2;
fun(&y,&x);
printf("%d%d",x,y);
}
A)2143
B)1212
C)1234
D)2112
你所选择的答案是:
*,正确答案是:
A×
3.当调用函数时,实参是一个数组名,则向函数传送的是
A)数组的长度
B)数组的首地址
C)数组每一个元素的地址
D)数组每个元素中的值
你所选择的答案是:
*,正确答案是:
B×
4.以下程序的输出结果是
main()
{intx=0.5;charz='a';
printf("%d\n",(x<1)&&(z<'z'));}
A)0
B)1
C)2
D)3
你所选择的答案是:
*,正确答案是:
B×
5.假定int类型变量占用两个字节,其有定义:
intx[10]={0,2,4};,则数组x在内存中所占字节数是
A)3
B)6
C)10
D)20
你所选择的答案是:
*,正确答案是:
D×
6.以下选项中,不能正确赋值的是
A)chars1[10];s1="Ctest";
B)chars2[]={'C','t','e','s','t'};
C)chars3[20]="Ctest";
D)char*s4="Ctest\n"
你所选择的答案是:
*,正确答案是:
A×
7.若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是
A)fopen("A:
\user\abc.txt","r")
B)fopen("A:
\\user\\abc.txt","r+")
C)fopen("A:
\user\abc.txt","rb")
C)fopen("A:
\\user\\abc.txt","w")
你所选择的答案是:
*,正确答案是:
B×
8.若有定义:
intaa[8];。
则以下表达式中不能代表数组元aa[1]的地址的是
A)&aa[0]+1
B)&aa[1]
C)&aa[0]++
D)aa+1
你所选择的答案是:
*,正确答案是:
C×
9.以下程序的输出的结果是
intx=3;
main()
{
voidncre();
inti;
for(i=1;i}
voidncre()
{
staticintx=1;
x*=x+1;
printf("%d",x);
}
A)33
B)22
C)26
D)25
你所选择的答案是:
*,正确答案是:
C×
10.有一函数,
1(x>0)
y=0(x=0)
-1(x<0)
以下程序段中不能根据x值正确计算出y值的是
A)if(x>0)y=1;
elseif(x==0)y=0;
elsey=-1;
B)y=0;
if(x>0)y=1;
elseif(x<0)y=-1;
C)y=0;
if(x>=0);
if(x>0)y=1;
elsey=-1;
D)if(x>=0)
if(x>0)y=1;
elsey=0;
elsey=-1;
你所选择的答案是:
*,正确答案是:
C×
11.以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序
voidsort(inta[],intn)
{inti,j,t;
for(i=0;ifor(j=i+1,jif(a[i]}
main()
{intaa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&aa[3],5);
for(i=o;i<10;i++)print("%d,",aa[i]);
printf('\n");
}
程序运行后的输出结果是
A)1,2,3,4,5,6,7,8,9,10B)10,9,8,7,6,5,4,3,2,1,
C)1,2,3,8,7.6.5.4.9,10D)1,2,10,9,8,7,6,5,4,3
你所选择的答案是:
*,正确答案是:
C×
12.有以下程序
#include
structNODE
{intnum;structNODE*next;};
main()
{structNODE*p,*Q,*R;
p=(structNODE*)malloc(sizeof(structNODE));
q=(structNODE*)malloc(sizeof(structNODE));
r=(structNODE*)malloc(sizeof(structNODE));
p->num=10;q->num=20;r->num=30;
p->next=q;q->next=r;
printf("%d\n",p->num+q->next->num);
}
程序运行后的输出结果是
A)10
B)20
C)30
D)40
你所选择的答案是:
*,正确答案是:
D×
13.若有以下程序段
intm=0xabc,n=0xabc;
m-=n;
printf("%X\n",m);
执行后输出结果是( )。
A)0X0
B)0x0
C)0
D)0XABC
你所选择的答案是:
*,正确答案是:
C×
14.有以下程序
main()
{intx[8]={8,7,6,5,0,0},*s;
s=x+3
printf("%d\n",s[2]);
}
执行后输出结果是( )。
A)随机值
B)0
C)5
D)6
你所选择的答案是:
*,正确答案是:
B×
15.以下能正确定义数组并正确赋初值的语句是( )。
A)intN=5,b[N][N];
B)inta[1][2]={{1},{3}};
C)intc[2][]={{1,2},{3,4}};
D)intd[3][2]={{1,2},{34}};
你所选择的答案是:
*,正确答案是:
D×
16.有以下程序
main()
{intm[][3]={1,4,7,2,5,8,3,6,9};
inti,j,k=2;
for(i=0;i<3;i++)
{printf("%d",m[k][i]);}
}
执行后输出结果是( )。
A)456
B)258
C)369
D)789
你所选择的答案是:
*,正确答案是:
C×
17.有以下程序
main()
{
inta[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;
pa=a;
for(i=0;i<3;i++)
if(i<2)pa[1][i]=pa[1][i]-1;
elsepa[1][i]=1;
printf("%d\n",a[0][1]+a[1][1]+a[1][2]);
}
执行后输出结果是( )。
A)7
B)6
C)8
D)无确定值
你所选择的答案是:
*,正确答案是:
A×
18.有定义语句:
intx,y;,若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是( )。
A)1112<回车>
B)11,12<回车>
C)11,12<回车>
D)11,<回车>
12<回车>
你所选择的答案是:
*,正确答案是:
A×
19.要求以下程序的功能是计算:
s=1+1/2+1/3+……+1/10
main()
{intn;floats;
s=1.0;
for(n=10;n>1;n--)
s=s+1/n;
printf("%6.4f\n",s);
}
程序运行后输出结果错误,导致错误结果的程序行是( )。
A)s=1.0;
B)for(n=10;n>1;n--)
C)s=s+1/n;
D)printf("%6.4f\n",s);
你所选择的答案是:
*,正确答案是:
C×
20.以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址
#include
#include
char*scmp(char*s1,char*s2)
{if(strcmp(s1,s2)<0)
return(s1);
elsereturn(s2);
}
main()
{inti;charstring[20],str[3][20];
for(i=0;i<3;i++)gets(str[i]);
strcpy(string,scmp(str[0],str[1]));/*库函数strcpy对字符串进行复制*/
strcpy(string,scmp(string,str[2]));
printf("%s\n",string);
}
若运行时依次输入:
abcd、abba和abc三个字符串,则输出结果为( )。
A)abcd
B)abba
C)abc
D)abca
你所选择的答案是:
*,正确答案是:
B×
21.有以下程序
main()
{
intx=0,y=5,z=3;
while(z-->0&&++x<5)y=y-1;
printf("%d,%d,%d\n",x,y,z);
}
程序执行后的输出结果是( )。
A)3,2,0 B)3,2,-1 C)4,3,-1 D)5,-2,-5
你所选择的答案是:
*,正确答案是:
B×
22.若程序中定义了以下函数
doublemyadd(doublea,doubleB)
{return(a+B);}
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是( )。
A)doublemyadd(doublea,B);
B)doublemyadd(double,double);
C)doublemyadd(doubleb,doubleA);
D)doublemyadd(doublex,doubley);
你所选择的答案是:
*,正确答案是:
A×
23.下列选项中,不能用作标识符的是( )。
A)_1234_
B)_1_2
C)int_2_
D)2_int_
你所选择的答案是:
*,正确答案是:
D×
24.有以下程序
main()
{intm=3,n=4,x;
x=-m++;
x=x+8/++n;
printf("%d\n",x);
}
程序运行后的输出结果是( )。
A)3
B)5
C)-1
D)-2
你所选择的答案是:
*,正确答案是:
D×
25.有以下程序
main()
{inti;
for(i=0;i<3;i++)
switch(i)
{
case0:
printf("%d",i);
case2:
printf("%d",i);
default:
printf("%d",i);
}
}
程序运行后的输出结果是( )。
A)022111
B)021021
C)000122
D)012
你所选择的答案是:
*,正确答案是:
C×
26.有以下程序
main()
{inti=0,x=0;
for(;;)
{
if(i==3||i==5)continue;
if(i==6)break;
i++;
s+=i;
};
printf("%d\n",s);
}
程序运行后的输出结果是( )。
A)10
B)13
C)21
D)程序进入死循环
你所选择的答案是:
*,正确答案是:
D×
27.有以下程序
main()
{chara,b,c,d;
scanf("%c,%c,%d,%d",&a,&b,&c,&d);
printf("c,%c,%c,%c\n",a,b,c,d);
}
若运行时从键盘上输入:
6,5,65,66<回车>。
则输出结果是( )。
A)6,5,A,B
B)6,5,65,66
C)6,5,6,5
D)6,5,6,6
你所选择的答案是:
*,正确答案是:
A×
28.设有定义语句
intx[6]={2,4,6,8,5,7},*p=x,i;
要求依次输出x数组6个元素中的值,不能完成此操作的语句是( )。
A)for(i=0;i<6;i++)printf("%2d",*(p++));
B)for(i=0;i<6;i++)printf("%2d",*(p+i));
C)for(i=0;i<6;i++)printf("%2d",*p++);
D)for(i=0;i<6;i++)printf("%2d",(*p)++);
你所选择的答案是:
*,正确答案是:
D×
29.有以下程序
#include
main()
{inta[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;
*q=*(p+5);
printf("%d%d\n",*p,*1);
}
程序运行后的输出结果是( )。
A)运行后报错
B)66
C)611
D)510
你所选择的答案是:
*,正确答案是:
A×
30.有以下程序
main()
{
chars[]="ABCD",*p;
for(p=s+1;p
}
程序运行后的输出结果是( )。
A)ABCD
BCD
CD
D
B)A
B
C
D
C)B
C
D
D)BCD
CD
D
你所选择的答案是:
*,正确答案是:
D×
31.以下叙述中正确的是( )。
A)用C程序实现的算法必须要有输入和输出操作
B)用C程序实现的算法可以没有输出但必须要有输入
C)用C程序实现的算法可以没有输入但必须要有输出
D)用C程序实现的算法可以既没有输入也没有输出
你所选择的答案是:
*,正确答案是:
C×
32.有定义语句:
intb;charc[10];,则正确的输入语句是( )。
A)scanf("%d%s",&b,&c);
B)scanf("%d%s",&b,c);
C)scanf("%d%s",b,c);
D)scanf("%d%s",b,&c);
你所选择的答案是:
*,正确答案是:
B×
33.有以下程序
#include"stdio.h"
#include"string.h"
main()
{
chara[7]="abcd";inti,j;
i=sizeof(a);j=strlen(a);
printf("%d%d",i,j);
}
程序运行后的输出结果是( )。
A)22
B)74
C)72
D)62
你所选择的答案是:
*,正确答案是:
B×
34.有以下程序
main()
{
intc=35;printf("%d",c&c);
}
程序运行后的输出结果是( )。
A)0
B)70
C)35
D)1
你所选择的答案是:
*,正确答案是:
C×
35.有以下程序
main()
{
inta=1,b;
for(b=1;b<=10;b++)
{
if(a>=8)break;
if(a%2==1){a+=5;continue;}
a-=3;
}
printf("%d",b);
}
程序运行后的输出结果是( )。
A)3
B)4
C)5
D)6
你所选择的答案是:
*,正确答案是:
B×
36.有以下程序
#include"stdio.h"
voidWriteStr(char*fn,char*str)
{
FILE*fp;
fp=fopen(fn,"W");
fputs(str,fp);
fclose(fp);
}
main()
{
WriteStr("t1.dat","start");
WriteStr("t1.dat","end");
}
程序运行后,文件t1.dat中的内容是( )。
A)start
B)end
C)startend
D)endrt
你所选择的答案是:
*,正确答案是:
B×
37.设函数fun的定义形式为
voidfun(charch,floatx){…}
则以下对函数fun的调用语句中,正确的是( )。
A)fun("abc",3.0); B)t=fun('D',16.5);
C)fun('65',2.8); D)fun(32,32);
你所选择的答案是:
*,正确答案是:
D×
38.有以下程序
main()
{
intk=5,n=0;
while(k>0)
{
switch(k)
{
default:
break;
case1:
n+=k;
case2:
case3:
n+=k;
}
k--;
}
printf("%d\n",n);
}
程序运行后的输出结果是( )。
A)0 B)4 C)6 D)7
你所选择的答案是:
*,正确答案是:
D×
39.有以下程序
main()
{inta[]={2,4,6,8,10},y=0,x,*p;
p=&a[1];
for(x=1;x<3;x++)y+=p[x];
printf("%d\n",y);
}
程序运行后的输出结果是( )。
A)10 B)11 C)14 D)15
你所选择的答案是:
*,正确答案是:
C×
40.有以下程序
inta=2;
intf(intn)
{staticinta=3;
intt=0;
if(n%2){staticinta=4;t+=a++;}
else{staticinta=5;t+=a++;}
returnt+a++;
}
main()
{ints=a,i;
for(i=0;i<3;i++)s+=f(i);
printf("%d\n",s);
}
程序运行后的输出结果是( )。
A)26 B)28 C)29 D)24
你所选择的答案是:
*,正确答案是:
C×
41.有以下