大学C语言练习题及答案合集.docx

上传人:b****5 文档编号:7665106 上传时间:2023-01-25 格式:DOCX 页数:51 大小:49.29KB
下载 相关 举报
大学C语言练习题及答案合集.docx_第1页
第1页 / 共51页
大学C语言练习题及答案合集.docx_第2页
第2页 / 共51页
大学C语言练习题及答案合集.docx_第3页
第3页 / 共51页
大学C语言练习题及答案合集.docx_第4页
第4页 / 共51页
大学C语言练习题及答案合集.docx_第5页
第5页 / 共51页
点击查看更多>>
下载资源
资源描述

大学C语言练习题及答案合集.docx

《大学C语言练习题及答案合集.docx》由会员分享,可在线阅读,更多相关《大学C语言练习题及答案合集.docx(51页珍藏版)》请在冰豆网上搜索。

大学C语言练习题及答案合集.docx

大学C语言练习题及答案合集

C语言第1、2章练习题

一、选择题

1.下列运算符中,()结合性从左到右。

A.三目B.赋值C.比较D.单目

2.下列for循环的次数为():

for(i=0,x=0;!

x&&i<=5;i++)

A.5B.6C.1D.无限

3.下述关于循环体的描述中,()是错误的。

A.循环体中可以出现break语句和continue语句;B.循环体中还可以出现循环语句;

C.循环体中不能出现goto语句;D.循环体中可以出现开关语句。

4.下列变量名中,()是合法的。

A.CHINA;B.student-num;C.doubleD.A+b

5.有以下程序段:

intn=0,p;  do{scanf(”%d”,&p);n++;}while(p!

=12345&&n<3);

此处do-while循环的结束条件是()。

A.p的值不等于12345并且n的值小于3B.p的值等于12345并且n的值大于等于3

C.p的值不等于12345或者n的值小于3D.p的值等于12345或者n的值大于等于3

6.若有定义:

inta=8,b=5,C;,执行语句C=a/b+0.4;后,c的值为()

A.1.4B.1C.2.0D.2

7.以下程序中,while循环的循环次数是()

voidmain(){

inti=0;

while(i<10){

if(i<1)continue;

if(i==5)break;

i++;}.....

A.1B.10C.6D.死循环,不能确定次数

8.下列while循环的执行次数是()while(i=0)i--;

A.0B.1C.5D.死循环

9.以下说法中正确的是:

()

A.C语言程序总是从第一个的函数开始执行;

B.在C语言程序中,要调用的函数必须在main()函数中定义;

C.C语言程序总是从main()函数开始执行;

D.C语言程序中的main()函数必须放在程序的开始部分。

10.以下程序的输出结果是:

()

voidmain(){

intx=10,y=10;

printf("%d%d\n",x--,--y);

}

A.1010B.99C.910D.109

11.inta=1,b=3;,则下列表达式的结果为“真”的是:

()

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{

printf("%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>=y)&(y>=z)

21.若c为char类型变量,能正确判断出c为小写字母的表达式是()

A)'a'<=c<='z'B)(c>='a')||(c<='z')C)c>='a'||c<='z'D)c<='z'&&c>='a'

22.下面程序执行后输出sum的值是()

A)15B)14C)0D)不确定

voidmain()

{inti,sum;

for(i=0;i<6;i++)sum+=i;

printf("%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=!

a&&!

b||!

c;

printf(“%d”,d);

}

 

3.

voidmain(){

inta=0,i;

for(i=1;i<5;i++){

switch(i){

case0:

case3:

a+=2;

case1:

case2:

a+=3;

default:

a+=5;

}

}

printf(“%d”,a);

}

 

5.从键盘输入1325。

voidmain(){

intn1,n2;

scanf("%d",&n2);

while(n2!

=0){

n1=n2%10;

n2=n2/10;

printf("%d",n1);}

}

 

7.

voidmain(){

ints,i;

for(s=0,i=1;i<3;i++,s+=i);

printf("%d\n",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;}

printf("%d\n",a);

}

 

(10)=t;}

printf(“%f”,sum);

}

四、完成程序(复习单数题)。

1.程序的功能是:

分别计算1到10之间奇数之和及偶数之和

voidmain(){

inta,b,c,i;a=c=0;

for(i=0;i<=10;i+=2){

a+=i;

b=

(1);

c+=b;}

printf("偶数之和=%d\n",a);

printf("奇数之和=%d\n",

(2));}

 

7.猴子吃桃问题。

猴子第一天摘下若干个桃子,当即吃了一半多一个。

第二天早上又将剩下的桃子吃掉一半多一个。

以后每天早上都吃掉前一天剩下的一半多一个。

到第5天早上吃时,只剩下一个桃子。

求第一天共摘了多少个桃子。

voidmain(){

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

voidmain(){

intm,i,k;

scanf("%d",&m);

k=sqrt(m);

for(i=2;i<=k;i++)

if((5))break;

if((6))printf("%d是素数\n",m)

elseprintf("%d不是素数\n",m);}

 

 

五、程序设计题

1.求1-5的阶乘之和。

n!

=(n-1)!

*nsum:

和。

初值为0。

factorial:

积。

初值为1。

#include

voidmain()

{inti,factorial=1,sum=0;

for(i=1;i<=5;i++){

factorial*=i;

sum+=factorial;

}

printf(“%d”,sum);

}

3.输入两个正整数m和n,用辗转相除法求最大公约数和最小公倍数。

(选做)

voidmain(){

inta,b,m,n,temp;

printf("Pleaseinputthetwonumber:

\n");

scanf("%d,%d",&m,&n);

if(m

{temp=m;m=n;n=temp;}

a=m;b=n;

while(b!

=0)/*a中放的是最大公约数*/

{temp=a%b;a=b;b=temp;}

printf("最大公约数是:

%d\n",a);

printf("最小公倍数是:

%d\n",m*n/a);

}

 

一、选择题

1

2

3

4

5

6

7

8

9

10

C

B

C

A

D

B

D

A

C

D

11

12

13

14

15

16

17

18

19

20

D

B

B

C

C

D

B

B

D

A

21

22

23

D

D

D

二、判断题

1

2

3

4

5

6

7

8

9

10

11

F

F

F

T

F

F

F

T

T

F

F

三、读程序

1

2

3

4

5

6

7

8

1

sum=15

31

1

5231

0

5

*#*#*#$

9

10

11

12

8

12369

四、程序填空

(1)

(2)

(3)

(4)

(5)

i+1

c

i<10

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>0

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','e','s','t'};

(C)chars3[20]="Ctest";(D)char*s4="Ctest\n"

5.若有说明:

inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是:

(A)i=*p;(B)*p=*&j;(C)i=&j;(D)i=**p;

6.下面各语句行中,不能正确进行字符串操作的语句行是:

(A)charst[10]={"abcde"};(B)chars[5]={'a','b','c','d','e'};

(C)char*s;s="abcde";(D)char*s;scanf("%s",s);

7.设有如下的程序段,执行上面的程序段后,*(ptr+5)的值为:

charstr[]="Hello";char*ptr;ptr=str;

(A)'o'(B)'\0'(C)不确定的值(D)'o'的地址

8.请选出以下语句的输出结果

printf("%d\n",strlen("\t\"\065\xff\n"));

(A)5(B)14(C)8(D)输出项不合法,无正常输出

9.以下程序段给数组所有的元素输入数据,请选择正确答案填入。

main()

{inta[10],i=0;

while(i<10)scanf("%d",________);

┇}

(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

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;

for(i=0;i<3;i++)

n[i]=0;

k=2;

for(i=0;i

for(j=0;j

n[j]=n[i]+1;

printf("%d\n",n[1]);

}

读程序(复习单数题)。

1.

voidmain(){

char*p="abcd\0efgh\0";

printf("%d",strlen(p));

}

 

3.

voidmain(){

charb[]="Hello,you";

b[5]=b[9];

printf("%s\n",b);

}

7.voidmain(){

intx[]={10,20,30,40,50,60,70,80,90,100};

ints,i,*p;

s=0;p=x;

for(i=1;i<10;i+=2)

s+=*(p+i);

printf("sum=%d\n",s)

}

9.

voidmain(){

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;

for(i=0;i<=n;i++)

printf("%3d",a[i]);

}

13.

#include

voidmain()

{char*p1,*p2,str[50]=“ABCDEFG”;

p1=“abcd”;p2=“efgh”;

strcpy(str+1,p2+1);

strcpy(str+3,p1+3);

printf(“%s”,str);

}

15.

#include

#include

voidmain(){

chars1[20]="abcd",s2[20]="ABCD",

str[20]="xyz";

char*p1=s1,*p2=s2;

strcat(p1,p2+1);

strcpy(str+2,p1);

printf("%s\n",str);

}

11.

#include

voidmain(){

chararr[2][4];

strcpy(arr[0],"you");

strcpy(arr[1],"me");

arr[0][3]='&';

printf("%s\n",*arr);

}

填空题

1.已知字符’A’的ACSII码值为65,以下语句的输出结果是:

B_

   char ch=’B’;

   printf("%c\n",ch++);

2.指针变量的类型用来指定_该指针变量可以指向的变量___的类型;

3.有如下程序段

int*p,a=10,b=1;

p=&a;a=*p+b;

执行该程序段后,a的值为:

_11___;

4.下面程序输出结构体变量sz所占存储单元的字节数。

structst{charname[20];floatscore;};

main()

{structstsz;

printf("szsize:

%d\n",sizeof(structst/sz));

}

三、编程题目

1.编写一个程序,输入一个整形数组array,将该数组的最后一个元素移到第0个位置,其它元素后移一个位置。

在main中将该数组输出。

不要定义辅助数组。

voidmain(){

intarray[10];

inti,t;

for(i=0;i<10;i++)

scanf("%d",&array[i]);

t=array[9];

for(i=9;i>0;i--)

array[i]=array[i-1];

array[0]=t;

for(i=0;i<10;i++)

printf("%d",array[i]);

}

}

2.有一个3×4的矩阵,要求编程序求出其中值

最大的那个元素的值,以及其所在的行号和列号。

voidmain()

{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;i<=2;i++)

for(j=0;j<=3;j++)

if(a[i][j]>max)

{max=a[i][j];row=i;colum=j;}

printf("max=%d,row=%d,colum=%d\n",max,row,colum);

}

一、选择题

1

2

3

4

5

6

7

8

9

10

C

D

C

A

B

D

B

A

A

B

11

12

13

14

15

16

17

18

19

20

B

A

D

A

C

C

二、写出程序运行结果

1

2

3

4

5

6

7

8

4

56789

Hello

6

3

4,98

sum=300

13ff58

13ff70

13ff5c

9

10

11

12

13

14

15

1345

5,15.000000

you&me

AQM

Afgd

cdBCD

xyabcdBCD

三、填空题

1

2

3

4

B

该指针变量可以指向的变量

11

structst/sz

第5-7章练习题

一.选择

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1