C语言程序设计课后练习辅导全资料.docx
《C语言程序设计课后练习辅导全资料.docx》由会员分享,可在线阅读,更多相关《C语言程序设计课后练习辅导全资料.docx(36页珍藏版)》请在冰豆网上搜索。
C语言程序设计课后练习辅导全资料
C语言程序设计课后练习辅导资料
题型
题干
选项
答案
单选题
以下选项中合法的实型常数是()。
A.5E2.0
B.E-3
C..2E1
D.1.3E
C
单选题
已知i、j、k为int型变量,若从键盘输入:
1,2,3,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是()。
A.scanf(“%2d%2d%2d”,&i,&j,&k);
B.scanf(“%d%d%d”,&i,&j,&k);
C.scanf(“%d,%d,%d”,&i,&j,&k);
D.scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);
C
单选题
设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是()。
A.6.500000
B.6
C.5.500000
D.6.000000
D
单选题
以下非法的赋值语句是()。
A.n=(i=2,++i);
B.j++;
C.++(i+1);
D.x=j>0;
C
单选题
若有以下程序:
main()
{intk=2,i=2,m;
m=(k+=i*=k);
printf(“%d,%d\n”,m,i);}
执行后的输出结果是()。
A.8,6
B.8,3
C.6,4
D.7,4
C
单选题
以下选项中,与k=n++完全等价的表达式是()。
A.k=n,n=n+1
B.n=n+1,k=n
C.k=++n
D.k+=n+1
A
单选题
已有定义:
intx=3,y=4,z=5;,则表达式!
(x+y)+z-1&&y+z/2的值是()。
A.6
B.0
C.2
D.1
D
单选题
下列关于C语言用户标识符的叙述中正确的是()。
A.用户标识符中可以出现在下划线和中划线(减号)。
B.用户标识符中不可以出现中划线,但可以出现下划线。
C.用户标识符中可以出现下划线,但不可以放在用户标识符的开头。
D.用户标识符中可以出现在下划线和数字,它们都可以放在用户标识符的开头。
B
单选题
已知c是字符型变量,以下不正确的赋值语句是
()。
A.c=”a”
B.c=’a’
C.c=’\141’
D.c=’\x61’+3
A
单选题
C语言中对于嵌套if语句规定else总是与()配对?
A.第一个if
B.其之前最近的if
C.缩进位值相同的if
D.其之前最近的不带else的if语句
D
单选题
下面的for循环最多可执行()次。
for(x=0;y=0;(y!
=99)&&(x<4);x++);
A.4次
B.5次
C.99次
D.0次
A
单选题
C语言中各种基本数据类型的存储空间长度排列为()。
A.char≤long≤int≤float≤double
B.double≤float≤long≤int≤char
C.char≤int≤long≤float≤double
D.float≤int≤long≤char≤double
C
单选题
下列说法中正确的是()。
A.在switch语句中一定要使用break语句
B.在switch语句中不一定要使用break语句
C.break语句是switch语句的一部分
D.break只能用于switch语句中
B
单选题
以下不符合C语言语法的赋值表达式是()。
A.d=9+e,e++,d+9
B.k=i==j
C.n1+=n2+3
D.a=b+c=a+7
D
单选题
下列判断char类型变量C1是为数字的最简单且正确的表达式()。
A.'0'<=C1<='9'
B.(C1>='0')&&(C1<='9')
C.(C1>=0)&&(C1<=9)
D.('0'<=C1)&&('9'<=C1)
B
单选题
字符串”\\\’abcd\123\xAB\t”的长度为()。
A.8
B.17
C.-9
D.10
D
单选题
执行以下程序段后,变量a,b,c的值为()。
intx=11,y=10,a,b,c;
a=(--x==y++)?
--x:
++y;
b=x++;c=y;
A.a=10,b=10,c=9
B.a=9,b=9,c=12
C.a=9,b=9,c=11
D.a=1,b=9,c=11
C
单选题
以下程序的输出结果是用()表示。
main()
{intk=17;
printf("%d,%o,%x\n",k,k,k);
}
A.17,021,0x11
B.17,17,17
C.17,0x11,021
D.17,21,11
D
单选题
若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)
s=a;
for(b=1;b<=c;b++)s=s+1;
则与上述程序段功能等价的赋值语句是()。
A.s=a+b;
B.s=a+c;
C.s=s+c;
D.s=b+c;
B
单选题
有如下程序
voidf(intx,inty)
{intt;
if(x}
main()
{inta=4,b=3,c=5;
f(a,b);f(a,c);f(b,c);
printf("%d,%d,%d\n",a,b,c);
}
执行后输出结果是()。
A.3,4,5
B.5,3,4
C.5,4,3
D.4,3,5
D
单选题
有以下程序
main()
{chars[]="\n123\\";
printf("%d,%d\n",strlen(s),sizeof(s));
}
执行后输出结果是()。
A.赋初值的字符串有错
B.6,7
C.5,6
D.6,6
C
单选题
以下程序的输出结果是()。
main()
{charch[3][5]={“AAAA”,”BBB”,”CC”};
printf(“\”%s\”\n”,ch[1]);
}
A.“AAAA”
B.“BBB”
C.“BBBCC”
D.“CC”
B
单选题
以下叙述中正确的是()。
A.局部变量说明为static存储数,其生存期将得到延长
B.全局变量说明为static存储类,其作用域将被扩大
C.任何存储类的变量在未赋初值时,其值都是不确定的
D.形参可以使用的存储类说明符与局部变量完全相同
A
单选题
在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则()。
A.称为函数的直接递归调用
B.称为函数的间接递归调用
C.称为函数的循环调用
D.C语言中不允许这样的递归调用
B
单选题
C语言中数组下标的下限是()。
A.1
B.0
C.视说明语句而定
D.无固定下限
B
单选题
若有定义inta[2][2]={0};,则以下描述正确的是()。
A.只有a[0][0]的值为0
B.数组每个元素的值都为0
C.只有a[0][1]的值为0
D.以上都不正确
B
单选题
下面函数f的定义:
f(inta){printf("%d",a);}
函数f的返回类型()。
A.同参数a的类型相同
B.是void类型
C.没有返回值
D.无法确定
A
单选题
以下正确的说法是()。
A.定义函数时,形参的类型说明可以放在函数体
B.return后边的值不能为表达式
C.如果函数值的类型与返回值类型不一致,以函数值类型为准
D.如果形参与实参类型不一致,以实参类型为准
C
单选题
C语言标准库函数“strcat(strcpy(STR1,STR2),STR3)”的功能是()。
A.将串STR1复制到串STR2中后再连接至串STR3之后
B.将串STR1连接至STR2之后再复制至串STR3之后
C.将串STR2复制到串STR1串后再将串STR3连接到串STR1之后
D.将串STR2连接到串STR1之后再将串STR1复制到串STR3串
C
单选题
以下程序的输出结果是()。
#definep(v,format)printf(“v=%format”,v)
#defines(x)3.5*x*x
main(){inta=1,b=2;floats1;s1=s(a+b);p(s1,f);}
A.s1=31.5
B.v=31.500000ormat
C.v=7.500000ormat
D.s1=7.5
C
单选题
若有说明:
intn=2,*p=&n,*q=p;,则以下非法的赋值语句是()。
A.p=q;
B.*p=*q;
C.n=*q;
D.p=n;
D
单选题
已定义以下函数
fun(int*p)
{return*p:
}该函数的返回值是()。
A.不确定的值
B.形参p中存放的值
C.形参p所指存储单元中的值
D.形参p的地址值
C
单选题
有以下程序
main()
{char*s[]={"one","two","three"},*p;
p=s[1];
printf("%c,%s\n",*(p+1),s[0]);
}
执行后输出结果是()。
A.n,two
B.t,one
C.w,one
D.o,two
C
单选题
若有定义:
int*p[3];,则以下叙述中正确的是()。
A.定义了一个基类型为int的指针变量p,该变量具有三个指针
B.定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
C.定义了一个名为*p的整型数组,该数组含有三个int类型元素
D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
B
单选题
已定义以下函数
fun(char*p2,char*p1)
{while((*p2=*p1)!
=‘\0’){p1++;p2++;}}函数的功能是()。
A.将p1所指字符串复制到p2所指存空间
B.将p1所指字符串的地址赋给指针p2
C.对p1和p2两个指针所指字符串进行比较
D.检查p1和p2两个指针所指字符串中是否有‘\0’
A
单选题
有以下程序段
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
b=p[5];
b中的值是()。
A.5
B.6
C.8
D.9
D
单选题
运行下列程序后的输出结果是()。
main(){charstr[][10]={"China","Beijing"},*p=*str;printf("%s\n",p+10);}
A.China
B.Beijing
C.ng
D.ing
B
单选题
设有说明:
uniondata{
inti;floatf;
struct{
intx;chary;
}s;
doubled;
}a;在16位微机环境下,int类型的整数占用两个字节,则变量a在存中所占字节数为()。
A.8
B.17
C.9
D.15
A
单选题
下面对结构数据类型的叙述中,()是错的。
A.结构变量可以在说明结构类型后定义,也可在说明结构时定义
B.结构可由若干个成员组成,各成员的数据类型可以不同
C.定义一个结构类型后,编译程序要为结构的各成员分配存储空间
D.结构变量的各成员可通过结构变量名和指向结构变量的指针引用
C
单选题
在C语言中,文件若按数据的组织形式分类可分为()。
A.字符文件和数字文件
B.ASCII文件和二进制文件
C.顺序文件和随机文件
D.以上均不对
B
单选题
若有以下说明:
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为6的表达式是()。
A.*p+6
B.*(p+6)
C.*p+=5
D.p+5
D
单选题
C语言程序由()组成。
A.子程序
B.过程
C.函数
D.主程序与子程序
C
单选题
下列有四个用户定义的C语言标识符,只有一个是正确的,正确的是()。
A.case
B.-ac
C._53
D.ab-c
C
单选题
以下正确的描述是()。
A.continue语句的作用是结束整个循环的执行
B.只能在循环体和switch语句体使用break语句
C.在循环体使用break语句或continue语句的作用相同
D.从多层循环嵌套中退出时,只能使用goto语句
B
单选题
若以下选项中的变量已正确定义,则正确的赋值语句是()。
A.x1=26.8%3
B.1+2=x2
C.x3=0x12
D.x4=1+2=3
C
单选题
若变量都已正确说明,则以下程序段()。
a=2;b=3;
printf(a>b?
”***a=%d”:
”###b=%d”,a,b);
A.没有正确的输出格式控制
B.输出为:
***a=2
C.输出为:
###b=2
D.输出为:
***a=2###b=2
C
单选题
若变量都已正确说明,则以下程序段输出为()。
a=10;b=50;c=30;
if(a>b)a=b;
b=c;c=a;
printf(“a=%db=%dc=%d\n”,a,b,c);
A.a=10b=50c=10
B.a=10b=30c=10
C.a=50b=30c=10
D.a=50b=30c=50
B
单选题
以下程序输出的结果是()。
#include<stdio.h>
main()
{inti=0,j=0,a=6;
if((++i>0)||(++j>0))a++;
printf(“i=%d,j=%d,a=%d\n”,i,j,a);
}
A.i=0,j=0,a=6
B.i=1,j=1,a=7
C.i=1,j=0,a=7
D.i=0,j=1,a=7
C
单选题
以下叙述中正确的是()。
A.在对一个C程序进行编译的过程中,可发现注释中的拼写错误。
B.在C程序中,main()函数必须位于程序的最前面。
C.C语言本身没有输入输出语句。
D.C程序的基本单位是语句。
C
单选题
a的初值为10,执行表达式语句a+=a-=a*a;后,a的值为()。
A.-80
B.-180
C.-90
D.-100
B
单选题
在C语言中,设a和x都为整型变量,执行赋值表达式x=(a=3,6*3)后,x的值为()。
A.54
B.3
C.18
D.21
C
单选题
设x和y均为int型变量,则执行下面的循环后,y值为()。
for(y=1,x=1;y<=50;y++)
{if(x>=10)break;
if(x%2==1){x+=4;continue;}}
A.2
B.4
C.6
D.8
B
单选题
设有如下程序段,其结果是()。
inta=100,b=100;
for(;a!
=b;++a,b++)
printf(“---\n”);
A.输出---
B.输出100行---
C.死循环
D.该for循环一次也不执行
D
单选题
整型变量a的取值围为闭区间[-1,10]或开区间(20,40),则正确表示的逻辑表达式为()。
A.–1<=a<=10|20<a<40
B.(–1<=a&&a<=10)|(20<a&&a<40)
C.(–1<=a&&a<=10)||(20<a&&a<40)
D.–1<=a<=10||20<a<40
C
单选题
若有代数表达式(5ae)/(bc),则不正确的C语言表达式()。
A.a/b/c*e*5
B.5*a*e/b/c
C.5*a*e/b*c
D.a*e/c/b*5
C
单选题
以下不符合C语言语法的赋值表达式是()。
A.d=9+e,e++,d+9
B.k=i==j
C.n1+=n2+3
D.a=b+c=a+7
D
单选题
若int类型占两个字节,则以下语句输出为()。
intk=-1;
printf("%d,u%\n",k,k);
A.-1,-1
B.-1,65536
C.-1,32768
D.-1,65535
D
单选题
假设a为float类型数,i为整型变量,则下述语句能将a中的数值保留小数点1位,即四舍五入的是()。
A.a=(a*10+0.5)/100.0
B.i=a*10+0.5,a=i/10.0
C.a=int(a*10)/10.0
D.a=(a/100+0.5)*100.0
B
单选题
设x=3,y=-4,z=6,下面表达式的结果是()。
!
(x>y)+(y!
=z)||(x+y)&&(y-z)
A.0
B.1
C.-1
D.6
B
单选题
在C语言中,逻辑值“真”用()表示?
A.true
B.正数
C.非0整数
D.非0的数
D
单选题
已知ch是字符型变量,下面正确的赋值语句是()。
A.ch=‘123’;
B.ch=‘\xff’;
C.ch=‘\08’
D.ch=“\”
B
单选题
若有以下说明和语句,则输出结果是()。
charsp[]="\x69\082\n";
printf("%d",strlen(sp));
A.3
B.5
C.1
D.字符串中有非法字符,输出值不定
B
单选题
若有变量说明:
chars,s1[20];执行语句:
s="student";s1=s;正确的叙述是()。
A.二个语句都不正确
B.s所指向的字符串和s1的值都是"student"
C.第一个语句正确,而第二个语句不正确
D.第二个语句正确,而第一个语句不正确
A
单选题
变量的有效围与其定义位置有关,(),其作用域在整个源程序文件中都有效。
A.在第一个函数中定义的变量
B.在定义第一个函数之前所定义的变量
C.在主函数中定义的变量
D.在函数中定义的静态变量
B
单选题
若程序中定义了以下函数
doublemyadd(doublea,doubleB)
{return(a+B);}
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是()。
A.doublemyadd(doublea,B);
B.doublemyadd(double,double);
C.doublemyadd(doubleb,doubleA);
D.doublemyadd(doublex,doubley);
A
单选题
有以下程序
voidf(intv,intw)
{intt;
t=v;v=w;w=t;
}
main()
{intx=1,y=3,z=2;
if(x>y)f(x,y);
elseif(y>z)f(y,z);
elsef(x,z);
printf(“%d,%d,%d\n”,x,y,z);
}
执行后输出结果是()。
A.1,2,3
B.3,1,2
C.1,3,2
D.2,3,1
C
单选题
若有宏定义与变量说明如下:
#defineX5
#defineYX+1
#defineZY*X/2
inta;a=Y;
则执行以下printf语句后输出的结果是()。
Printf("%d%d\n",Z,--a);
A.75
B.126
C.125
D.76
A
单选题
数组名作为参数传递给函数,此时作为实在参数的数组名被处理为()。
A.该数组的长度
B.该数组的元素个数
C.该数组中各元素的值
D.该数组的首地址
D
单选题
执行完下面的程序段后,屏幕显示的容为()。
main()
{inta=2,i;
for(i=0;i<3;i++)printf("%d",f(a));
}
f(inta)
{intb=0;
staticintc=3;
b++;
c++;
return(a+b+c);
}
A.777
B.777
C.789
D.789
C
单选题
以下描述中,正确的是()。
A.调用函数时,实参可以是表达式
B.调用函数时,将为形参分配存单元
C.调用函数时,实参与形参的原型必须一致
D.调用函数时,实参与形参可以用存单元
A
单选题
在C语言中,引用数组元素时,其下标的数据类型允许是()。
A.整型常量
B.整型表达式
C.整型常量或整型表达式
D.任何类型的表达式
C
单选题
有语句charstr1[10],str2[10]={"books"};则能将字符串books赋给数组str1的正确语句是()。
A.str1={"Books"};
B.strcpy(str1,str2);
C.str1=str2;
D.strcpy(str2,str1);
B
单选题
以下函数调用中有()个实参。
expd((a1,a2,a3),(a4,a5),a7,a8)
A.4个
B.3个
C.8个
D.5个
A
单选题
C语言的编译系统对宏命令是()时候处理的。
A.在程序运行
B.在程序连接时
C.和源程序其它C语言同时进行编译时
D.对源程序其它成份正式编译之前进行处理的
D
单选题
设有定义:
inta,*pA=&a;以下scanf语句中能正确为变量a读入数据的是()。
A.scanf(“%d”,pA);
B.scanf(“%d”,A);
C.scanf(“%d”,&pA);
D.scanf(“%d”,*pA);
A
单选题
若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是()。
A.a,point,*&a
B.&*a,&a,*point
C.*&point,*point,&a
D.&a,&*point,piont
D
单选题
有以下程序
main()
{char*p[10]={“abc”,”aabdfg”,”dcdbe”,”abbd”,”cd”};
printf(“%d\n”,strlen(p[4]));
}
执行后输出结果是()。
A.2
B.3
C.4
D.5
A
单选题
C语言结构体类型变量在程序执行期间()。
A.所有成员一直驻留在存中
B.只有一个成员驻留在存中
C.部分成员驻留在存中
D.没有成员驻留在存中
A
单选题
以下对C语言中共用体类型数据的叙述()的叙述是正确的。
A.可以对共