C语言程序设计(第二版)习题参考答案

发布时间 : 星期日 文章C语言程序设计(第二版)习题参考答案更新完毕开始阅读

sum=a*n+n*(n-1)*d/2; printf(“ sum=%d\\n”,sum); }

9. 编写程序,将d天h小时m分钟换算成分钟,输入d、h、m,输出换算结果。

解:#include <>

void main() {

int d,h,m,t;

printf(“请输入天 小时 分钟\\n”); scanf(“%d%d%d”,&d,&h,&m); t=d*24*60+h*60+m;

printf(“%d天%d小时%d分钟=%d分钟\\n”,d,h,m,t); }

10. 编写程序,求出给定半径r的圆以及内接正n边形的面积,输出计算结果。r和n的值由键盘输入。

解:#include <>

#include <> #define PI

void main() {

double r,s1,s2; int n;

printf(“Input r n\\n”); scanf(“%lf%d”,&r,&n); s1=PI*r*r;

s2=n/*r*r*sin(2*PI/n);

printf(“圆面积=%f,正内接%d边形面积=%f\\n”,s1,s2); }

习 题 4

一、单项选择题

1.下列语句将小写字母转换为大写字母,其中正确的是( )。

A.if(ch>='a'&ch<='z')ch=ch-32; B.if(ch>='a'&&ch<='z')ch=ch-32; C.ch=(ch>='a'&&ch<='z')ch-32:' '; D.ch=(ch>'a'&&ch<'z')ch-32:ch;

2.下列各语句中,能够将变量u、s中最大值赋给变量t的是( )。

A.if(u>s)t=u;t=s; B.t=s;if(u>s)t=u; C.if(u>s)t=s;else t=u D.t=u;if(u>s)t=s;

3.假设变量x、k都已定义,下列语句片段中,无语法错误的是( )。

A. switch(x){

case x>=90: putchar('A'); case x<60: putchar('E'); }

B. switch(x) {

case 1+2: k='A'; defualt: k='E'; case 2*4: k='B'; }

C. switch(x){

case 2+x: k=x-2; case 3*x: k=x+3; default: k=0; }

D. switch(x){

case : k=*x; case : k=8*x; default: k=0; }

*4.与语句while(!s )中的条件等价的是( )。

A.s==0 B.s!=0 C.s==1

5.下列语句中,哪一个可以输出26个大写英文字母( )。

A.for(a='A';a<='Z';printf(\,++a)); B.for(a='A';a<'Z';a++)printf(\,a); C.for(a='A';a<='Z';printf(\,a++)); D.for(a='A';a<'Z';printf(\,++a));

6.判断下面的while循环体的执行次数( )。

i=0; k=10;

while( i=8 ) i=k––; A.8次 B.10次 C.2次

解:(1) B (2) B (3) B (4) A (5) C (6) D 二、写出下列程序的输出结果 1.#include <>

void main() {

D.s=0

D.无数次

* * * * * char x; * * * * * * * * int n=0,k=0; * * * * * * * * * * * * while((x=getchar())!='#'){ 0

* * * * * x?y?zcs?* * * * * n ?* s* 面积(s?x)(s?y)(s?z) 1 * 1111n * * 2.3f1??????n前40°22 111x?y?234x5??60y??0x?0?1* F3s?1????.....-3-n-1-2??23!22!4!10101010x?0 1In2In3In4Inf(x)??0年信息查询元旦x?0 y2.?0?x?yf(x,y)??是星期几信息查 3. 程序结束\\n”); x?0???1x??0y?0printf(“请输入年份:\\n”); ?x?yscanf(“%d”,&year); ?x?0y??0?x?yprintf(“请选择功能:\\n”); scanf(“%d”,&number); if(number==1)

{ year=legal(year); leapyear(year);

}

if(number==2)

{ week=judgeweeknumber(year); judgeweekchinese(week); }

if(number==3) return;

}

int legal(int y) { if(y<0) do {

printf(“请重新输入一个年份:”); scanf(“%d”,&y);

} while(y<0); return y; }

void leapyear(int y) {

if(y%4==0&&y0!=0||y@0==0) printf(“%d是闰年\\n”,y); else

printf(“%d不是闰年\\n”,y);

}

int judgeweeknumber(int y) { int week;

week=(y+(y-1)/4-(y-1)/100+(y-1)/400)%7;

return week; }

void judgeweekchinese(int week) { switch(week)

{ case 0: printf(“星期天”); break; case 1: printf(“星期一”); break; case 2: printf(“星期二”); break; case 3: printf(“星期三”); break; case 4: printf(“星期四”); break; case 5: printf(“星期五”); break; case 6: printf(“星期六”); break; } }

*14.输入n、x,计算xn 输出。要求定义一个递归函数计算xn 。

解:#include<>

double mypow(double x,int n) {

double y=1; if (n>0)

return(x*mypow(x,n-1)); else

if (n<0) return(1/x*mypow(x,n+1)); else return 1; }

void main() { double x; int n;

printf(“请输入x n:\\n”); scanf(\ printf(\ }

*15.数列的第1、2项为1,此后各项为前两项之和。编制求数列中任何一项值的递归函数。

解:此数列为1、1、2、3、5、8、13 ……。

#include<> int f(int n)

{ if (n==1||n==2) return (1); else

return (f(n-1)+f(n-2)); }

void main() { int n;

while(scanf(\

printf(\数列第%d项为:%d\ }

习 题 5

一、单项选择题

1.下列能正确定义一维数组a的语句是( )。

A.int a(10); B.int n=10,a[n]; C.int n;scanf(\,&n); D.#define n 10

int a[n]; int a[n];

2.若有定义语句“int a[10];”则下列对a中数组元素正确引用的是( )。

A.a[10/2–5] B.a[10] C.a[] D.a(1)

3.能对一维数组正确初始化的语句是( )。

A.int a[6]={6*1}; B.int a[6]={1,,,3}; C.int a[6]={}; D.int a[6]=(0,0,0);

4.以下能正确定义二维数组的语句为( )。

A.int a[][]; B.int a[][4]; C.int a[3][]; D.int a[3][4];

5.若有数组定义语句“int a[4][5];”,则对a中数组元素的正确引用是( )。

A.a[4][1] B.a[2,1] C.a[4][5] D.a[4–1][5–5]

6.以下能对二维数组a进行正确初始化的语句为( )。

A.int a[2][]={{1},{4,5}}; B.int a[2][3]={1,2,3,4,5,6,7}; C.int a[][]={1,2,3,4,5,6}; D.int a[][3]={1,2,3,4,5};

7.下列对字符数组s的初始化不正确的是( )。

A.char s[5]=\; B.char s[5]={'a','b','c','d','e'}; C.char s[5]=\; D.char s[]=\;

8. 下列程序段的运行结果为( )。

char s[]=\ A.ab0 B.ab C.Abcd

9.下列数组s中所存放字符串的长度为( )。

char s[]=\

D.ab cd

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

10.有数组定义语句“char a[20];”,则正确的输入语句为( )。

联系合同范文客服:xxxxx#qq.com(#替换为@)