C语言复习题A B C.docx
- 文档编号:10865965
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:38
- 大小:31.09KB
C语言复习题A B C.docx
《C语言复习题A B C.docx》由会员分享,可在线阅读,更多相关《C语言复习题A B C.docx(38页珍藏版)》请在冰豆网上搜索。
C语言复习题ABC
C语言程序设计复习题A
一、选择题(
(1)--(20)每个选项1分,(21)--(30)每个选项2分,共40分)
(1)下列不正确的转义字符是A)'、、'B)'、“C)'074'D)'、0'"
(2)若有以下定义:
chara;intb;floatc;doubled;则表达式a*bd--c值的类型为A)floatB)intC)charD)double
(3)表示关系x《=y《=z的c语言表达式为
A)(X《=Y)&&(Y《=Z)B)(X《=Y)AND(Y《=Z)
C)(X《=Y《=Z)D)(X《=Y)&(Y《=Z)
(4)设a=1,b=2,c=3,d=4,则表达式:
a《b?
a:
c《d?
a:
d的结果为
A)4B)3C)2D)1
(5)设x为int型变量,则执行以下语句后,x的值为
x=10;x=x--=x--x;
A)10B)20C)40D)30
(6)下列可作为C语言赋值语句的是
A)x=3,y=5B)a=b=6C)i--;D)y=int(x);
(7)设x,y,z,t均为int型变量,则执行以下语句后,t的值为
x=y=z=1;
t=x||y&&z;
A)不定值B)2C)1D)0
(8)设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值:
scanf("i=%d,f=%f",&i,&f);
为了把100和765.12分别赋给i和f,则正确的输入为
A)100765.12B)i=100,f=765.12
C)100765.12D)x=100y=765.12
(9)设x和y均为int型变量,则执行下的循环后,y值为
for(y=1,x=1;y《=50;y)
{if(x=10))break;
if(x%2==1)
{x=5;continue;}
x--=3;
}
A)2B)4C)6D)8
(10)给出以下定义:
charx[]="abcdefg";
chary[]={'a','b','c','d','e','f','g'};
则正确的叙述为
A)数组X和数组Y等价B)数组x和数组Y的长度相同
C)数组X的长度大于数组Y的长度D)数组X的长度小于数组Y的长度
(11)以下叙述中不正确的是
A)在不同的函数中可以使用相同名字的变量
B)函数中的形式参数是局部变量
C)在一个函数内定义的变量只在本函数范围内有效
D)在一个函数内的复合语句中定义的变量在本函数范围内有效
(12)假定a和b为int型变量,则执行以下语句后b的值为
a=1;b=10;
do
{b--=a;a;}
while(b--《0);
A)9B)--2C)--1D)8
(13)设j为int型变量,则下面for循环语句的执行结果是
for(j=10;j3;j--)
{if(j%3)j--;
--j;--j;
printf("%d",j);
}
A)63B)74C)62D)73
(14)设有以下宏定义:
#defineN3
#defineY(n)((N1)*n)
则执行语句:
z=2*(NY(51));后,z的值为
A)出错B)42C)48D)54
(15)设P1和P2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是
A)k=*P1*P2;B)p2=k;C)P1=P2;D)K=*P1*(*P2);
(16)设有如下定义:
intarr[]={6,7,8,9,10};
int*ptr;
则下列程序段的输出结果为
ptr=arr;
*(ptr2)=2;
printf("%d,%d、n",*ptr,*(ptr2));
A)8,10B)6,8C)7,9D)6,10
(17)以下程序的输出结果是
main()
{inti,k,a[10],p[3]:
K=5;
for(i=0;i《10;i)a[i]=i;
for(i=0;i《3;i)p[i]=a[i*(i1)];
for(i=0;i《3;i)k=p[i]*2;
printf("%d、n",k);
}
A)20B)21C)22D)23
(18)执行以下程序段后,m的值为
inta[2][3]={{1,2,3},{4,5,6}};
intm,*p;
p=&a[0][0];
m=(*p)*(*(p2))*(*(p4));
A)15B)14C)13D)12
(19)有以下程序段
chararr[]="ABCDE";
char*ptr;
for(ptr=arr;ptr《arr5;ptr)printf("%s、n",ptr);
输出结果是
A)ABCDB)AC)ED)ABCDE
(20)有以下程序
main()
{intx,i;
or(i=1;i《=50;i)
{x=i;
if(x%2==0)
if(x%3==0)
if(x%7==0)
printf("%d,i);”
}
}
输出结果是
A)28B)27C)42D)41
(21)有下列程序#include《stdio.hmain(){union{intk;chari[2];}*s,a;s=&a;s--i[0]=0x39;s--i[1]=0x38;printf("%x、n",s--k);
}
输出结果是
A)3839B)3938C)380039D)390038
(22)有以下程序
#include《stdio.h
main()
{inta,b,c=246;
a=c/100%9;
b=(--1)&&(--1);
printf("%d,%d、n",a,b);
}
输出结果是
A)2,1B)3,2C)4,3D)2,--1
(23)设有如下定义:
int(*ptr)*();
则以下叙述中正确的是
A)ptr是指向一维组数的指针变量
B)ptr是指向int型数据的指针变量C)ptr是指向函数的指针,该函数返回一个int型数据D)ptr是一个函数名,该函数的返回值是指向int型数据的指针
(24)有以下程序#include《stdio.hstructstu
{intnum;
charname[10];
intage;
};
voidfun(structstu*p)
{printf("%s、n",(*p)。
name);}
main()
{
structstustudents[3]={{9801,"Zhang",20},
{9802,"Wang",19},
{9803,"Zhao",18}};
fun(students2);
}
输出结果是
A)ZhangB)ZhaoC)WangD)18
(25)设有以下说明和定义:
typedefunion
{longi;intk[5];charc;}DATE;
structdate
{intcat;DATEcow;doubledog;}too;
DATEmax;
则下列语句的执行结果是
printf("%d",sizeof(structdate)sizeof(max));
A)26B)30C)18D)8
(26)有以下程序
main()
{chara[]="programming",b[]="language";
char*p1,*p2;
inti;
p1=a;p2=b;
for(i=0;i《7;i)
if(*(p1i)==*(p2i))printf("%c",*(p1i));
}
输出结果是
A)gmB)rgC)orD)ga
(27)有以下程序
viodfun(inta,intb,intc)
{a=456;b=567;c=678;}
main()
{intx=10,y=20,z=30;
fun(x,y,z);
printf("%d,/%d、n",c,d);
}
输出结果是
A)30,20,10B)10,20,30C)456,567,678D)678,567,456
(28)有以下程序
intfun(intx,inty,int*cp,int*dp)
{*cp=xy;*dp=x--y;}
main()
{inta,b,c,d;
a=30;b=50;
fun(a,b,&c,&d);
printf("%d,%d、n",c,d);
}
输出结果是
A)50,30B)30,J50C)80,--20D)80,20
(29)有以下程序
main()
{inti,j;
for(j=10;j《11;j)
{for(i=9;i《j;i)
if(!
(j%i))break;
if(i=j--1)printf("%d",j);
}
}
输出结果是
A)11B)10C)9D)1011
(30)有以下程序
#include"atdio.h"
intabc(intu,intv);
main()
{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;
}
输出结果是
A)6B)7C)8D)9
二填空题(40分)
(1)设i,j,k均为int型变量,则执行完下面的for循环后,k的值为___。
for(i=0,j=10;i《=j;i,j--)k=ij;
(2)设有以下定义的语句:
inta[3][2]={10,20,30,40,50,60},(*p)[2];p=a;则*(*(p2)1)值为___。
(3)以下程序的输出结果是___。
#include《stdio.h》intfun(intx,inty)
{staticintm=0,i=2;
i=m1;
m=ixy;
returnm
}
main()
{intj=4,m=1,k;
k=fun(j,m);printf("%d,",k);
k=fun(j,m);printf("%d、n",k);
}
(4)函数fun的功能是:
使一个字符串按逆序存放,请填空
voidfun(charstr[])
{charm;inti,j;
for(i=0,j=strlen(str);i《____;i,j--)
{m=str[i];
str[i]=___(11);
str[j--1]=;
}
printf("%s、n",str);
}
(5)以下程序的功能是:
从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空。
#include"ctype.h"
#include"stdio.h"
main()
{charstr[81],*sptr;
inti;
for(i=0;i《80;i)
{str[i]=getchar();
if(str[i]=='、n')break;
}
str[i]=____;
sptr=str;
while(*sptr)putchar(*sptr____);
}
(6)以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字 符的ASCII码之差。
例如:
输入的两个字符串分别为abcdef和abceef,则输出为——1.请填空。
#include
main()
{charstr[100],str2[100],c;
inti,s;
printf("、ninputstring1:
、n");gest(str1);
printf("、ninputstring2:
、n");gest(str2);
i=0;
while((strl[i]==str2[i]&&(str1[i]!
=____))
i;
s=____;
printf("%d、n",s);
}
(7)以下程序的功能是:
从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。
请填空。
#include《stdio.h
main()
{FILE*fp;
charstr[100];inti=0;
if((fp=fopen("text.txt",____))==NULL)
{printf("can'topenthisfile.、n");exit(0);}
printf("inputastring:
、n");gest(str);
while()
{if(str[i]='a'&&str[i]《='z')
str[i]=____;
fputc(str[i],fp);
i;
}
fclose(fp);
fp=fopen("test.txt",____);
fgets(str,100,fp);
printf("%s、n",str);
fclose(fp);
}
(8)以下程序可以把从键盘上输入的十进制数(long型)以二到十六进制形式输出,请填空。
#include.《stdio.h
main()
{charb[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C'
,'D','E','F'};
intc[64],d,i=0,base;
longn;
printf("enteranumber:
、n");scanf("%ld",&n);
printf("enternewbase:
、n");scanf("%d",&base);
do
{c[i]=____;
i;n=n/base;
}while(n!
=0);
printf("transmitenewbase:
、n");
for(--i;i=0;--i)
{d=c[i];
printf("%c",b____);
}
}_
C语言程序设计复习题A答案
一、选择题
(1)C
(2)D(3)A(4)D(5)B(6)C(7)C(8)B(9)C(10)C(11)D(12)D(13)B(14)C(15)B
(16)D(17)B(18)A(19)D(20)D
二、填空题
(1)10;
(2)60;(3)8;17其余略
C语言程序设计复习题B
一、选择题
(1)在C语言提供的合法的着急字是A)swicthB)cherC)CaseD)default
(2)在C语言中,合法的字符常量是A)'、084'B)'、x43'C)'ab'D)"、0"(3)若已定义x和y为double类型,则表达式:
x=1,y=x3/2的值是A)1B)2C)2.0D)2.5
(4)合法的数组定义是
A)inta[]="string";B)inta[5]={0,1,2,3,4,5}; C)vhsts="string";D)chara[]={0,1,2,3,4,5};
(5)表示关系x《=y《=z的c语言表达式为
A)(X《=Y)&&(Y《=Z)B)(X《=Y)AND(Y《=Z)
C)(X《=Y《=Z)D)(X《=Y)&(Y《=Z)
(6)设a=1,b=2,c=3,d=4,则表达式:
a《b?
a:
c《d?
a:
d的结果为
A)4B)3C)2D)1
(7)若有定义和语句:
chars[10]:
s="abcd";printf("%s、n",s);则结果是(以下u代表空格)
A)输出abcdB)输出aC)输出abcduuuuuD)编译不通过(8)若有定义和语句:
int**pp,*p,a=10,b=20;pp=&p;p=&a;p=&b;printf("%d、n",*p,**pp);
则输出结果是:
A)10,20B)10,10C)20,10D)20,20
(9)若有以下定义和语句:
intu=010,v=0x10,w=10;
printf("%d,%d,%d、n,u,v,w);”
则输出结果是:
A)8,16,10B)10,10,10C)8,8,10D)8,10,10
(10)若有以下定义和语句
charc1='b',c2='e';
printf("%d,%c、n",c2--c1,c2--'a'"A");
则输出结果是:
A)2,MB)3,EC)2,ED)输出项与对应的格式控制不一致,输出结果不确定
(11)若有以下定义:
chars[20]="programming",*ps=s;
则不能代表字符o的表达式是
A)ps2B)s[2]C)ps[2]D)ps=2,*ps
(12)若ij已定义为int类型,则以下程序段中内循环体的总的执行次数是
for(i=5;i;i--)
for(j=0;j《4;j){......}
A)20B)25C)24D)30
(13)若有以下定义和语句:
char*s1="12345",*s2="1234";
printf("%d、n",strlen(strcpy(s1,s2)));
则输出结果是
A)4B)5C)9D)10
(14)若有以下定义和语句:
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则不能表示a数组元素的表达式是
A)*pB)a[10]C)*aD)a[p--a]
(15)下面程序的输出是
main()
{char*s="121";
intk=0,a=0,b=0;
do
{k;
if(k%2==0){a=as[k]--'0';continue;}
b=bs[k]--'0';a=as[k]--'0';
}
while(s[k1]);
printf("k=%da=%db=%d、n",k,a,b);
A)k=3a=2b=3B)k=3a=3b=2
C)k=2a=3b=2D)k=2a=2b=3(16)下面程序的输出是main(){unsigneda=32768;printf("a=%d、n",a);}
A)a=32768B)a=32767C)a=--32767D)a=--1
(17)设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值:
scanf("i=%d,f=%f",&i,&f);
为了把100和765.12分别赋给i和f,则正确的输入为
A)100765.12B)i=100,f=765.12
C)100765.12D)x=100y=765.12
(18)若有定义:
intx,y;chara,b,c;并有以下输入数据(此处《CR》代表换行符,/u代表空格):
1u2
AuBuC
则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是
A)scanf("x=%dy%d",&x,&y);a=getchar();b=getchar();c=getchar();
B)scanf("%d%d",&x,&y);a=getchar();b=getchar();c=getchar();
C)scanf("%d%d%c%c%c,&x,&y,&a,&b,&c);”
D)scanf("%d%d%c%c%c%c%c%c:
&x,&y,&a,&a,&b,&b,&c,&c);”
(19)以下程序输出的结果是
#include
#include
main()
{charw[][10]={"ABCD",“EFGH",“IJKL",“MNOP"},K;
for(k=1;k《3;k)
printf("%s、n",&w[k][k]);
}
A)ABCDB)ABCD
FGHEFG
KLIJ
M
C)EFGD)FGH
JKKL
O
(20)若有以下的定义:
inta[]={1,2,3,4,5,6,7,88,9,10),*p=a;
则值为3的表式是
A)p=2,*(p)B)p=2,*pC)p=3,*kpD)p=2,*p
(21)假定所有变量均已正确说明,下列程序段运行后x的值是
a=b=c=0;x=35;
if(!
a)x--;
elseif(b);if(c)x=3;
elsex=4;
A)34B)4 C)35D)3
(22)在以下一组运算符中,优先级最高的运算符是
A)《=B)=C)%D)&&
(23)若有以下定义和语句:
intw[2][3],(*pw)[3];pw=w;
则对w数组元素非法引用是
A)*(w[0]2)B)*(pw1)[2]C)pw[0][0]D)*(pw[1]2)
(24)若有以下程序片段:
charstr[]="ab、n、012、、、”“;”
printf(%dd",strlen(str));”
上面程序片段的输出结果是
A)3B)4C)6D)12
(25)函数调用:
strcat(strcpy(str1,str2),str3)的功能是
A)将串str1复制到串str2中后再连接到串str3之后
B)将串str1连接到串str2之后再复制到串str3之后
C)将串str2复制到串str1中后再将串str3连接到串str1之后
D)将串str2连接到串str1之后再将串str1复制到串str3中
(36)以下对C语言函数的有关描述中,正确的是
A)在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B)C函数既可以嵌套定义又可以递归调用
C)函数必须有返回值,否则不能使用函数
D)C程序中有调用关系的所有函数必须放在同一个源程序文件中
(27)以下叙述中不正确的是
A)在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值。
B)在C中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容。
C)在C中,外部变量的隐含类别是自动存储类别。
D)在C中,函数形参可以说明为register变量。
(28)以下程序的输出结果是
#include
subl(chara,charb){charc;c=a;a=b;b=c;}
sub2(char*a,charb){charc;c=*a;*a=b;b=c;}
sub3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}
{chara,b;
a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);
a='A';b='B';sub2(&a,b);putchar(a);prtchar(b);
a='A';b='B';sub1(a,b);putchar(a);putchar(b);
}
A)BABBABB)ABBBBAC)BABABAD)BAABBA
(29)设有如下定义:
structsk
{inta;floatb;}data
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言复习题A 语言 复习题