C语言习题集.docx

上传人:b****8 文档编号:10155095 上传时间:2023-02-08 格式:DOCX 页数:34 大小:33.58KB
下载 相关 举报
C语言习题集.docx_第1页
第1页 / 共34页
C语言习题集.docx_第2页
第2页 / 共34页
C语言习题集.docx_第3页
第3页 / 共34页
C语言习题集.docx_第4页
第4页 / 共34页
C语言习题集.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

C语言习题集.docx

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

C语言习题集.docx

C语言习题集

一、    语言基础(共20分,每题2分)

(一)设x为一数字字符,则其所对应的十进制数值为1。

1.A)xB)x-‘0’C)*xD)&x

(二)说明语句chars=‘\t’,使s包含了几个字符?

2。

2.A)1B)2C)3D)说明有错

(三)设a=6,b=4,则表达式b*=a+3的值为3。

3.A)3B)18C)27D)36

(四)若给定表达式(m)?

a++:

a--,则其中表达式m和4

等价。

4.A)m==0B)m!

=0C)m=0D)m=1

(五)设有说明语句inta[10],则数组a包括了5个数组元素。

5.A)1B)9C)10D)20

(六)以下函数test返回值类型为6。

test(intx)

{printf(“%f\n”,(float)x);

}

6.A)intB)floatC)voidD)不确定或错误

(七)C语言规定,main函数的参数7。

7.A)只能有0个B)只能有0个或一个

C)只能有0个或2个D)可有任意个

(八)设x为整型变量,p基类型为整型的指针变量,则正确的赋值表达式是8。

8.A)p=&xB)p=xC)*p=&xD)*p=*x

(九)TurboC中,int型数据在存储器中占二个字节,则以下类型数据在存储器中占的字节数为:

9。

structtest

{intx;

floaty;

charz;

};

9.A)2B)3C)6D)7

(十)rewind()函数的作用是10。

10.A)重新打开文件

B)使文件位置指针重新回到文件的开始

C)使文件位置指针重新回到文件的末

D)返回文件长度值

 

二、阅读下列程序,写出运行结果(共18分,每题3分)

[程序1]

#include

voidmain()

{inta=1,b=4,c=2;运行结果:

1

a=(a+b)/c;

printf(“%d\n”,--a);

}

[程序2]

voidmain()

{charc1=67;/*‘A’的ASCII码值为65*/

if(‘A’<=c1&&c1<=’Z’)运行结果:

67,D

printf(“%d,%c”,c1,c1+1);

elseprintf(“%c”,c1);}

[程序3]

viodmain()

{inta=0,n=5;运行结果:

1,5,4,3,2,0

for(;;)

{a++;n--;

printf(“%d,”,a);

a=n;

if(n==0)break;

}

printf(“%d”,a);

}

[程序4]

main()

{inti,j;运行结果:

1,2,4,8,16,32,64,128,256,512

staticinta[10]={1,1,1,1,1,1,1,1,1,1};

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

for(j=0;j

a[i]=a[i]+a[j];

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

printf(“%d,”,a[i]);

}

[程序5]

intk=2;

f(intm)运行结果:

6,8

{m+=k;k+=m;5,9

printf(“%d,%d\n”,m,k++);

}

main()

{inti=4;

for(i++);

printf(“%d,%d\n”,i,k);}

[程序6]

voidmain()

{staticinta[10],i;运行结果:

13579

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

a[i]=i+1;

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

printf(“%d”,*(a+i));

}

 

三、阅读分析下列程序,在处填上适当的内容使程序(或函数)完整(共21分,每空3分)

(一)       以下程序输出所有大写字母和其对应的ASCII码值。

voidmain()

{intch;

for(ch=’A’;ch<=’Z’;ch++)

printf(“字母%c的ASCII码值是:

%d\n”,ch,1);

}

答案:

ch

(二)以下函数的功能是将一个字符串S的内容颠倒过来。

voidreserve

(2)答案:

chars[]

{inti,j,k;

for(i=0,j=strlen(s)-1;3;i++,j--)答案:

i

{k=s[i];s[i]=s[j];s[j]=k;}

}

(三)由键盘输入三个数a,b,c,计算以这三个数为边长的三角形面积。

#include

voidmain()

{floata,b,c,s,s1;

scanf(“%f%f%f”,4);答案:

&a,&b,&c

if((a+b)>c&&(a+c)>b&&(b+c)>a)

{s=(a+b+c)/2;

s1=s*(s-a)*(s-b)*(s-c);

s=5;答案:

sqrt(s1)

printf(“\n三角形面积为:

%f\n”,s);

}

else

printf(“\n不是三角!

\n”);

}

(四)从键盘输入一个字符串,把它输出到文件中,文件名由键盘输入。

#include

voidmain()

{FILE*fp;

charch,*fn;

scanf(“%s”,fn);

if((fp=fopen(fn,6))==NULL)答案:

“w”

{printf(“打开文件出错\n”);

exit

(1);

}

while((ch=getchar())!

=EOF)

{fputc(7);答案:

ch,fp

putchar(ch);

}

fclose(fp);}

 

四、编程题(共21分)

1.从键盘输入3个整数,输出其中最大数。

(5分)

main()

{inti=0,x,mx=-32768;

while(i++<3)

{scanf(“%d”,&x);

if(x>mx)mx=x;

}

printf(“\n%d\n”,mx);

}

2.编写一函数uf(s),将字符串s中的第一个和最后一个字母改写成大写字母(如原来不是字母或已是大写字母,则不变)。

(5分)

#include

uf(char*s)

{inti;

i=strlen(s);

if(i==0)return;

if(s[0]>=’a’&&s[0]<=’z’)

s[0]+=’A’-‘a’;

if(s[i-1]>=’a’&&s[i-1]<=‘z’)

s[i-1]+=’A’–‘a’;

}

main()

{chars[]=”asdfgh”;

uf(s);

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

}

3.从键盘输入10个浮点数,输出其平均值及所有低于平均值的数。

(5分)

#include

main()

{

floata[10],ave=0;

inti;

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

{

scanf(“%f”,&a[i]);

ave+=a[i];

}

ave/=10;

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

if(a[i]

printf(“%f\t”,a[i]);

}

习题二

一、            语言基础(共20分,每题2分)

(一)正确的C语言自定义标识符是。

A)file_bakB)abc(10)C)continueD)class+3

(二)设intx=8,y,z;执行y=z=x++;x=y==z后,变量x的值是。

A)0B)1C)8D)9

(三)字符串“w\x53\\\np\103q”的长度是。

A)7B)9C)15D)16

(四)设inta=9,b=8,c=7,x=1;则执行语句

if(a>7)if(b>8)if(c>9)x=2;elsex=3;后x的值是。

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

(五)有如下程序

main()

{intx=23;

do{printf(“%d”,x--);}

while(!

x);

该程序的执行结果是。

A)321B)23

C)不输出任何内容D)陷入死循环

(六)定义一个具有8个元素的整型数组,应使用语句。

A)inta[8];B)inta[2,4];

C)inta[];D)int*a[8];

(七)设intx[]={4,3,2,1},q,*p=&x[1];则执行语句

q=(*--p)++后,变量q的值为。

A)4B)3C)2D)1

(八)函数调用时,下列说法中不正确的是。

实际参数和形式参数可以同名

若用值传递方式,则形式参数

主调函数和被调函数可以不在同一个文件中

函数间传递数据可以使用全局变量

(九)下列数据类型中不属于构造类型的是。

A)数组型B)结构型C)共用型D)枚举型

(十)存储整型数据-7856时,在二进制文件和文本文件中占用的字节数分别是。

A)3,2B)2,5C)5,5D)5,2

 

二、阅读下列程序,写出运行结果(共20分,每题4分)

【程序1】

#include

main()

{intx=1,a=0,b=0;

switch(x){

case0:

b++;

case1:

a++;

case2:

a++;b++;}

printf(“a=%d,b=%d\n”,a,b);

}

运行结果:

【程序2】

space(intm)

{while(m--)printf(“%c”,32);}

main()

{inti,j;printf(“\n”);

for(i=5;i>=1;i--)

{

                           space(i);printf(“*”);

for(j=3;j>=2*(i/5)+2;j--)

{

                                   space(4-i);

                                   printf(“*”);

                            }

printf(“\n”);

}

              }

运行结果:

【程序3】

longff(intn)

{if(n>3)return(ff(n-1)+ff(n-2));

elsereturn(3);}

main()

{printf(“%d\n”,ff(4));}

运行结果:

【程序4】

main()

{inti,a[5];

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

a[i]=9*(i-2+4*(i>2))%5;

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

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

}

运行结果:

【程序5】

#include

unionpw

{inti;

charch[2]

}a;

main()

{

               a.ch[0]=13;

a.ch[1]=0;

printf(“%d\n”,a.i);

              }

运行结果:

 

三、阅读下列程序,在处填上适当的内容使程序(或函数)完整。

(共20分,每空2分)

(一)下面程序用于计算n!

的值。

main()

{

inti,s,n;

s=1;

printf(“entern:

”);scanf(“%d”,&n);

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

(1);

printf(“s=%d”,s);

}

(二)下面函数pi()的功能是根据以下公式求π值(直到最后一项小于10-5为止)

doublepi()

{

              doubles=0.0,t=1.0;intn;

for

(2);t>=1e-5;n++)

                s+=t;t=3;

}

return(2.0*4);

}

(三)从键盘上输入一行字符(不多于40个,以会车换行符作为输入结束标记),将其中的大写字母该为小写字母,其它字符不变,然后逆向输出。

main()

{chara[40];

intn=0;

do{scanf(“%c”,&a[n]);

if(5)

a[n]+=32;

n++;

}while(6!

=’\n’);

n=n-2;

while(n>=0)

printf(“%c”,a[n--]);

}

(四)从终端读入的文本(用@作为文本结束标志)复制到一个名字C.DAT的新文件中。

#include

FILE*fp;

main()

{charch;

if((fp=7)==NULL)exit(0);

while((ch=getchar())!

=’@’)

fpute(8);

fclose(fp);

}

(五)输入10个整数存入一维数组,从中查找某个整数(该数从键盘上读取),查到则输出其是第几个数,查不到则输出“NotFind!

”。

main()

{inta[10],*p=a,x,n,flag=0;

for(;p

scanf(“%d”,&x);

for(n=1,p=a;9;p++,n++)

if(10)

{flag=1;break;}

if(!

flag)printf(“NotFind!

\n”);

elseprintf(“%d\n”,n);

}

 

四、编程题(共20分)

1、按下列公式s(n)=12+22+......+n2编写计算并输出s值,其中的n值由键盘输入。

(7分)

2、编写一程序,从键盘输入10个实数,计算并输出算术平均值。

(7分)

3、求两个整数m和n最大公约数。

(6分)

 

习题二参考答案

一、语言基础

(一)单项选择题

1.A 2.B3.A 4.C5.B

6.A 7.A8.B 9.D10.B

(二)运行程序

【程序1】 a=1,b=1

【程序2】*

***

***

***

***

【程序3】6

【程序4】400-4-3

【程序5】13

(三)填空

s=s*1

n=1

n*t/(2*n+1)

s

(’A’<=a[n])&&(a[n]<=’Z’)

a[n-1]

p

*p==x

fopen(”c.dat”,”w”)

ch,fp

 

(四)编程

main()

{floata();

intn;

scanf(“%d”,&n);

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

}

floats(intn)

{floats=0.0;

if(n==1)return(1.0);

elsereturn(s(n-1)+n*n);

}

main()

{inti;

floatave=0,a[10];

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

scanf(“%f”,&a[i]);

for(i=0;i<10;i++)ave+=a[i];

printf(“%10.4f\n”,ave/10);

}

#include

main()

{intm,n,a,r;

scanf(“%d,%d”,&m,&n);

a=m,b=n;

do{r=a%b;

a=b;

b=r;

}while(r!

=0);

printf(“%d,%dis%d\n”,m,n,a);

}

 

习题三

一、语言基础(共20分,每题2分)

(一)  若a为float类型变量,且a=4.6785,则表达式(int)(a*100+0.5)/100.0

的值为4.68。

(二)设有intx=11,y=10;则以下表达式的值为10。

x-->y?

10:

11>y++?

’a’:

’z’

(三)若所有变量都已正确定义为int型则执行下列程序段后x的值为79。

x=80;a=10b=16;y=9;z=0;

if(a

if(b!

=15)

if(!

y)x=81;

elseif(!

z)x=79;

(四)i,j为int型的变量,则下面程序中的循环体的执行次数为5。

i=1;j=0;

while(i+j<=10)

{if(i>jj=j+2);

elsei=i+2;}

(五)若有数组a[10],类型为int型,元素及值如下所示:

数组元素:

a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]

元素中的值:

9483267015

则*(a+a[9])的值为6。

(六)以下函数调用语句中实参的个数为3.

Sub((x1,x2),(x3,x4,x5),x6)

(七)若有以下函数定义:

  int(*hs)()

{

……/*函数体*/

}

则函数hs返回的值是整形。

(八)某C编译程序规定,int型数据存储占2个字节,float型数据存储占4个字节,char型数据存储占1个字节,现有记录描述如下:

 structstu

{

union

{

charbj[5];

intbh[2];

}class;

charxm[8];

floatcj;

}xs;

则sizseof(xs)的值为17。

(九)设有以下定义:

#definea6

#defineba+4

则执行语句c=b*10(c为int型数据)后,c的值为46。

(十)在C中,文件指针变量的类型只能是FILE。

 

二、阅读下列程序,写出运行结果(共20分,每题4分)

[程序1]

  #include

main()

{

inti;运行结果:

i=18,J=29.44

floatj;

i=18;

j=29.4361;

printf(“i=%4d,j=%2.2f”,i,j);

}

[程序2]

main()

{intk=10;charc=’b’;

do

swith(c++)运行结果:

12

{

case‘a’:

k++;

case‘b’:

k--;

case‘c’:

k+=3;break;

case‘d’:

k=k%4;

}

while(c!

=’c’);

     printf(“%d\n”,k);}

[程序3]

main()

{

chara[]=”computer”;

chart;

inti,j=0;运行结果:

utrpomec

for(i=0;I<8;I++)

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

if(a[i]

{

t=a[i];

a[i]=a[j];

a[j]=t;

}

printf(“%s”,a);

[程序4]

main()

{

char*p,s[]=”abcdefg”;

for(p=s;*p!

=’\0’);运行结果:

abcdefg

{

printf(“%s\n”,p);

p++;

if(*p!

=’\0’)

p++;

elsebreak;

}

}

三、阅读下列程序,在 线处填上合适的内容使程序(或函数)完整(共18分,每空2分)

1.  下面程序的功能是判断输入的一个年份是否是闰年。

(闰年能够被4整除,但不能被100整除;或能被400整除)

#include“stdio.h”

main()

{

intyear,leap;

printf(“inputyear:

”);

scanf(“%d,&year);

if(year%400==0)leap=1;

elseif(year%4==0)&&(year%100!

=0)leap=1;

elseleap=0;

if(leap!

=0)

printf(“%disaleapyear.\n”,year);

else

printf(“%disnotaleapyear.\n”,year);

}

2.  以下程序的功能是求三个数的最小公倍数。

max(intx,inty,intz)

{

if(x>y&&x>z)

return(x);

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

return(y);

else

return(z);

}

main()

{

inta,b,c,I=1,j,s;

scanf(“%d%d%d”,&a,&b,&c);

s=max(a,b,c);

while

(1)

{

j=s*i;

if((j%a==0)&&(j%b==0)&&(j%c==0))

break;

i++;

}

prinf(“%d”,j); 

}

3.  下面程序是判断

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

当前位置:首页 > 工作范文 > 其它

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

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