C期末练习题.docx

上传人:b****6 文档编号:7582284 上传时间:2023-01-25 格式:DOCX 页数:14 大小:28.81KB
下载 相关 举报
C期末练习题.docx_第1页
第1页 / 共14页
C期末练习题.docx_第2页
第2页 / 共14页
C期末练习题.docx_第3页
第3页 / 共14页
C期末练习题.docx_第4页
第4页 / 共14页
C期末练习题.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

C期末练习题.docx

《C期末练习题.docx》由会员分享,可在线阅读,更多相关《C期末练习题.docx(14页珍藏版)》请在冰豆网上搜索。

C期末练习题.docx

C期末练习题

C语言期末练习题

一、判断题

说明:

在以下提供若干陈述中,逐一判断其正确与否,正确选择A,错误选择B。

1.在C程序中,函数既可以嵌套定义,也可以嵌套调用。

2.在C语言中常量和变量都有数据类型。

3.在所有的关系运算符(>=、>、==、!

=、<=、<)中,优先级最低的运算符是(<)。

4.continue语句只能用于循环结构。

5.表达式2.134%9不符合C语言语法。

6.运算符“=”和“&=”的优先级相同。

7.表达式!

!

4的值是4。

8.表达式strlen(“xyz\\\123”)的值为9。

9.while语句先判断循环条件,所以循环体有可能一次也不执行。

10.若x是单精度实型变量,表达式(x=11/2)的值是5.5。

11.若inta=4;执行if(a=1)a=a*5;后a的值为5。

12.C语言的运算符中,逗号(,)运算符的优先级最低。

13.表达式!

(x>0||y>0)等价于!

(x>0)&&!

(y>0)。

14.若有如下定义,inta[10],*p=a;则*(++a)和p[1]均表示数组元素a[1]。

15.设变量定义为chars[]=”china”,则数组s中有6个元素。

16.在C语言中,int和*p都是合法的用户自定义标识符。

17.在C语言中,main函数必须写在源程序的开始位置。

18.对于变量定义:

inta[8],*p=a+3;数组a的最后一个元素是p[4]。

19.运算符(-)不能作为单目运算符。

20.在C程序中,在函数内部定义的变量称为全局变量。

21.表达式m=n++的求解顺序是先计算m=n,再计算n=n+1。

22.C语言程序的三种基本结构是顺序结构、选择结构和循环结构。

23.若有如下定义inta=b=c=4;表示定义了三个整型变量a、b和c,同时给它们赋初值4。

24.表达式10>9>8的逻辑值为0。

25.若变量已正确定义,表达式x+y=z;符合C语言语法。

二、单选题

1.若已定义:

intx=4,y=4;则复合赋值表达式x/=1+y的值为_______。

A.0B.0.8C.5D.表达式非法

2.intx=6;x-=x+=x/=x;x值是________。

A.0B.1C.2D.3

3.下列叙述正确的是_______。

A.执行表达式a=b后,在内存中a和b存储单元中原有的值都将改变,a的值已由原值改变为b的值,b的值由原值变为零。

B.在赋值表达式中,赋值号右边既可以是变量也可以是任意表达式。

C.a是实型变量,C语言允许进行以下赋值a=10,因此可以这样说:

实型变量中允许存放整型值。

D.已有a=3,b=5,执行了表达式a=b,b=a之后使a中的值为5,b中的值为3。

4.下列程序段的输出结果是________。

intx=4,y=0;

if(x>2)y=1;

elseif(x<5)y=2;

elsey=3;

printf(“%d”,y);

A.3B.2C.1D.0

5.对于以下程序段,运行后x值为_______。

intx=9,a=1;

switch(a){

case1:

x-=3;

case2:

x-=4;break;

default:

x-=5;

}

A.6B.5C.2D.上述程序有语法错误

6.下列程序段的输出结果是__________。

intk=1;

switch(k){

case1:

putchar(‘P’);

case2:

putchar(‘M’);

case3:

putchar(‘Q’);

case4:

putchar(‘R’);break;

default:

putchar(‘S’);

}

A.PMQRB.PC.PMD.PMQRS

7.下列while循环,将执行________次。

i=-5;

while(++i)

printf(“%d”,i);

A.3B.4C.5D.无限次

8.若a是单精度实型变量,b是基本整形变量,以下正确的输入语句是________。

A.scanf(“%f%d”,&a,&b);

B.scanf(“%f%d”,a,b);

C.scanf(“%d%f”,&a,&b);

D.scanf(“%d%f”,a,b);

9.执行下列程序段后,k值为_______。

intk,a=1,b=2;

k=(++a==b)?

2:

3;

A.2B.3C.4D.5

10.函数f定义如下,执行语句“s=f(5);”后,s的值应为________。

intf(intm)

{staticinti=0;intsum=0;

for(;i<=m;i++)sum+=i;returnsum;

}

A.15B.14C.13D.0

11.对于以下递归函数f,调用函数f(4)的输出结果是_______。

intf(intn)

{if(n)returnf(n-1)+n;

elsereturnn;

}

A.10B.4C.0D.以上均不是

12.下列程序段的输出结果是_______。

#defineM(x,y)x/y

printf(“%d”,M(9,2+1));

A.3B.3.0C.5D.8

13.下列程序段的输出结果是________。

int*ip,i=10;

ip=&i;(*ip)--;

printf(“%d”,*ip);

A.10B.11C.9D.0

14.不正确的赋值或赋初值的方式是________。

A.charstr[5]={‘b’,‘o’,‘o’,‘k’};B.charstr[5]=”book”;

C.char*str=”book”;D.charstr[5];str=”book”;

15.下列程序段的输出结果是__________。

inta[]={2,3,4,5,6,7};

int*k=a+4;

printf(“%d”,*k++);

A.6B.7C.8D.2

16.设变量定义为:

int*ap[3],a[3];,_______是正确的赋值。

A.ap=&a[0]B.*ap=**aC.ap[0]=aD.**ap=a

17.以“写”方式打开文本文件c:

\xy.txt,下列语句中哪一个正确的___________。

A.fp=fopen(“c:

\\xy.txt”,”r”);

B.fp=fopen(“c:

\\xy.txt”,”w”);

C.fp=fopen(“c:

\\xy.txt”,”rb”);

D.fp=fopen(“c:

\xy.txt”,”w”);

18.对于以下的变量定义,语句__________在语法和语义上都是正确的。

structnode{

floatx,y;

chars[10];

}point={3.4,8.9,”bcdefgh”},*pp;

A.*pp=pointB.pp=&pointC.point=ppD.pp->x=point.y

19.定义structst

{charname[20];

longx;

floaty}student;

则变量student所占的字节数是________。

A.24B.28C.3D.26

20.若x=1,y=5则x&y的结果是_________。

A.1B.2C.5D.6

三、程序填空题

说明:

阅读下列程序说明和相应程序,在每小题提供的若干可选答案中,挑出一个正确答案。

程序1、

【程序说明】

根据下式计算

的值,要求精确到最后一项的绝对值小于10-6。

【程序】

#include

#include

voidmain()

{inti=1;

(1)

for(i=1;

(2);i++)

{(3);

s=s+item;}

printf(“s=%f\n”,s);

}

1.A.doubleitem,s;B.doubleitem=1,s;

C.doubleitem,s=0;D.doubleitem,s=1;

2.A.item<0.000001B.item>=0.000001

C.fabs(item)<0.000001D.fabs(item)>=0.000001

3.A.item=1/iB.item=item+1.0/(i*2-1)

C.item=1.0/(2*i-1)D.item=1.0/item/i

程序2、

【程序说明】

输出100~10000之间所有满足各位数字的立方和等于它本身的数。

【程序】

#include

voidmain()

{intd,i,m,sum;

for(i=100;i<=10000;i++){

(1)

while(m!

=0){

d=m%10;sum=sum+d*d*d;

(2)

}

if((3))printf(“%d”,sum);

}

}

1.A.sum=0;B.m=i;sum=0;C.m=i;D.i=m;sum=0;

2.A.m=m/10;B.m=i/10;C.m=m;D.m=m%10;

3.A.m!

=sumB.i==sumC.i!

=sumD.m==sum

程序3、

【程序说明】

求500以内的全部素数,每行输出10个。

素数就是只能被1和自身整除的正整数,1不是素数,2是素数。

【程序】

#include

#include

voidmain()

{

inti,m,n;

(1);

for(m=2;m<=500;m++){

n=sqrt(m);

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

(2);

if(i>n){

printf("%6d",m);

count++;

(3);

}

}

printf("\n");

}

1.A.intcountB.intcount=0

C.countD.intcount==0

2.A.if(m%i!

=0)breakB.if(m%i==0)break

C.if(m%i==0)continueD.if(m%i!

=0)continue

3.A.if(count/10!

=0)printf(“\n”)B.if(count%10!

=0)printf(“\n”)

C.if(count%10==0)printf(“\n”)D.if(count/10==0)printf(“\n”)

程序4、

【程序说明】

输入100个整数,将它们存入数组中,再输入一个数x,然后在数组中查找x,如果找到,输出相应下标(如有多个元素与x相等,只要输出下标值最小的那个元素的下标),否则,输出“NotFound”

【程序】

#include

voidmain()

{

inti,s,x;

inta[100];

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

(1)

printf("Inputx");

scanf("%d",&x);

s=-1;

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

if(a[i]==x)

(2)

if((3))

printf("indexis%d\n",s);

elseprintf("NotFound");

}

1.A.scanf(“%d”,a);

B.scanf(“%d“,&a[i]);

C.scanf(“%d“,a[i]);

D.scanf(“%s“,a);

2.A.s=i;B.break;C.{s=i;break;}D.s=i;break;

3.A.i<10B.i>10C.i==10D.i=10

程序5、

【程序说明】

下列程序运行时,输入10个学生的姓名和成绩,然后求出学生的平均成绩。

【程序】

#include

structstudent{

intnum;

charname[20];

intscore;

};

(1);

voidmain()

{

inti;

(2);

printf("\ninputthestudent'snumber,nameandscore:

\n");

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

printf("No%d\n",i+1);

(3);

sum=sum+stud[i].score;

}

(4);

}

1.A.structstud[10]B.structstudentstud

C.structstudentstud[10]D.studentstud[10]

2.A.doublesum=0B.doublesum

C.floatsumD.intsum

3.A.scanf("%s%d%d",&stud[i].num,stud[i].name,&stud[i].score)

B.scanf("%d%s%d",&stud[i].num,stud[i].name,&stud[i].score)

C.scanf("%d%d%s",&stud[i].num,&stud[i].name,&stud[i].score)

D.scanf("%d%s%d",&stud[i].num,&stud[i].name,&stud[i].score)

4.A.printf("theaverage:

%f\n",sum/10)

B.printf("theaverage:

%d\n",sum/10)

C.printf("theaverage:

%x\n",sum/10)

D.printf("theaverage:

%o\n",sum/10)

程序6、

【程序说明】

输入两数a、b,再按从大到小顺序输出。

【程序】

#include

voidmain()

{intx,y;

int*p1,*p2;

scanf("%d%d",&a,&b);

(1)

p2=&b;

if(

(2))swap(p1,p2);

printf("%d,%d",a,b);

}

voidswap((3))

{intt;

t=*p1;

(4)

*p2=t;

}

1.A.p1=a; B.p1=&a;

C.*p1=&a;D.**p1=a;

2.A.ap2

C.p1b

3.A.intp1,intp2B.int*p1,intp2

C.int*p1,*p2D.int*p1,int*p2

4.A.p1=p2;B.*p1=*p2;

C.*p1=t;D.*p2=t;

四、程序阅读题(每题5分,共20分)

说明:

阅读下列程序,将运行时的输出结果写在答卷纸的相应题号下。

1、程序1

#include

voidmain()

{intm=123456;

do{

printf(“%d#”,m%10);

m=m/10;

}while(m!

=0);

}

2、程序2

#include

intfact(intn)

{

intt;

if(n==1)t=5;

elset=fact(n-1)+5;

returnt;

}

voidmain()

{

printf("result:

%d\n",fact(6));

}

3、程序3

#include

intfun(intx)

{staticinty=1;

y=y*x;

return(y);

}

voidmain()

{intt;

for(t=1;t<=3;t++)

printf("%d!

=%d\n",i,fun(t));

}

4、程序4

#include

voidmain()

{inta[6];

inti,j,t;

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

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

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

for(j=5;i

if(a[j-1]>a[j])

{t=a[j];a[j]=a[j-1];a[j-1]=t;}

printf("Thesorted6numbers:

\n");

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

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

printf("\n");

}

运行时输入的数字为61234570

5、程序5

设以下程序执行前存放着文本文件file1.txt的内容是:

November1st,1990

#include

#include

voidmain()

{FILE*fr;

intch;

if((fr=fopen(“file1.txt”,”r”))==NULL){

printf(“Cannotopenfile”);

exit(0);

}

while(!

feof(fr)){

ch=fgetc(fr);

if(ch>=’0’&&ch<=’9’)

putchar(ch);

}

fclose(fr);

}

6、程序6

#include

voidmain()

{charstr[]=”abcd123456\0wxyz”,*p=str;

printf(“%s”,p+1);

}

7、程序7

#include

voidmain()

{chara[]="23456789",*ap;

ap=a;

while(*ap!

=’\0’)

{if((*ap)%2==0)*ap='#';

ap++;

}

puts(a);

}

8、程序8

#include

voidswap(int*a,int*b)

{intt;

t=*a;

*a=*b;

*b=t;

}

voidmain()

{intx=1,y=2;

swap(&x,&y);

printf("x=%d,y=%d",x,y);

}

五、程序设计题

1.编制程序,输入n个整数(n从键盘输入,n>0),输出它们中偶数的和。

2.对10个实数进行排序(从大到小)。

3.输入一个正整数n(1

4.定义函数fun用于计算两个整数之差的绝对值,编写主函数要求输入两个整数,调用该函数并输出。

5.输入x,计算并输出下列分段函数f(x)的值。

可以调用数学库函数:

平方根函数sqrt(),绝对值函数fabs(),幂函数pow()。

6.输入一个正整数n,计算5.6n。

要求定义和调用函数mypow(x,n)计算xn,其中x和n的类型分别是double和int,函数类型是double。

7.输入5个字符串,输出其中最小的字符串。

8.输入5个字符串,输出其中最长的字符串。

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

当前位置:首页 > 经管营销 > 经济市场

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

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