复习题.docx
- 文档编号:14921570
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:21
- 大小:22.38KB
复习题.docx
《复习题.docx》由会员分享,可在线阅读,更多相关《复习题.docx(21页珍藏版)》请在冰点文库上搜索。
复习题
1、以下不能定义为用户标识符的是。
A)arrayB)floatC)_3comD)student
2、若有以下程序段,则执行后,c3的值是A)。
intc1=1,c2=2,c3;
c3=1.0/c2*c1;
A)0B)0.5C)1D)2
3、在C语言中,横向跳格的字符是。
A)\cB)\tC)\mD)\v
4、要求以下程序的功能是计算:
s=1+1/2+1/3+…+1/10
voidmain()
{intn;
floats;
s=1.0;
for(n=10;n>1;n--)s=s+1/n;
printf(“%6.4f\n”,s);
}
程序运行后输出结果错误,导致错误结果的程序行是B)。
A)s=s+1/n;B)for(n=10;n>1;n--)C)s=1.0D)printf(“%6.4f\n”,s);
5、以下叙述正确的是A。
A)C语言各函数之间允许直接递归调用也允许间接递归调用。
B)C语言各函数之间不允许直接递归调用也不允许间接递归调用。
C)C语言各函数之间允许直接递归调用也不允许间接递归调用。
D)C语言各函数之间不允许直接递归调用允许间接递归调用。
6、若a,b,c,d都是int型变量,且初值为0,以下选项中不正确的赋值语句是。
A)a=b=c=100;B)d++;C)c+b;D)d=(c=22)-(b++);
7、有以下程序
voidmain()
{intx=105,y=010;
printf(“%2d,%2d\n”,x,y);
}
执行后的输出结果是A)。
A)10,01B)05,10C)105,8D)05,01
8、有以下程序
voidmain()
{inta=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a
printf(“%d,%d\n”,k,m);
}
程序运行后的输出结果是。
A)0,0B)0,1C)1,0D)1,1
9、C语言中,if语句用作判断的表达式为。
A)关系表达式B)任意表达式C)逻辑表达式D)算术表达式
10、以下程序的执行结果是。
voidmain()
{inta,y;
scanf(“%d,%d”,&a,&b);
if(a>d)
a=b;b=a;
else
a++;b--;
printf(“%d,%d\n”,a,b);
}
A)若输入3和4,则输出5和2B)若输入3和4,则输出3和4
C)有语法错误,不能正确执行D)若输入3和4,则输出4和3
11、有以下程序
voidmain()
{
inti=1,j=1,k=2;
if((j++||k++)&&i++)
printf(“%d,%d,%d\n”,i,j,k);
}
执行后的输出结果是。
A)1,1,2B)2,2,1C)2,2,2D)2,2,3
12、有以下程序段,其输出结果是。
int
x=3;
do{printf(“%d”,x-=2;)}while(!
--x);
A)1B)30C)1-2D)无限循环
13、以下叙述中,正确的是。
A)C语言总是从第一个定义的函数开始执行。
B)C语言中,要调用的函数必须在main()函数中定义。
C)C语言程序总是从main()函数开始执行。
D)C语言中main()函数必须放在程序开始的地方。
14、sizeof(float)是。
A)一个双精度型表达式
B)一个整型表达式
C)一个函数调用
D)一个不合法的表达式
15、以下函数调用语句中实参的个数是。
fun(a+b,(x,y),fun(n+k,d,(a,b)));
A)3B)4C)5D)6
16、下列选项中,正确的语句组是。
A)chars[8];s={“Beijing”};
B)chars[8];s=”Beijing”;
C)chars[8]={”Beijing”};
17、以下不能定义为用户标识符的是。
A)MainB)_0C)sizeofD)_int
19、对两个数组a和b进行如下初始化:
chara[]=”abcd”;
charb[]={‘a’,’b’,’c’,’d’};
则以下叙述正确的是。
A)a与b完全相同B)b比a数组长度长
C)a与b中都存放的字符串D)a与b长度相同
20、以下数组定义中不正确的是。
A)inta[2][3];
B)intb[][3]={0,1,2,3};
C)intc[100][100]={0};
D)intd[3][]={{1,2}{1,2,3}{1,2,3,4}};
21、s1和s2已正确定义,并分别指向两个字符串,若要求:
当s1所指向的字符串大于s2所指向的字符串时,执行语句s,则以下选项正确的是。
A)if(s1>s2)S;
B)if(strcmp(s1,s2))S;
C)if(strcmp(s2,s1)>0)S;
D)if(strcmp(s1,s2)>0)S;
22、设x,y,z和k都是int型变量,则执行表达式:
x=(y=4,z=16,k=24)后,x的值为。
A)4B)16C)32D)24
23、以下程序的输出结果是。
charstr[10]={‘s’,’t’,’u’,’d’,’e’,’n’,’t’};
printf(“%d\n”,strlen(str));
A)7B)8C)10D)存在语法错误
24、下列语句中,符合C语言语法的赋值语句是。
A)a=7+b+c=a+7;B)a=7+b++=a+7;
C)a=7+b,b++,a+7;D)a=(7+b,c=a+7);
25、输入123456,abc,以下程序的执行结果是。
voidmain()
{inta;
charc1;
scanf(“%4d%3c”,&a,&c1);
printf(“%d,%c\n”,a,c1);
}
A)1234,abcB)1234,5C)123456,aD)12345,6
26、在C语言中,逻辑“真”等价于下面选项。
A)整数1B)TrueC)非0数D)任意常数
27、设a,b,c,d,m,n均为int型变量,且已知:
a=5,b=6,c=7,d=m=2,n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为。
A)0B)1C)2D)3
28、以下程序执行结果是。
voidmain()
{inta=2,b=-1,c=1;
if(a=b+c)
printf(“$$$$\n”);
else
printf(“@@@@\n”);
}
A)$$$$B)@@@@C)有语法错误,不能正确执行D)@$@$
29、以下程序的输出结果是。
voidmain()
{inta=5,b=4,c=6,d;
printf(“%d\n”,d=a>b?
(a>c?
a:
c):
(b));
}
A)5B)4C)6D)不确定
30、以下程序的运行结果为。
voidmain()
{
inti,sum;
i=sum=0;
while(i<=100)
sum+=i;
i++;
printf("1+2+3+……+100=%d",sum);
}
A)0B)5050C)1D)程序无终止运行
31、以下程序段的执行结果为。
inta=3;
do
{
a-=a*a;
}
while(!
a);
A)循环执行一次B)循环执行二次C)有语法错误D)程序无终止运行
32、已定义c为字符型变量,则下列语句正确的是。
A)c=‘98’;B)c=”98”;C)c=98;D)c=”c”;
33、设c1,c2均是字符型变量,则以下不正确的函数调用为。
A)scanf(“%c%c”,&c1,&c2)
B)c1=getchar();
C)putchar(c2);
D)putchar(c1,c2);
34、已有定义inti,a[10],*p;,则合法的赋值语句是。
A)p=100;B)p=a[5];C)p=a[2]+2;D)p=a+2;
写出程序的输出结果
1、以下程序的执行结果是j=9。
voidmain()
{
inti=3,j;
(j=3*i,j+2),j*5;
printf("j=%d\n",j);
}
2、有以下程序
voidmain()
{
intn=0,m=1,x=2;
if(!
n)x-=1;
if(m)x-=2;
if(x)x-=3;
printf("%d\n",x);
}
x=-1-4=-4
执行后的输出结果是-4。
3、设j为int型变量,则下面for循环语句的执行结果是74。
for(j=10;j>3;j--)
{
if(j%3)j--;
--j;--j;
printf("%d",j);
}
10-3=77-3=4
4、以下程序的输出结果是8。
intabc(intu,intv);
voidmain()
{
inta=24,b=16,c;
c=abc(a,b);
printf(“%d\n”,c);
}
intabc(intu,intv)
{
intw;
while(v)
{
w=u%v;
u=v;
v=w;
}
returnu;
}
24/16=1……8
5、有如下程序程序的输出结果是17。
intfun(inta,intb)
{
return(a+b);
}
voidmain()
{
intx=4,y=5,z=8,r;
r=fun(fun(x,y),z);
printf(“%d\n”,r);
}
4+5+8=17
6、以下程序的输出结果是56。
intt(intx,inty,intcp,intdp)
{
cp=x*x+y*y;
dp=x*x-y*y;
}
voidmain()
{
inta=4,b=3,c=5,d=6;
t(a,b,c,d);
printf(“%d%d\n”,c,d);
}
7、以下程序运行后的输出结果是137。
voidmain()
{
inti,n[]={0,0,0,0,0};
for(i=1;i<=3;i++)
{
n[i]=n[i-1]*2+1;
printf(“%d”,n[i]);
}
}
0*2+1=11*2+1=32*+1=7
8、若有以下程序,程序运行后的输出结果是24。
voidmain()
{
inta[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
inti,s=0;
for(i=0;i<4;i++)
s+=a[2][i];
printf(“%d\n”,s);
}
1234
5678
39102
4296
3+9+10+2=24
9、若有以下程序
voidmain()
{
chara;
a=’H’-‘A’+’O’;
printf(“%c\n”,a);
}
执行后的输出结果是V。
10、以下程序的输出结果是16。
voidmain()
{inta=0;
a+=(a=8);
printf(“%d\n”,a);//*a=a+a;(a=8)
}
a=8+8=16
11、分析以下程序,若输入字符C时,程序输出结果为60~69;若输入字符@,输出结果为Error。
voidmain()
{
charc;
scanf("%c",&c);
c=(c>=97&&c<=122)?
c-32:
c;
switch(c)
{
case'A':
printf("85~100\n");break;
case'B':
printf("70~84\n");break;
case'C':
printf("60~69");break;
case'D':
printf("<60\n");break;
default:
printf("Error\n");
}
}
12、以下程序的执行结果是112358。
voidmain()
{
inti,f1,f2;
f1=f2=1;
for(i=0;i<3;i++)
{
printf("%5d%5d",f1,f2);
f1+=f2;
f2+=f1;
}
}
\f1=f2f1=1+1=2f2=1+2=3f1=2+3=5f2=5+3=8
3、以下程序的输出结果是10。
voidmain()
{
inti,j;
for(j=10;j<11;j++)
{
for(i=9;i if(! (j%i))break; if(i>=j-1) printf("%d",j); } } j=10 14、以下程序运行后的输出结果是4554。 voidswap(intx,inty) { intt; t=x;x=y;y=t; printf(“%d%d”,x,y); } voidmain() { inta=5,b=4; swap(a,b); printf(“%d%d\n”,a,b); } 输入54交换得45在交换得54 15、以下程序的输出结果是852。 voidmain() { inti,a[10]; for(i=9;i>=0;i--) a[i]=10-i; printf(“%d%d%d”,a[2],a[5],a[8]); } a10-2a[5]=10-5=5a[8]=10-8=2 16、设有如下程序段,则其运行结果为357。 voidmain() { inti,a[3][3]={1,2,3,4,5,689}; for(i=0;i<3;i++) { printf(“%d”,a[i][2-i]); } } 123 456 789 ia[0][2]=3i=1a[1][1]=5i=2a[2][0]=7 程序填空 1、以下是计算n! ,阅读程序后,完成空标号处应填的内容。 voidmain() { inti,n; longnp; printf(“Pleaseinputanumber: \n”); scanf(“%d”,&n); np=1; for(i=2;i<=n;i++) np=np*i; printf(“n! =%1d”,np); } 2.下列程序把数组元素中的最大值放入a[0]中,则if的条件表达式应填什么? voidmain() { inta[10]={6,7,2,9,1,10,5,8,4,3},*p=a,i,b; for(i=0;i<10;i++,p++) if(*p>a[0]) {b=*a;*a=*p;*p=b;} printf(“%d”,*a); } 3、下面程序的功能是: 将一个5行5列的矩阵(用二维数组表示)主次两条对角线上的元素依次赋值为1,2,3,4,5和5,4,3,2,1。 空白处应填什么? voidmain() { inta[5][5],i; for(i=0;i<=4;i++) {a[i][i]=i+1; a[4-i][i]=i+1; } } 4、有以下语句段 intn1=10,n2=20; printf(“n1=%d\n,n2=%d\n”,n1,n2); 要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。 n1=10 n2=20 编程题: 把a数组中的n个数和b数组中逆序的n个数一一对应相加,结果存在c数组中。 例如: 当a数组中的值是: 1、3、5、7、8,b数组中的值是2、3、4、5、8,调用该函数后,c数组中存放的数据9、8、9、10、10。 #include voidmain() { inta[5]={1,3,5,7,8}; intb[5]={2,3,4,5,8}; intc[5]; inti; for(i=0;i<5;i++) { c[i]=a[i]+b[4-i]; printf("%d",c[i]); } printf("\n"); }} 2编写程序,将2000年到3000年中所有的闰年年份输出,并统计出闰年的总数。 #include main() { intyear=2000,leap=0,count=0; for(year=2000;year<=3000;year++) { //leap=0; /*if(year%4==0) { if(year%100! =0) leap=1; else if(year%400==0) leap=1; }*/ if((year%4==0&&year%100! =0)||year%400==0) //if(leap==1) { printf("%d\t",year); count++; } if(count%5==0) printf("\n"); 3、编写函数,求n! ,然后编写主程序调用此函数,求出 。 #include intfun(intn); voidmain() { floats=0; intj; for(j=1;j<=10;j++) s=s+fun(j); printf("thesumis: %8.0f\n",s); } intfun(intn) { inti; intsum=1; for(i=1;i<=n;i++) { sum=sum*i; } returnsum; } 4、马克思在《数学手稿》中提出如下问题: 有30个人(包括男人、女人和小孩)在一家饭店吃饭,共花50先令,其中每个男人花3先令,每个女人花2先令,每个小孩花1先令。 请编写程序,求出男人、女人、小孩各有多少人。 #include main() { inti=0,j=0,k=0; for(i=1;i<=16;i++) for(j=1;j<=23;j++) for(k=1;k<=28;k++) if(i+j+k==30&&i*3+j*2+k==50) printf("%d,%d,%d\n",i,j,k); } 5、输入一行字符,分别统计出其中英文字母,空格,数字和其它字符的个数。 #include #include main() { chars[80]; inti,letter=0,space=0,digit=0,other=0; gets(s); for(i=0;s[i]! ='\0';i++) { if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z') letter++; elseif(s[i]>='0'&&s[i]<='9') digit++; elseif(s[i]=='') space++; else other++; } printf("%d,%d,%d,%d\n",letter,space,digit,other); } 6、用冒泡排序法对10个整数按由小到大的顺序进行排序。 #include main() { inti,j,a[10],t; for(i=0;i<10;i++) scanf("%d",&a[i]); for(j=1;j<10;j++) for(i=0;i<=9-j;i++) if(a[i]>a[i+1]) { t=a[i+1]; a[i+1]=a[i]; a[i]=t; } for(i=0;i<10;i++) printf("%5d",a[i]); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 复习题