大学C语言练习题及答案合集Word文档下载推荐.docx
- 文档编号:20788949
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:51
- 大小:49.29KB
大学C语言练习题及答案合集Word文档下载推荐.docx
《大学C语言练习题及答案合集Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《大学C语言练习题及答案合集Word文档下载推荐.docx(51页珍藏版)》请在冰豆网上搜索。
,则下列表达式的结果为“真”的是:
A.a>
=2||!
b&
b<
4B.b-a&
a||a-b&
a/b
C.a-!
a%b&
b-!
b%bD.a+b&
a-b&
b-3&
a||b
12.请选出合法的C语言赋值语句()
A.a=b=58B.i++;
C.a=58,b=58D.k=int(a+b);
13.若有以下定义和语句:
charc1='
b'
c2='
e'
;
printf("
%d,%c\n"
c2-c1,c2-'
a'
+'
A'
);
则输出结果是:
A.2,MB.3,EC.2,ED.输出项与对应的格式控制不一致,输出结果不确定。
14.运行以下程序段后变量a的值是:
inta=0,b=3;
switch(a+b&
a&
b++&
a++)
{
case0:
a++;
case1:
b++;
case2:
a+=b;
break;
case3:
a-=b;
default:
a;
}
(A)-3(B)1(C)5(D)6
15.在以下一组运算符中,优先级最高的运算符是:
(A)<
=(B)=(C)%(D)&
16.设inta=12,则执行完语句a+=a-=a*a后,a的值是()
(A)552(B)264(C)144(D)-264
17.C语言中基本数据类型包括()
(A)整型、实型、逻辑型(B)整型、实型、字符型
(C)整型、字符型、逻辑型(D)整型、实型、逻辑型、字符型
18.执行下面程序片段的结果是()
intx=23;
do{
%2d"
x--);
}while(!
x);
(A)打印出321(B)打印出23(C)不打印任何内容(D)陷入死循环
19.若k是int型变量,且有下面的程序片段:
k=-3;
if(k<
=0)printf("
####"
)
elseprintf("
"
上面程序片段的输出结果是
(A)####(B)&
(C)####&
(D)有语法错误,无输出结果。
20.为表示关系x≥y≥z,应使用C语言表达式()
(A)(x>
=y)&
(y>
=z)(B)(x>
=y)AND(y>
=z)(C)(x>
=y>
=z)(D)(x>
=z)
21.若c为char类型变量,能正确判断出c为小写字母的表达式是()
A)'
<
=c<
='
z'
B)(c>
)||(c<
)C)c>
||c<
D)c<
&
c>
22.下面程序执行后输出sum的值是()
A)15B)14C)0D)不确定
voidmain()
{inti,sum;
for(i=0;
i<
6;
i++)sum+=i;
%d\n"
sum);
23.以下叙述正确的是:
A)可以把include和if定义为用户标识符
B)可以把include定义为用户标识符,但不能把if定义为用户标识符
C)可以把if定义为用户标识符,但不能把include定义为用户标识符
D)include和if都不能定义为用户标识符
二、判断下列描述的正确性,对者划√,错者划╳。
1.switch语句中必须有break语句,否则无法退出switch语句。
2.C中标识符内的大小写字母是没有区别的。
3.隐含的类型转换都是保值映射,显式的类型转换都是非保值映射。
4.运算符的优先级和结合性可以确定表达式的计算顺序。
5.while循环语句的循环体至少执行一次。
6.开关语句不可以嵌套,在开关语句的语句序列中不能再有开关语句。
7.C语言在编译时不检查语法;
8.在C语言中,”A”是错误的char类型的常数;
9.字符(char)型数据在微机内存中的存储形式是ASCII码;
10.C语言的源程序不必通过编译就可以直接运行;
11.“Int”是合法的C语言关键字;
三、写出下列程序的运行结果。
(复习单数题)
1.
voidmain(){
inta=4,b=5,c=0,d;
d=!
b||!
c;
printf(“%d”,d);
3.
voidmain(){
inta=0,i;
for(i=1;
5;
i++){
switch(i){
case0:
case3:
a+=2;
case1:
case2:
a+=3;
default:
a+=5;
printf(“%d”,a);
5.从键盘输入1325。
intn1,n2;
scanf("
%d"
&
n2);
while(n2!
=0){
n1=n2%10;
n2=n2/10;
n1);
}
7.
ints,i;
for(s=0,i=1;
3;
i++,s+=i);
s);
9.
voidmain(){
inta,b;
for(a=1,b=1;
a<
=100;
a++){
if(b>
=20)break;
if(b%3==1){b+=3;
continue;
}
b-=5;
a);
(10)=t;
printf(“%f”,sum);
四、完成程序(复习单数题)。
1.程序的功能是:
分别计算1到10之间奇数之和及偶数之和
inta,b,c,i;
a=c=0;
for(i=0;
=10;
i+=2){
a+=i;
b=
(1);
c+=b;
偶数之和=%d\n"
奇数之和=%d\n"
(2));
7.猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半多一个。
第二天早上又将剩下的桃子吃掉一半多一个。
以后每天早上都吃掉前一天剩下的一半多一个。
到第5天早上吃时,只剩下一个桃子。
求第一天共摘了多少个桃子。
intday,x1,x2;
//day是天数,x1和x2表示前一天和当天剩下的桃子数
day=4;
x2=1;
//第4天剩下的桃子数
while((13)){
x1=(x2+1)*2;
//当天剩桃子数:
x2=x1/2-1
x2=(14);
(15);
printf(“桃子总数=%d”,x1);
3.判断输入的正整数是否为素数。
#include<
math.h>
intm,i,k;
,&
m);
k=sqrt(m);
for(i=2;
=k;
if((5))break;
if((6))printf("
%d是素数\n"
,m)
elseprintf("
%d不是素数\n"
,m);
五、程序设计题
1.求1-5的阶乘之和。
n!
=(n-1)!
*nsum:
和。
初值为0。
factorial:
积。
初值为1。
stdio.h>
{inti,factorial=1,sum=0;
for(i=1;
=5;
i++){
factorial*=i;
sum+=factorial;
printf(“%d”,sum);
3.输入两个正整数m和n,用辗转相除法求最大公约数和最小公倍数。
(选做)
inta,b,m,n,temp;
Pleaseinputthetwonumber:
\n"
scanf("
%d,%d"
m,&
n);
if(m<
n)//将两个数中较大的放在m中
{temp=m;
m=n;
n=temp;
a=m;
b=n;
while(b!
=0)/*a中放的是最大公约数*/
{temp=a%b;
a=b;
b=temp;
最大公约数是:
最小公倍数是:
m*n/a);
1
2
3
4
5
6
7
8
9
10
C
B
A
D
11
12
13
14
15
16
17
18
19
20
21
22
23
二、判断题
F
T
三、读程序
sum=15
31
5231
*#*#*#$
12369
四、程序填空
(1)
(2)
(3)
(4)
(5)
i+1
c
j%3
m%i==0
(6)
(7)
(8)
(9)
(10)
i==k+1
num%7==0||num%9==0
num!
=0
x/i
sum+
(11)
(12)
(13)
(14)
(15)
n/10
newnum
day>
x1
day--
第3-4章练习题
一、选择题
1.以下错误的字符串赋值或赋初值方式是:
(A)charstr1[]=”string”,str2[]=”12345678”;
strcpy(str2,str1);
(B)charstr[7]={’s’,’t’,’r’,’i’,’n’,’g’};
(C)charstr[10];
str=”string”;
(D)char*str;
str=”string”;
2.数组定义中不正确的是:
(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}};
3.以下对一维数组a正确初始化的是:
(A)inta[10]=(0,0,0,0,);
(B)inta[10]={};
(C)inta[10]={0};
(D)inta[10]=(10*2);
4.以下选项中,不能正确赋值的是:
(A)chars1[10];
s1="
Ctest"
(B)chars2[]={'
C'
'
t'
s'
};
(C)chars3[20]="
(D)char*s4="
Ctest\n"
5.若有说明:
inti,j=2,*p=&
i;
,则能完成i=j赋值功能的语句是:
(A)i=*p;
(B)*p=*&
j;
(C)i=&
(D)i=**p;
6.下面各语句行中,不能正确进行字符串操作的语句行是:
(A)charst[10]={"
abcde"
(B)chars[5]={'
'
c'
d'
(C)char*s;
s="
(D)char*s;
%s"
7.设有如下的程序段,执行上面的程序段后,*(ptr+5)的值为:
charstr[]="
Hello"
char*ptr;
ptr=str;
(A)'
o'
(B)'
\0'
(C)不确定的值(D)'
的地址
8.请选出以下语句的输出结果
strlen("
\t\"
\065\xff\n"
));
(A)5(B)14(C)8(D)输出项不合法,无正常输出
9.以下程序段给数组所有的元素输入数据,请选择正确答案填入。
main()
{inta[10],i=0;
while(i<
10)scanf("
________);
┇}
(A)a+(i++)(B)&
a[i+1](C)a+i(D)&
a[++i]
10.若有以下说明和语句,请选出哪个是对c数组元素的正确引用
intc[10],*cp;
cp=c;
(A)cp+1(B)*(cp+3)(C)**(cp+1)+3(D)*(*cp+2)
11.设有如下一段程序,执行下面的程序后,ab的值为:
int*var,ab;
ab=100;
var=&
ab;
ab=*var+10;
(A)120(B)110(C)100(D)90
12.若有以下定义:
inta[10],*p=a;
则p+4表示
A)元素a[4]的地址B)元素a[4]的值C)元素a[5]的地址D)元素a[5]的值
13.判断字符串s1是否小于字符串s2,应当使用
A)if(s1<
s2)B)if(strcmp(s1,s2))C)if(strcpy(s1,s2)<
0)D)if(strcmp(s1,s2)<
0)
14.在下面的定义语句中,错误的是
A)intn=20,a[n];
B)char*a[3];
C)chars[20]="
test"
D)inta[]={1,2};
15.对C语言字符数组的描述中错误的是:
A)字符数组可以存放字符串。
B)字符数组的字符串可以整体输入输出。
C)可以在赋值语句中通过赋值运算符对字符数组整体赋值。
D)不可以用关系运算符对字符数组中的字符串进行比较。
16.设有以下说明语句:
structstu
{inta;
floatb;
}stutype;
则下面的叙述不正确的是:
A)struct是定义结构体类型的关键字。
B)structstu是用户定义的结构体类型。
C)stutype是用户定义的结构体类型名。
D)a和b都是结构体成员名。
二、
5.voidmain(){
intn[3],i,j,k;
i++)
n[i]=0;
k=2;
for(i=0;
k;
for(j=0;
j<
j++)
n[j]=n[i]+1;
n[1]);
}
读程序(复习单数题)。
char*p="
abcd\0efgh\0"
,strlen(p));
voidmain(){
charb[]="
Hello,you"
b[5]=b[9];
%s\n"
b);
7.voidmain(){
intx[]={10,20,30,40,50,60,70,80,90,100};
ints,i,*p;
s=0;
p=x;
10;
i+=2)
s+=*(p+i);
sum=%d\n"
s)
9.
inti=1,n=3,j,k=3;
inta[5]={1,4,5};
while(i<
=n&
k>
a[i])
i++;
for(j=n-1;
j>
=i;
j--)
a[j+1]=a[j];
a[i]=k;
=n;
printf("
%3d"
a[i]);
13.
#include<
string.h>
{char*p1,*p2,str[50]=“ABCDEFG”;
p1=“abcd”;
p2=“efgh”;
strcpy(str+1,p2+1);
strcpy(str+3,p1+3);
printf(“%s”,str);
15.
chars1[20]="
abcd"
s2[20]="
ABCD"
str[20]="
xyz"
char*p1=s1,*p2=s2;
strcat(p1,p2+1);
strcpy(str+2,p1);
%s\n"
str);
11.
chararr[2][4];
strcpy(arr[0],"
you"
strcpy(arr[1],"
me"
arr[0][3]='
'
*arr);
填空题
1.已知字符’A’的ACSII码值为65,以下语句的输出结果是:
B_
char
ch=’B’;
%c\n"
ch++);
2.指针变量的类型用来指定_该指针变量可以指向的变量___的类型;
3.有如下程序段
int*p,a=10,b=1;
p=&
a=*p+b;
执行该程序段后,a的值为:
_11___;
4.下面程序输出结构体变量sz所占存储单元的字节数。
structst{charname[20];
floatscore;
};
main()
{structstsz;
szsize:
%d\n"
sizeof(structst/sz));
三、编程题目
1.编写一个程序,输入一个整形数组array,将该数组的最后一个元素移到第0个位置,其它元素后移一个位置。
在main中将该数组输出。
不要定义辅助数组。
intarray[10];
inti,t;
array[i]);
t=array[9];
for(i=9;
i>
0;
i--)
array[i]=array[i-1];
array[0]=t;
%d"
array[i]);
2.有一个3×
4的矩阵,要求编程序求出其中值
最大的那个元素的值,以及其所在的行号和列号。
{inti,j,row=0,colum=0,max;
inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
max=a[0][0];
for(i=0;
=2;
=3;
j++)
if(a[i][j]>
max)
{max=a[i][j];
row=i;
colum=j;
max=%d,row=%d,colum=%d\n"
max,row,colum);
二、写出程序运行结果
56789
Hello
4,98
sum=300
13ff58
13ff70
13ff5c
1345
5,15.000000
you&
me
AQM
Afgd
cdBCD
xyabcdBCD
三、填空题
该指针变量可以指向的变量
structst/sz
第5-7章练习题
一.选择
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学 语言 练习题 答案