C练习题汇总.docx

上传人:b****3 文档编号:13245469 上传时间:2023-06-12 格式:DOCX 页数:38 大小:26.22KB
下载 相关 举报
C练习题汇总.docx_第1页
第1页 / 共38页
C练习题汇总.docx_第2页
第2页 / 共38页
C练习题汇总.docx_第3页
第3页 / 共38页
C练习题汇总.docx_第4页
第4页 / 共38页
C练习题汇总.docx_第5页
第5页 / 共38页
C练习题汇总.docx_第6页
第6页 / 共38页
C练习题汇总.docx_第7页
第7页 / 共38页
C练习题汇总.docx_第8页
第8页 / 共38页
C练习题汇总.docx_第9页
第9页 / 共38页
C练习题汇总.docx_第10页
第10页 / 共38页
C练习题汇总.docx_第11页
第11页 / 共38页
C练习题汇总.docx_第12页
第12页 / 共38页
C练习题汇总.docx_第13页
第13页 / 共38页
C练习题汇总.docx_第14页
第14页 / 共38页
C练习题汇总.docx_第15页
第15页 / 共38页
C练习题汇总.docx_第16页
第16页 / 共38页
C练习题汇总.docx_第17页
第17页 / 共38页
C练习题汇总.docx_第18页
第18页 / 共38页
C练习题汇总.docx_第19页
第19页 / 共38页
C练习题汇总.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C练习题汇总.docx

《C练习题汇总.docx》由会员分享,可在线阅读,更多相关《C练习题汇总.docx(38页珍藏版)》请在冰点文库上搜索。

C练习题汇总.docx

C练习题汇总

一、判断

变量根据其作用域的范围可以分作局部变量和全局变量.答案:

Y

C语言的switch语句中case后只能为整型或字符型常量或常量表达式答案:

Y

while和do…while循环不论什么条件下它们的结果都是相同的.答案:

N

逻辑表达式-5&&!

8的值为1.答案:

N

循环结构中的continue语句是使整个循环终止执行答案:

N

若有说明intc;则while(c=getchar());是正确的C语句。

答案:

Y

表达式(j=3,j++)的值是4.答案:

N

C语言中"%"运算符的运算对象必须是整型.答案:

Y

在C程序中,函数既可以嵌套定义,也可以嵌套调用答案:

N

inti=20;

switch(i/10)

{

case2:

printf("A");

case1:

printf("B");

}

的输出结果为A。

答案:

N

两个字符串中的字符个数不相同时也可进行字符串大小的比较答案:

Y

char*p="girl";的含义是定义字符型指针变量p,p的值是字符串"girl"。

答案:

N

如果有一个字符串,其中第十个字符为'\n',则此字符串的有效字符为9个。

答案:

N

如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准。

答案:

Y

C语言中只能逐个引用数组元素而不能一次引用整个数组。

答案:

Y

inta[3][4]={{1},{5},{9}};它的作用是将数组各行第一列的元素赋初值,其余元素值为0。

答案:

Y

C语言的函数可以嵌套定义.答案:

N

函数strlen("ASDFG\n")的值是7。

答案:

N

二、单项选择

1、若有说明:

inta[3][4]={0};则下面正确的叙述是()。

A:

只有元素a[0][0]可得到初值0

B:

此说明语句不正确

C:

数组a中各元素都可得到初值,但其值不一定为0

D:

数组a中每个元素均可得到初值0

答案:

D

2、若有下列定义,则对a数组元素a[2]地址的正确引用是()。

inta[5],*p=a;

A:

*(p+5)

B:

*p+2

C:

*(a+2)

D:

*&a[5]

答案:

C

3、为表示关系x≥y≥z,应使用C语言表达式

A:

(x>=y)&&(y>=z)

B:

(x>=y)AND(y>=z)

C:

(x>=y>=z)

D:

(x>=z)&(y>=z)

答案:

A

4、设有说明:

charc;intx;doublez;则表达式c*x+z值的数据类型为

A:

float

B:

int

C:

char

D:

double

答案:

D

5、能正确表示逻辑关系:

"a≥10或a≤0"的C语言表达式是

A:

a>=10ora<=0

B:

a>=0|a<=10

C:

a>=10&&a<=0

D:

a>=10||a<=0

答案:

D

6、已知p,p1为指针变量,a为数组名,j为整型变量,下列赋值语句中

不正确的是()。

A:

p=&j,p=p1;

B:

p=a;

C:

p=&a[j];

D:

p=10;

答案:

D

7、C语言的if语句嵌套时,if与else的配对关系是()。

A:

每个else总是与它上面的最近的if配对

B:

每个else总是与最外层的if配对

C:

每个else与if的配对是任意的

D:

每个else总是与它上面的if配对

答案:

A

8、已知x=43,ch='A',y=0;则表达式(x>=y&&ch<'B'&&!

y)的值是()。

A:

0

B:

语法错

C:

1

D:

"假"

答案:

C

9、如果inta=2,b=3,c=0,下列描述正确的是

A:

a>b!

=c和a>(b!

=c)的执行顺序是一样的

B:

!

a!

=(b!

=c)表达式的值为1

C:

a||(b=c)执行后b的值为0

D:

a&&b>c的结果为假

答案:

B

10、C语言规定,在一个源程序中,main函数的位置()。

A:

必须在最开始

B:

必须在系统调用的库函数的后面

C:

可以任意

D:

必须在最后

答案:

C

11、下列字符序列中,不可用作C语言标识符的是()。

A:

b70

B:

#ab

C:

symbol

D:

a_1

答案:

B

12、在C语言中,能代表逻辑值“真”的是()。

A:

True

B:

大于0的数

C:

非0整数

D:

非0的数

答案:

D

13、任何一个C语言的可执行程序都是从____开始执行的.

A:

程序中的第一个函数

B:

main()函数的入口处

C:

程序中的第一条语句

D:

编译预处理语句

答案:

B

14、下列语句中,不正确的是()。

A:

chara[2]={1,2};

B:

inta[2]={'1','2'};

C:

chara[2]={'1','2','3'};

D:

chara[2]={'1'};

答案:

C

15、若有说明:

int*p1,*p2,m=5,n;以下均是正确赋值语句的选项是()。

A:

p1=&m;p2=&p1

B:

p1=&m;p2=&n;*p1=*p2;

C:

p1=&m;p2=p1;

D:

p1=&m;*p2=*p1;

答案:

C

16、在C语言中,调用函数除函数名外,还必须有()。

A:

函数预说明

B:

实际参数

C:

()

D:

函数返回值

答案:

C

17、以下叙述中正确的是()。

A:

C程序中注释部分可以出现在程序中任意合适的地方

B:

花括号“{“和”}”只能作为函数体的定界符

C:

构成C程序的基本单位是函数,所有函数名都可以由用户命名

D:

分号是C语句之间的分隔符,不是语句的一部分

答案:

A

18、变量p为指针变量,若p=&a,下列说法不正确的是()。

A:

&*p==&a

B:

*&a==a

C:

(*p)++==a++

D:

*(p++)==a++

答案:

D

 

19、inta=3,b=2,c=1;

if(a>b>c)a=b;

elsea=c;

则a的值为()。

A:

3

B:

2

C:

1

D:

0

答案:

C

20、在以下给出的表达式中,与do--while(E)语句中的(E)不等价的

表达式是()。

A:

(!

E==0)

B:

(E>0||E<0)

C:

(E==0)

D:

(E!

=0)

答案:

C

 

21、若用数组名作为函数的实参,传递给形参的是()。

A:

数组的首地址

B:

数组第一个元素的值

C:

数组中全部元素的值

D:

数组元素的个数

答案:

A

22、putchar函数可以向终端输出一个()。

A:

整型变量表达式值

B:

实型变量值

C:

字符串

D:

字符或字符型变量值

答案:

D

 

三、程序填空共2题(共计25分)

第1题

功能:

从键盘上输入一个正整数,判断其是否是回文数。

说明:

所谓回文数是指顺序读与反序读都是一样的数,如121、25852都是回文数。

将整数的各位依次存入数组a中,然后再进行判断

#include

intmain()

{

intnum,a[10],r;

inti=0,j,flag=1;/*flag作为是否为回文的标志*/

scanf("%d",&num);

if(num<=0)return-1;

do

{

r=num%10;

/***********SPACE***********/

【?

】;

num=num/10;

i++;

}

while(num%10!

=0);

for(j=0,i--;i>=j;i--,j++)

if(a[j]==a[i])

/***********SPACE***********/

【?

】;

else

{

flag=0;

break;

}

/***********SPACE***********/

if(【?

】)

printf("是回文\n");

else

printf("不是回文\n");

return0;

}

答案:

=======(答案1)=======

a[i]=r

=======(答案2)=======

continue或flag=1

=======(答案3)=======

flag或flag!

=0或flag==1

=========或=========

i0

第2题

功能:

用冒泡排序法对数组a进行由小到大的排序。

#include

voidfun(inta[],intn)

{

inti,j,t;

/***********SPACE***********/

for(j=0;【?

】;j++)

/***********SPACE***********/

for(i=0;【?

】;i++)

/***********SPACE***********/

if(【?

】)

{

t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}

}

intmain()

{

inti,a[10]={3,7,5,1,2,8,6,4,10,9};

/***********SPACE***********/

【?

】;

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

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

return0;

}

答案:

=======(答案1)=======

j<=n-1或j

=======(答案2)=======

i

=======(答案3)=======

a[i]>a[i+1]

=======(答案4)=======

fun(a,10)

第3题(10.0分)题号:

76

功能:

找出数组中最大值和此元素的下标,数组元素的值由键盘

输入。

#include

voidmain()

{

inta[10],*p,*s,i;

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

/***********SPACE***********/

scanf("%d",【?

】);

/***********SPACE***********/

for(p=a,s=a;【?

】<10;p++)

/***********SPACE***********/

if(*p【?

】*s)s=p;

/***********SPACE***********/

printf("max=%d,index=%d\n",【?

】,s-a);

}

答案:

=======(答案1)=======

a+i或&a[i]

=======(答案2)=======

p-a

=======(答案3)=======

>

=======(答案4)=======

*s

第4题(15.0分)题号:

27

功能:

输出100到1000之间的各位数字之和能被15整除的所有数,

输出时每10个一行。

#include

intmain()

{

intm,n,k,i=0;

for(m=100;m<=1000;m++)

{

/***********SPACE***********/

【?

】;

n=m;

do

{

/***********SPACE***********/

k=k+【?

】;

n=n/10;

}

/***********SPACE***********/

【?

】;

if(k%15==0)

{

printf("%5d",m);i++;

/***********SPACE***********/

if(i%10==0)【?

】;

}

}

return0;

}

答案:

=======(答案1)=======

k=0

=======(答案2)=======

n%10或n-n/10*10

=======(答案3)=======

while(n>0)或while(n!

=0)或while(n)

=======(答案4)=======

printf("\n")或puts("\n")或putchar('\n')

第5题

功能:

用函数调用方式,实现字符串的复制。

#include

voidstring_copy(char*str_from,char*str_to)

{

inti=0;

/***********SPACE***********/

for(;(*(【?

】)=*(str_from+i))!

='\0';i++);

}

intmain()

{

staticchararray_str1[20]="iamateacher.";

chararray_str2[20];

/***********SPACE***********/

【?

】(array_str1,array_str2);

/***********SPACE***********/

【?

】("array_str2=%s\n",array_str2);

return0;

}

 

答案:

=======(答案1)=======

str_to+i

=======(答案2)=======

string_copy

=======(答案3)=======

printf

第6题

功能:

以下程序是用选择法对10个整数按从小到大顺序排序。

说明:

每一趟均找到未排好序的数中的最小数的位置,然后将其交换到正确的位置

#include

#defineN10

intmain()

{

inti,j,k,t,a[N];

for(i=0;i<=N-1;i++)

scanf("%d",&a[i]);/*输入10个整数*/

for(i=0;i

{

/***********SPACE***********/

【?

】;

/***********SPACE***********/

for(j=i+1;【?

】;j++)

if(a[j]

/***********SPACE***********/

if(【?

】)

{

t=a[i];

a[i]=a[k];

a[k]=t;

}

}

printf("outputthesortedarray:

\n");

for(i=0;i<=N-1;i++)

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

printf("\n");

return0;

}

答案:

=======(答案1)=======

k=i

=======(答案2)=======

j

=======(答案3)=======

k!

=i或k>i

第7题

功能:

打印出如下字母塔。

最后一行字母前无空格

A

BBB

CCCCC

DDDDDDD

#include

intmain()

{

inti,j,k;

/***********SPACE***********/

for(i=0;【?

】;i++)

{

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

printf("");

/***********SPACE***********/

for(k=1;k<=【?

】;k++)

/***********SPACE***********/

printf(【?

】);

printf("\n");

}

return0;

}

答案:

=======(答案1)=======

i<=3或i<4

=======(答案2)=======

2*i+1

=======(答案3)=======

"%c",'A'+i或"%c",65+i

 

第8题

功能:

从读入的整数数据中,统计大于零的整数个数和小于零的

整数个数。

用输入零来结束输入,程序中用变量i统计大于

零的整数个数,用变量j统计小于零的整数个数。

#include

intmain()

{

intn,i,j;

printf("EnteriNTnumber,with0toend\n");

i=j=0;

scanf("%d",&n);

while(n!

=0)

{

/***********SPACE***********/

if(n>0)i=【?

】;

/***********SPACE***********/

if(n<0)j=【?

】;

/***********SPACE***********/

scanf("%d",【?

】);

}

printf("i=%4d\n",i,j);

return0;

}

答案:

=======(答案1)=======

i+1

=======(答案2)=======

j+1

=======(答案3)=======

&n

程序改错

第1题

功能:

求出数组中最大数和次最大数,并把最大数和a[0]中的数

对调、次最大数和a[1]中的数对调。

#include

#defineN20

voidfun(inta[],intn)

{

inti,m,t,k;

for(i=0;i<2;i++)/*两次循环,分别找最大数和次大数*/

{

/**********FOUND**********/

m=0;

for(k=i;k

/**********FOUND**********/

if(a[k]>a[m])k=m;

t=a[i];a[i]=a[m];a[m]=t;

}

}

intmain()

{

intb[N]={11,5,12,0,3,6,9,7,10,8},n=10,i;

for(i=0;i

printf("\n");

/**********FOUND**********/

fun(intb[N],n);

for(i=0;i

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

printf("\n");

return0;

}

答案:

=======(答案1)=======

m=i;

=======(答案2)=======

if(a[k]>a[m])m=k;

=======(答案3)=======

fun(b,n);

第2题

功能:

利用条件运算符的嵌套来完成此题:

学习成绩>=90分的同

学用A表示,70-89分之间的用B表示,60-69分之间的用C表示,

60分以下的用D表示。

 

#include

intmain()

{

intscore;

/**********FOUND**********/

char*grade;

printf("pleaseinputascore\n");

/**********FOUND**********/

scanf("%d",score);

if(score<0&&score>100)

printf("超出范围!

");

else

{

/**********FOUND**********/

switch(score)

{

case9:

case10:

grade='A';

break;

case7:

case8:

grade='B';

break;

case6:

grade='C';

break;

/***********FOUND***********/

caseelse:

grade='D';

}

}

printf("%dbelongsto%c\n",score,grade);

return0;

}

答案:

=======(答案1)=======

chargrade;

=======(答案2)=======

scanf("%d",&score);

=======(答案3)=======

switch(score/10)

=======(答案4)=======

default:

=========或=========

case0:

case1:

case2:

case3:

case4:

case5:

 

第2题(15.0分)题号:

153

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

编写函数求2!

+4!

+6!

+8!

------------------------------------------------------*/

#include

intsum(intn)

{

inti,j,t,s;

/**********FOUND**********/

s=1;

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

{

t=1;

/**********FOUND**********/

for(j=1;j<=n;j++)

t=t*j;

s=s+t;

}

/**********FOUND**********/

return(t);

}

intmain()

{

printf("thissum=%ld\n",sum(8));

return0;

}

答案:

=======(答案1)=======

s=0;

=======(答案2)=======

for(j=1;j<=i;j++)

=======(答案3)=======

returns;

第3题(10.0分)题号:

92

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

求二分之一的圆面积,函数通过形参得到圆的半径,函数

返回二分之一的圆面积。

例如:

输入圆的半径值:

19.527输出为:

s=598.950017。

------------------------------------------------------*/

#include

#include

/**********FOUND**********/

doublefun(r)

{

doubles;

/**********FOUND**********/

s=1/2*3.14159*r*r;

/**********FOUND**********/

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2