C参考答案与复习题.docx

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

C参考答案与复习题.docx

《C参考答案与复习题.docx》由会员分享,可在线阅读,更多相关《C参考答案与复习题.docx(134页珍藏版)》请在冰点文库上搜索。

C参考答案与复习题.docx

C参考答案与复习题

C程序设计复习题集

目录

一、C语言程序设计习题参考答案…………………………………1

二、C语言程序设计复习题

⒈单项选择题…………………………………………………41

⒉填空题…………………………………………………45

⒊写输出结果题…………………………………………………46

⒋程序填空题…………………………………………………53

⒌编程题……………………………………………………61

三、C语言程序设计复习题答案

⒈单项选择题……………………………………………………62

⒉填空题……………………………………………………63

⒊写输出结果题……………………………………………………63

⒋程序填空题……………………………………………………64

⒌编程题(参考)……………………………………………………65

四、C语言程序设计模拟试卷、参考答案

⒈试卷一……………………………………………………………74

⒉试卷二……………………………………………………………77

浙江工业大学计算中心编印

C程序设计习题参考答案

习题一

1.填空题

⑴计算机程序设计语言按其发展可分为三类,即机器语言、汇编语言和高级语言。

⑵C程序是由函数构成的,一个C程序中至少包含1个main函数。

因此,函数是C程序的基本单位。

⑶C程序注释是由/*和*/所界定的文字信息组成的。

⑷函数体一般包括函数首行和函数体。

⑸在任何C程序中都必须且只能有一个主函数,主函数名必须为main。

2.判断下列各个叙述的正确与否

⑴C程序的执行总是从该程序的main函数开始,在main函数最后结束【√】

⑵C程序的注释部分可以出现在程序中任何位置,它对程序的编译和运行不起任何作用,但可以增加程序的可读性【√】

⑶由“/*”与“*/”界定的注释必须在同一行【╳】

⑷通过了编译、连接的程序就是正确的程序【╳】

⑸有计算结果输出的程序一定是正确的程序【╳】

⑹编译错误是语法错误,运行结果错误是逻辑错误【√】

⑺编译时在信息窗口出现包含“error”的信息,说明程序存在警告性错误【╳】

⑻源程序每次修改后,都必须重新编译、连接【√】

3.简答题

⑴算法的含义、特点是什么?

解答:

算法是解题方法的精确描述。

有穷性、确定性、有多或零个输入、有1或多个输出、有效性。

⑵写出一个C程序的基本结构。

由编译预处理命令、注释、1个main和若干个自定义函数构成,函数格式如下:

函数类型函数名(类型标识符形参,类型标识符形参,...)

{类型声明语句;执行语句部分;}

⑶写出在你使用的计算机系统上,进入C环境以及运行、调试程序的简要步骤。

⑷输入x后计算其正弦值的源程序如下。

编译信息是否表示有致命性错误?

应如何修改?

解答:

致命性错误为第6行函数sin未声明,应加入编译预处理命令#include

4.编程题

⑴请上机调试、运行本章课本上C语言程序例题4~6(注释部分可以不必输)

⑵仿照例6编程,输入两个变量后,输出其中较大的值。

#include

voidmain()

{inta,b;

printf("请输入A,B的值:

\n");

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

if(a>b)printf("%d\n",a);elseprintf("%d\n",b);

}

⑶仿照例题编程,输入圆柱体的半径和高,计算并输出圆柱体的体积。

#include

voidmain()

{floatr,h,v;

printf("请输入半径、高的值:

\n");

scanf("%f%f",&r,&h);

v=r*r*3.141593*h;

printf("%f\n",v);

}

习题二

1.将下列程序上机运行,写出你所使用的C语言处理系统中short、int以及long类型数据的字长和数值范围。

#include

voidmain()

{printf("short类型数据的字长为:

%d\n",sizeof(short));

printf("int类型数据的字长为:

%d\n",sizeof(int));

printf("long类型数据的字长为:

%d\n",sizeof(long));

}

解答:

VC++环境下,分别为2、4、4

2.仿照题1编程,测试float、double类型数据的字长。

#include

voidmain()

{printf("float类型数据的字长为:

%d\n",sizeof(float));

printf("double类型数据的字长为:

%d\n",sizeof(double));

}

3.判断下列各个叙述的正确与否。

⑴C的long类型数据可以表示任何整数【╳】

⑵任何变量都必须要声明其类型【√】

⑶C的任何类型数据在计算机内都是以二进制形式存储的【√】

⑷scanf函数中的格式符“%d”不能用于输入实型数据【√】

⑸格式符中指定宽度时,从缓冲区中读入的字符数完全取决于所指定的宽度【√】

⑹按格式符“%d”输出float类型变量时,截断小数位取整后输出【╳】

⑺按格式符“%6.3f”输出i(i=123.45)时,输出结果为23.450【╳】

⑻scanf函数中的格式符“%f”能用于输入double类型数据【╳】

4.指出下列各项中那些是C的常量,对合法的C常量请同时指出其类型。

10,150007-0x3dπ1e0e1o7o8

'x''xo'1.52e0.5sin(3)0xf16"X"'\007'

1.414E+22.54'\\''a'

解:

007整型,-0x3d整型,1e0实型,'x'字符型,0xf16整型,"X"字符串

'\007'字符型,1.414E+2实型,2.54实型,'\\'字符型,'a'字符型

5.指出下列各项中那些是C的标识符(可作变量名)。

x_1X_2Highprintfβ3DSi/j

e2-e2countIntnumber$23next_

解:

x_1、X_2、High、e2、count、Int、number、next_

6.根据条件,写出下列各题的输出结果。

⑴inti=234,j=567;函数printf("%d%d\n",i,j)的输出结果是234567。

⑵inti=234;floatx=-513.624;

函数printf("i=%5dx=%7.4f\n",i,x)的输出结果是i=234x=-513.6240。

⑶floatalfa=60,pi=3.1415926535626;函数printf("sin(%3.0f*%f/180)\n",alfa,pi)

的输出结果是sin(60*3.141592/180)。

⑷charch='$',floatx=153.45;

函数printf("%c%-8.2f\\n",ch,x)的输出结果是$153.45\n。

⑸intd=27;函数printf("%-5d,%-5o,%-5x\n",d,d,d)的输出结果是27,34,1b。

⑹floatx1=13.24,x2=-78.32;函数printf("x(%d)=%.2fx(%d)=%.2f\n",1,x1,2,x2)

的输出结果是x

(1)=13.24x

(2)=-78.32

7.根据下列条件写出变量i1(int类型)、c1(char类型)、f1(float类型)、d1(double类型)的当前值。

⑴执行scanf("%d%c%f%lf",&i1,&c1,&f1,&d1)时输入52$9.173.1415926535后。

i1为52,c1为'$',f1为9.17,d1为3.1415926535

⑵执行scanf("%d$%c%f%lf",&i1,&c1,&f1,&d1)时输入52$9.173.1415926535后。

i1为52,c1为'9',f1为0.17,d1为3.1415926535

8.下列源程序输入x、y后,输出x的y次方。

运行时无编译、连接错误,但输入不同格式的两组数据输出结果却不同,哪一组是对的?

请说明原因。

解答:

第1组输入数据错误,因为格式串中有“,”所以键盘输入数据x、y之间也一定以逗号为间隔符。

9.写出下列程序运行时输入345的输出结果。

#include

#include输出结果:

边长为3.00,4.00,5.00的三角形面积为6.00

voidmain()

{floata1,a2,a3,s,d;

scanf("%f%f%f",&a1,&a2,&a3);

s=(a1+a2+a3)/2;

s=sqrt(s*(s-a1)*(s-a2)*(s-a3));

printf("边长为%.2f,%.2f,%.2f的三角形面积为:

%-10.3f\n",a1,a2,a3,s);

}

10.编程题

⑴编程,用getchar函数接收2个字符,用putchar函数输出这2个字符。

解答:

#include

voidmain()

{charx;

x=getchar();putchar(x);

x=getchar();putchar(x);

}

⑵编程,用scanf函数输入1个10进制整数、1个单精度浮点数、1个双精度浮点数,并通过printf函数把输入的3个数分别输出。

解答:

#include

voidmain()

{intk;floatx;doubled;

scanf("%d%f%lf",&k,&x,&d);

printf("%d,%f,%f\n",k,x,d);

}

⑶编程,输入1个整数,然后分别以8进制、10进制、16进制形式输出该数。

解答:

#include

voidmain()

{intx;scanf("%d",&x);

printf("%d,%o,%x\n",x,x,x);

}

习题三

1.根据下列数学式,写出C的算术表达式。

解答:

-(a*a+pow(b,3))*pow(y,4)(sqrt

(2)+100)/(atan(x)+3.141593)

(5+b)/((a+6)/(b+5)-c*d)

2.按照要求写出下列C的表达式。

⑴数学式(x+1)e2X所对应的C算术表达式。

⑵将double类型变量x的整数部分与y的小数部分相加的算术表达式。

⑶将非零实型变量x四舍五入到小数点后2位的算术表达式。

⑷为变量s赋值:

取变量x的符号,取变量y的绝对值。

⑸条件“-5≤x≤3”所对应的C逻辑表达式。

⑹a、b是字符变量,已知a的值为大写字母、b的值为小写字母,写出判断a、b是否为同一字母的逻辑表达式

⑺int类型变量a、b均为两位正整数,写出判断a的个位数等于b的十位数、且b的个位数等于a的十位数的逻辑表达式。

⑻计算变量a、b中较小值的条件表达式。

⑼判断变量ch是英文字母的表达式;

⑽若字符变量ch的值为大写字母,则重新赋值为对应的小写字母。

解答:

⑴(x+1)*exp(2*x)⑵(int)x+y-(int)y⑶(int)(x*100+fabs(x)/x*0.5)/100.0

⑷s=fabs(y)*x/fabs(x)⑸-5<=x&&x<=3⑹b-a=='a'-'A'

⑺a%10==b/10&&b%10==a/10⑻a

a:

b⑼isalpha(ch)

⑽ch=isupper(ch)?

ch:

ch+'a'-'A'

3.声明“intk=12;floatx=9.5;doubled=2.7;charzf='B';”,写出下列表达式值。

⑴(int)x%k*d⑵k+5.6

⑷!

k&&x>d⑸zf='B'⑹zf=='B'

解答:

⑴24.3,⑵1,⑶1,⑷0,⑸'B',⑹1

4.填空题

⑴声明“floatx=2.5,y=4.7;inta=7;”,表达式x+a%3*(int)(x+y)%2/4值为2.5。

⑵设整型变量a、b值分别为10与20,计算c=(a%2==0)?

a:

b后,c的值为10。

⑶设整型变量d的值为7,表达式“3

⑷已知ch是字符变量。

如果ch是小写英文字母,则把它改成大写英文字母,写作:

if(islower或ch>='A'&&ch<='z')ch=ch-32;

⑸下列程序的输出结果是(0.00,0.5)。

#include

voidmain()

{inty;

doubled=3.4,x;

x=(y=d/2.0)/2;

printf("(%0.2f,%d)",x,y);

}

⑹判断a、b是否绝对值相等而符号相反的逻辑表达式为a==-b。

⑺判断变量a、b中必有且只有一个为0的逻辑表达式为a*b==0&&a+b!

=0。

⑻c初值为3,计算赋值表达式“a=5+(c+=6)”后表达式值、a、c的值依次为14、14、9。

⑼求解赋值表达式“a=(b=10)%(c=6)”后,表达式值、a、b、c的值依次为4、4、10、6。

⑽求解逗号表达式“x=a=3,6*a”后,表达式值、x、a的值依次为18、18、3。

⑾若a=13、b=25、c=-17,表达式“((y=(a

a:

b)

y:

c的值为-17。

⑿若s='d',执行语句“s=(s>='a'&&s<='z')?

s-32:

s;”后字符变量s的值为'D'。

5.写出下列程序的输出结果。

程序⑴#include

voidmain()

{unsignedk,n;scanf("%u",&n);

k=n%10*10+n/10;

printf("n=%dk=%d\n",n,k);

}

运行时输入数据为:

6972输出结果为:

n=69k=96

程序⑵#include

voidmain()

{intx=40,y=4,z=4;

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

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

}

输出结果为:

144

044

程序⑶#include

voidmain()

{intx,y,z;

x=y=2;z=3;

y=x++-1;printf("%d\t%d\t%d\t",x,y,z);

y=--z+1;printf("%d\t%d\t%d\n",x,y,z);

x=y=z=0;++x&&++y||++z;

printf("%d\t%d\t%d\t",x,y,z);

--x&&++y&&++z;printf("%d\t%d\t%d\n",x,y,z);

}

输出结果为:

313332

110010

6.编程,输入长方形的长和宽,求长方形的面积和周长并输出。

解答:

#include

voidmain()

{floata,b,x,y;

scanf("%f%f",&a,&b);x=a*b;y=2*(a+b);

printf("面积=%.4f周长=%.4f\n",x,y);

}

7.编程,输入3个字符后,按各字符ASCII码从小到大的顺序输出这些字符。

解答:

#include

voidmain()

{chara,b,c,x,y,z;scanf("%c%c%c",&a,&b,&c);

x=(x=a

a:

b)

x:

c;z=(z=a>b?

a:

b)>c?

z:

c;y=a+b+c-x-z;

printf("%c%c%c\n",x,y,z);

}

8.编程,输入3个整数,要求按绝对值从小到大输出它们的值。

解答:

#include

#include//也可以用题7的做法

voidmain()

{intx,y,z,a;scanf("%d%d%d",&x,&y,&z);

if(fabs(x)>fabs(y)){a=x;x=y;y=a;}

if(fabs(x)>fabs(z)){a=x;x=z;z=a;}

if(fabs(y)>fabs(z)){a=y;y=z;z=a;}

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

}

9.编程,输入3个数,计算这三个数的平均值,并求出与平均值最接近的值。

解答:

#include

#include

voidmain()

{floata,b,c,v,x;scanf("%f%f%f",&a,&b,&c);

v=(a+b+c)/3;x=a;

if(fabs(b-v)

if(fabs(c-v)

printf("%f\n",x);

}

10.编程,输入1个3位正整数,输出其个位、十位、百位反序的数(如123反序数为321)。

解答:

#include

voidmain()

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

m=n%10*100+n%100/10*10+n/100;

printf("%d\t%d\n",n,m);

}

习题四

1.填空题

⑴求1至100的和,写作for(s=0,i=1;i<=100;++i)s+=i;

⑵执行程序段“y=1;x=5;while(x--);y++;”后,y的值为2。

⑶顺序输出26个大写英文字母的循环结构,写作

for(ch='A';ch<='Z';ch++)putchar(ch);

⑷输入若干个以问号结束的字符,同时输出这串字符(不包括问号),写作

while((ch=getchar())!

='?

')putchar(ch);

⑸循环程序段“k=5;for(;k<0;k--);”执行后,k的值为5。

2.改写下列程序段,去掉continue语句,使结构更为合理。

⑴while(A){解答:

while(A)if(!

B)C;

if(B)continue;

C;

}

⑵do{解答:

while(A){B;C;}

if(!

A)continue;elseB;

C;

}while(A);

3.写出下列程序的输出结果

程序⑴#include

voidmain()

{charx;intn=0,k=0;

while((x=getchar())!

='.'){

switch(x){

case't':

k++;break;

case'h':

if(k==1)k++;break;

case'e':

if(k==2)k++;break;

default:

k=0;

}

if(k==3)n++;

}

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

}

运行时输入:

atheasdfthethethere.输出结果:

3

程序⑵#include输出结果:

A

#includeBBB

voidmain()CCCCC

{chara,b,x;inti;DDDDDDD

while(!

isupper(x=getchar()));EEEEEEEEE

for(a='A';a<=x;a++){

for(b='A';b<'A'+x-a;b++)putchar('');

for(i=1;i<=2*(a-'A')+1;i++)putchar(a);

putchar('\n')

}

}

运行时输入:

35dffE

4.程序填空题,根据下列各题题意,将程序补充完整。

⑴下列程序在输入m后求n使n!

≤m≤(n+1)!

(例如输入726,应输出n=6)

#include

voidmain()

{intm,n,jc=1;

scanf("%d",&m);

for(n=2;jc<=m;n++)jc=jc*n;

printf("n=%d\n",n-2);

}

⑵下列程序输出6至10000之间的亲密数对。

【说明】若a、b是亲密数对,则a的因子和等于b、b的因子和等于a且a不等于b。

#include

voidmain()

{inta,b,c,i;

for(a=6;a<=10000;a++){

b=1;for(i=2;i<=a/2;i++)if(a%i==0)b+=i;

c=1;for(i=2;i<=b/2;i++)if(b%i==0)c+=i;

if(c==a&&a!

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

}

}

5.根据下列各小题题意编程。

⑴编程,输入x后按下式计算y值并输出。

解答:

#include

#include

voidmain()

{floatx,y;scanf("%f",&x);

if(x>=0&&x<=1)y=x+sin(x);elsey=x+sin(x);

printf("%f\n",y);

}

⑵输入一个百分制的成绩t后,按下式输出它的等级,要求分别写作if结构和switch结构。

等级为:

90~100为A,80~89为B,70~79为C,60~69为D,0~59为E。

解答:

#include

voidmain()

{intt;charx;

scanf("%d",&t)

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

当前位置:首页 > 工程科技 > 能源化工

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

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