程序设计基础习题及答案文档格式.docx

上传人:b****5 文档编号:21646791 上传时间:2023-01-31 格式:DOCX 页数:36 大小:49.76KB
下载 相关 举报
程序设计基础习题及答案文档格式.docx_第1页
第1页 / 共36页
程序设计基础习题及答案文档格式.docx_第2页
第2页 / 共36页
程序设计基础习题及答案文档格式.docx_第3页
第3页 / 共36页
程序设计基础习题及答案文档格式.docx_第4页
第4页 / 共36页
程序设计基础习题及答案文档格式.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

程序设计基础习题及答案文档格式.docx

《程序设计基础习题及答案文档格式.docx》由会员分享,可在线阅读,更多相关《程序设计基础习题及答案文档格式.docx(36页珍藏版)》请在冰豆网上搜索。

程序设计基础习题及答案文档格式.docx

1.22C程序执行的入口是main()函数,所以main函数必须放在程序的开头。

错误:

main函数可以放在程序的任何位置。

并不限定在程序的开头。

1.23定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。

不可以交叉出现,数据说明部分在执行语句部分的前面。

1.24编辑与编译不是一回事。

不是一回事。

编辑完成源程序的输入和修改;

编译是对源程序进行语法检查,如果无语法错误,则生成目标程序。

1.25scanf("

%d,%d"

&

x,&

y);

的正确输入格式:

3,4<

回车>

正确

1.26注释内容太多会影响程序的执行效率。

不会影响程序的执行效率。

因为在编译时,编译系统将注释内容删除或用空格代替,所以注释内容不会编译到目标程序中。

1.27所有的数学公式可以直接出现在源程序中。

数学公式需要转换成C语言能够接受的公式才能出现在源程序中。

四、编程题

1.28在屏幕上输出自己名字的拼音。

提示:

中文名字叫“张三”,对应的拼音为“ZhangSan”,输出用printf()函数。

1.29输入圆的半径,求圆的周长,并将结果保留两位小数输出到屏幕上。

定义圆的半径r,圆的周长:

2*3.14*r,输出结果保留2位小数可以用%.2f

【习题2运算符与表达式】

一、计算题

2.12.8+7%3*11%2/4(答案:

2.8)

2.25/2+5.0/2+7%6(答案:

5.5)

2.3a=12,a*=2+3(答案:

a=60)

2.4a=3,b=4,c=5,a+b>

c&

&

b==c(答案:

0)

2.53>

5?

3:

5<

8?

25:

40(答案:

25)

2.6设a=1,b=2,c=3,d=4,m=n=1,有表达式(m=a>

b)&

(n=c>

d),计算表达式后m,n的值?

(答案:

m=0,n=1)

2.7 设intb=7;

floata=2.5,c=4.7;

求下面表达式的值。

a+(int)(b/2*(int)(a+c)/2)%4(答案:

4.5)

2.8 若有代数式

,则不正确的C语言表达式是(C)。

A)x/b/c*y*8B)8*x*y/b/c

C)8*x*y/b*cD)x*y/c/b*8

2.9 有如下类型说明:

intk,a,b;

unsignedlongw=8;

doublex=2.9

则以下不符合C语言语法的表达式是(A)。

A)x%(-3)B)w*=-2

C)k=(a=6,b=4,a-b)D)a*=a+=a-=(b=4)*(a=3)

2.10 有如下类型说明:

floatn;

intm;

则以下能实现将n中的数值保留小数点后两位,第三位四舍五入的表达式是(B)。

A)n=(n*100+0.5)/100.0B)m=n*100+0.5,n=m/100.0

C)n=n*100+0.5/100.0D)n=(n/100+0.5)*100.0

2.11 设k=7,x=12;

则下列表达式值为3的是(D)。

A)x%=(k%=5)B)x%=(k-k%5)

C)x%=k-k%5D)(x%=k)-(k%=5)

2.12 已知m=48,ch='

n=0;

则表达式(m>

=n&

ch<

'

n)的值是(B)。

A)0B)1C)真D)非0

2.13 下面哪个式子在b为奇数时结果为假(C)。

A)a%2==1B)!

(a%2==0)C)!

(a%2)D)a%2

2.13 执行printf("

%f"

(x=3,y=5,x>

y?

1:

1.5));

后的输出结果是(D)。

A)语法错误B)1C)1.5D)1.500000

2.14 能表示条件0≤x≤100的表达式是(D)。

A)0<

=x<

=100B)x>

=0,x<

=100

C)0≤x≤100D)x>

=0&

x<

2.15 判断char型变量ch为数字的正确表达式是(B)。

A)ch>

="

0"

9"

B)ch>

='

0'

9'

C)'

≤ch≤'

D)ch>

||ch<

三、编程题(应用条件运算)

2.16输入一个整型成绩x,如果大于等于60分,输出“pass”,否则输出“fail”。

printf("

%s"

x>

60?

"

pass"

:

fail"

);

2.17 输入一个年份y,如果是闰年,输出“yisaleapyear”,否则输出“yisnotaleapyear.”

%dis%s"

y%4==0&

y%100!

=0||y%400==0?

aleapyear."

notaleapyear."

2.18 输入三条边a,b,c,如果它们能构成一个三角形,输出“Yes”,否则输出“No”。

a+b>

a+c>

b&

b+c>

a?

Yes"

No"

2.19 输入三个数x,y,z,按从小到大的输出结果。

分别用max0,min0代表最大、最小值,mid0表示中间值。

max0=(x>

x:

y)>

z?

(x>

y):

z;

max0=(x<

y)<

(x<

mid0=x+y+z-max0-min0;

2.20 输入一个平面上的点坐标,判断它是否落在圆心(0,0),半径为1的圆内,如果在圆内,输出“Yes”,否则输出“No”。

分别用x,y代表平面上一个点。

x*x+y*y<

=0?

2.21自增、自减运算符的用法与运算规则示例。

2.22计算下列表达式。

(1)

(2)

提示:

模仿例2.27

2.23字母的大小写转换。

2.24计算圆柱体的体积V=πr2h,其中π=3.14159。

模仿2.27

2.25输入两个整数,输出其中最大者。

模仿P29

2.26输入三个整数,输出其中最小者。

min(min(a,b),c);

2.27设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。

用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。

请编程序。

参考源程序:

main()

{floatr,h,C1,Sa,Sb,Va,Vb;

scanf("

%f,%f"

r,&

h);

C1=2*3.14*r;

Sa=3.14*r*r;

Sb=4*Sa;

Va=4*3.14*r*r*r/3;

Vb=Sa*h;

printf("

C1=%.2f\n"

C1);

Sa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f\n"

Sa,Sb,Va,Vb);

}

【习题3控制流】

3.1 编程实现,输入一个整数,判断它是否为偶数,并显示相应的信息。

x代表输入的整数,if(x%2==0)printf("

\neven"

elseprintf("

\nodd"

3.2编程实现,输入一个平面上的点,判断它是否落在单位圆上,并显示相应的信息。

x,y代表平面坐标,if(x*x+y*y==1)printf("

\nYes"

\nNo"

3.3编程实现,输入一个成绩等级(A-E),显示相应的百分制成绩段。

A:

90-100

B:

80-89

C:

70-79

D:

60-69

E:

<

60

chargrade;

if(grade=='

)printf("

\n90-100"

elseif(grade=='

B'

\n80-89"

....

3.4写出下面程序的运行结果:

#include<

stdio.h>

main()

{

inta=-1,b=1,c=5;

switch(a>

0){

case1:

switch(b-2<

break;

case2:

*"

}

case0:

switch(c==5){

!

#"

default:

%%"

@"

运行结果:

#@

3.5将以下语句改写成switch语句。

if((t>

0)&

(t<

=10))

=3)&

=6))x=2;

elseif((t>

1)||(t>

8))x=3;

elsex=1;

elsex=0;

intt;

if(t<

=0||t>

10)c=0;

elsec=t;

switch(t)

{case0:

x=0;

x=3;

case3:

case4:

case5:

case6:

x=2;

case7:

case8:

case9:

case10:

}

3.7编程实现一个具有简单四则运算功能的计算器。

参照例4.18,随机产生3个数,其中一个数用来判断是哪种运算。

3.8编程实现,输入一行字符,将其中的数字字符对应的整数值加起来并输出结果。

如:

a45b8&

*3则是4+5+8+3,结果为20。

charc;

intsum=0;

while((c=getchar())!

\n'

)if(c>

c<

)sum=sum+c-'

;

3.9编程实现,求

的值。

先计算n!

,再在计算阶乘的外面套上一层循环。

注意:

20!

是一个很大的值,floats=1;

inti;

例如:

计算6!

for(i=1;

i<

=6;

i++)s=s*i;

3.10编程实现,找出1000之内的所有完数,并按下面格式输出其因子:

6itsfactorsare1,2,3,

所谓“完数”是指一个数如果恰好等于它的因子之和,因子是指能够整除该数的数。

先判断数是否为完数,如果是再考虑输出因子。

以6为例输出因子:

for(i=1;

6;

i++)if(6%i==0)printf("

%d,"

i);

3.11编程实现,计算序列的前20项之和,

,...

这是一个累加式,每项是一个分式,用a、b分别表示分子、分母。

如果a、b都是整数,则是整除。

floatsum=0,a=2,b=1;

inti;

for(i-1;

=20;

i++){sum=sum+a/b;

a=a+b;

b=a-b;

3.12编程实现,求Sn=a+aa+aaa+...+

aa...a之值,其中a是一个数字。

2+22+222+2222+22222(此时n=5),n,a由键盘输入。

这是一个累加式,后1项可以由前一项表示,譬如:

第2项可以由第1项表示:

第1项t=a;

第2项:

t=t*10+a;

3.13编程实现,把从键盘输入的金额数(以圆为单位)按人民币面额划分,然后显示支付该金额的各种面额人民币的数量。

譬如:

123.58元可以表示100元:

1张;

20元:

2元:

1元:

5角:

5分:

1枚;

2分:

1分:

1枚。

为了简单可以只完成整数部分转换,即输入的金额数为整数。

3.14编程实现,使用循环结构打印以下图案。

*

***

*****

*******

输出时,本图案要按向上三角形和向下三角形进行输出。

每行输出中包括空格输出,‘*’号输出。

输出空格和‘*’号个数要与行循环控制变量关联起来。

3.15编程实现,以菜单方式实现猜数游戏系统。

(功能自己设定)

模仿例4.14和例4.18完成。

功能可以包括猜数范围,人数等设置。

3.16编程实现,以菜单方式实现四则运算辅助教学系统。

随机产生两个操作数和运算符+、-、*、/,由使用者输入一个数,判断计算结果与输入的数是否相等,如果相等,表示正确,否则是错误的。

3.17输入四个整数,要求按大小顺序输出。

参考源程序:

main()

{inta,b,c,d,t;

scanf("

%d,%d,%d,%d"

a,&

b,&

c,&

d);

if(a<

b)t=a,a=b,b=t;

c)t=a,a=c,c=t;

d)t=a,a=d,d=t;

if(b<

c)t=b,b=c,c=t;

d)t=b,b=d,d=t;

if(c<

d)t=c,c=d,d=t;

%d,%d,%d,%d\n"

a,b,c,d);

3.18求∑n!

(n=1->

20),(即求1!

+2!

+3!

+4!

+5!

+…+20!

参考源程序:

{intn,i=1;

longsum=0,s=1;

%d"

n);

while(i<

=n)

{s=s*i;

sum=sum+s;

i++;

sum=%ld\n"

sum);

3.19输入两个正整数m和n,求其最大公约数和最小公倍数。

{longm,n,i=1,j,s;

%ld,%ld"

m,&

for(;

=m&

=n;

i++)

{if(m%i==0&

n%i==0)s=i;

if(m>

=n)j=m;

elsej=n;

(j%m==0&

j%n==0);

j++);

s=%ld,j=%ld\n"

s,j);

3.20输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

#include"

stdio.h"

{

inti=0,j=0,k=0,l=0;

while((c=getchar())!

{if(c>

=65&

=90||c>

=97&

=122)i++;

elseif(c>

=48&

=57)j++;

elseif(c==32)k++;

elsel++;

i=%d,j=%d,k=%d,l=%d\n"

i,j,k,l);

3.21打印出所有"

水仙花数"

,所谓"

是指一个三位数,其各位数字立方和等于该本身。

153是一个水仙花数,因为153=1^3+5^3+3^3。

math.h"

{

intx=100,a,b,c;

while(x>

=100&

1000)

{a=0.01*x;

b=10*(0.01*x-a);

c=x-100*a-10*b;

if(x==(pow(a,3)+pow(b,3)+pow(c,3)))printf("

%5d"

x);

x++;

3.22猴子吃桃问题。

猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。

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

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

到第10天早上想再吃时,见只剩下一个桃子了。

求第一天共摘多少桃子。

inti=1,sum=0;

=10;

i++)

sum=2*sum+1;

sum=%d\n"

3.23打印以下图案

***

*****

*******

inti=1,k,l,m;

=49;

k=i%7;

l=3-fabs((i-1)/7-3);

m=fabs(i-4-7*((i-1)/7));

if(k==1)

if(m<

=l)

else

"

3.24古典问题:

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

1.程序分析:

 兔子的规律为数列1,1,2,3,5,8,13,21....

2.程序源代码:

longf1,f2;

f1=f2=1;

 {printf("

%12ld%12ld"

f1,f2);

   if(i%2==0)printf("

/*控制输出,每行四个*/

   f1=f1+f2;

/*前两个月加起来赋值给第三个月*/

   f2=f1+f2;

 }

 

【习题4函数与程序结构】

一、填空题

4.1C语言程序执行的开始处是main函数。

4.2C程序中的一个函数由两部分组成,即声明部分和执行部分。

4.3为了保证被调用函数不返回任何值,其函数定义的类型应为void。

4.4若一个局部变量的存储类型是static,则该变量的值在程序执行完成时被释放。

4.5预处理命令#include的作用是文件包含。

4.6定义一个宏,功能是判断两个数是否相等,相等为1,不等为0。

#defineEQU(a,b)(a)==(b)?

0

4.7变量的存储类别有自动型、静态型、寄存器型、和外部类型共4种,它们分别用auto、static、register、extern标识。

二、选择题

4.8下述函数定义形式正确的是(C)。

A.intf(intx;

inty)B.intf(intx,y)

C.intf(intx,inty)D.intf(x,y:

int)

4.9关于函数参数,说法正确的是(A)。

A.实参与其对应的形参各自占用独立的内存单元

B.实参与其对应的形参共同占用一个内存单元

C.只有当实参和形参同名时才占用同一个内存单元

D.形参是虚拟的,不占用内存单元

4.10用数组名作为函数的实参时,传递给形参的是(A)。

A.数组的首地址B.数组的第1个元素

C.数组中的全部元素D.数组的元素个数

4.11复合语句中定义的变量的作用范围是(D)。

A.整个源文件B.整个函数

C.整个程序D.所定义的复合语句

4.12一个函数的返回值由(D)确定。

A.return语句中的表达式B.调用函数的类型

C.系统默认的类型D.被调用函数的类型

4.13在一个C源文件中,若要定义一个只允许本源文件所有函数使用的全局变量,其他文件中不允许使用,则该变量需要使用的存储类别是(D)。

A.autoB.registerC.externD.static

三、判断题

4.14若定义的函数没有参数,则函数名后的圆括号可以省略。

()

4.15函数的函数体可以是空语句()。

4.16只有main函数才能调用其他函数。

4.17return语句中表达式的类型必须与函数定义的类型一致。

4.18函数的实参和形参可以是相同的名字。

4.19函数调用中,形参与实参的类型和个数必须保持一致。

4.20外部类型的变量只能定义一次,但可在不同地方声明多次。

4.21外部类型的变量作用范围大,编程中应多用外部变量。

4.22预处理命令行必须以#开头,且最后要用分号结尾。

4.23宏命令的处理占用编译时间,而不占用运行时间。

四、看程序写结果

4.24

intfun(intn)

{intf=1;

f=f*n*2;

return(f);

{inti,j;

i<

=5;

%d\t"

fun(i));

程序运行结果:

246810

4.25

intx1=30,x2=40;

{intx3=10,x4=20;

sub(x3,x4);

sub(x2,x1);

x1=%d,x2=%d,x3=%d,x4=%d"

x1,x2,x3,x4);

sub(intx,inty)

{intx1=x;

x=y;

y=x1;

x1=30,x2=40,x3=10,x4=20

4.26

#defineA4

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

当前位置:首页 > 职业教育 > 中职中专

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

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