文档库

最新最全的文档下载
当前位置:文档库 > 课后习题上机答案

课后习题上机答案

亮角落上机资料

国家计算机等级考试C语言

第三章课后习题

3.17编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。

#include "stdio.h"

main()

{

printf("hour:%d,min:%d\n",560/60,560 %60);

}

3.18编写程序,输入两个整数:1500和350,求出它们的商和余数并进行输出。

#include "stdio.h"

main()

{

int a,b;

printf("Input a,b:");

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

printf("商=%d,余数=%d\n",a/b,a%b);

}

3.19编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位

数进四舍五入,最后输出结果。

#include "stdio.h"

main()

{

double a,b,c,ave;

printf("Input a,b,c:");

scanf("%lf%lf%lf",&a,&b,&c);

ave=(a+b+c)/3;

ave=(int)(ave*10+0.5);

ave/=10;

printf("ave=%f\n",ave);

}

3.20编写程序,读入三个数给a、b、c,然后交换它们中的数,把a中原来的值给b,把b中原来的值给c,把c中原来的值a,然后输出a、b、c。

#include "stdio.h"

main()

{

int a,b,c,t;

printf("Input a,b,c:");

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

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

t=b;b=a;a=c;c=t;

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

}

第四章课后习题

4.21 若a的值小于100,请将以下选择结构改写成switch语句构成的选择结构。

if(a<30) m=1;

else if(a<40) m=2;

else if(a<50) m=3;

else if(a<60) m=4;

else m=5;

程序清单:

#include "stdio.h"

main()

{

int a,m;

printf("Input a(a<100):");

scanf("%d",&a);

switch(a/10)

{

case 0:

case 1:

case 2: m=1; break;

case 3: m=2; break;

case 4: m=3; break;

case 5: m=4; break;

default : m=5;

}

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

}

4.22编写程序,输入一位学生的生日(年:y0、月:m0、日:d0),并输入当前的日期(年:y1、月:m1、日:d1),输出该生的实际年龄。

#include "stdio.h"

main()

{

int y1,y0,y,m1,m0,m,d1,d0,d;

printf("Input y0,m0,d0:");

scanf("%d%d%d",&y0,&m0,&d0); //从键盘输入学生的生日

printf("Input y1,m1,d1:");

scanf("%d%d%d",&y1,&m1,&d1); //从键盘输入当前的日期

if(d1>=d0) //如果当前日>出生日(day)

d=d1-d0; //当前day-出生day

else

{

d=d1+30-d0;

m1--; //出生month-1

}

if(m1>=m0)

m=m1-m0;

else

{

m=m1+12-m0;

y1--;

}

y=y1-y0;

printf("year:%d,mothe:%d,day:%d\n",y ,m,d);

}

4.23编写程序,输入一个整数,打印出它是奇数还是偶数。

#include "stdio.h"

main()

{

int x;

printf("Input x:");

scanf("%d",&x); if(x%2==0)

printf("%d是偶数!\n",x);

else

printf("%d是奇数!\n",x);

}

4.24编写程序,输入a、b、c三个数,打印出最大者。

#include "stdio.h"

main()

{

int a,b,c,max;

printf("Input a,b,c:");

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

if(a>b)

max=a;

else

max=b;

if(max

max=c;

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

}

4.25对于以下函数

x (-5

y= x-1 (x=0)

x+1 (0

编写程序,要求输入x的值,输出y的值。分别用:(1)不嵌套的if语句(2)嵌套的if语句(3)if-else 语句(4)switch语句

程序清单:

(1)不嵌套的if语句

#include "stdio.h"

main()

{

int x,y;

printf("Input x:");

scanf("%d",&x);

if(x>-5 && x<0)

y=x;

if(x==0)

y=x-1;

if(x>0 && x<10)

y=x+1;

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

}

(2)嵌套的if语句

#include "stdio.h"

main()

{

int x,y;

printf("Input x:");

scanf("%d",&x);

if(x>-5)

if(x<0)

y=x;

else if(x==0)

y=x-1;

else if(x<10)

y=x+1;

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

}

(3)if-else语句

#include "stdio.h"

main()

{

int x,y;

printf("Input x:");

scanf("%d",&x);

if(x>0 && x<10)

y=x+1;

else if(x==0)

y=x-1;

else if(x>-5)

y=x;

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

}(4)switch语句

#include "stdio.h"

main()

{

int x,y;

printf("Input x:");

scanf("%d",&x);

switch(x)

{

case -4:

case -3:

case -2:

case -1: y=x;break;

case 0: y=x-1;break;

case 1:

case 2:

case 3:

case 4:

case 5:

case 6:

case 7:

case 8:

case 9:y=x+1;break;

default:printf("error!"

);

}

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

}

第五章课后习题

5.17编写程序,求1-3+5-7+…-99+101的值。

#include "stdio.h"

main()

{

int i=1,s=0,sign=1;

while(i<=101)

{

s+=sign*i;

sign*=(-1);

i+=2;

}

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

}

5.18 (1) #include "stdio.h"

main()

{

double e=1.0,n=1.0;

int i;

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

{ n*=i;

e+=1/n;

}

printf("e=%lf\n",e);

}

(2)#include "stdio.h"

main()

{

double e=1.0,n=1.0;

int i=1;

while(1/n>=1e-4)

{

n*=i;

e+=1/n;

i++; }

printf("e=%lf\n",e);

}

5.19编写程序,输出从公元2000年至3000年所有闰年的年号,每输出10个年号换一行,判断公元年是否为闰年的条件是:

(1) 公元年数如能被4整除,而不能被100整除,则是闰年。

(2) 公元年数能被400整除也是闰年。

#include "stdio.h"

main()

{

int i,k=0;

for(i=2000;i<=3000;i+=4)

if(i%4==0&&i%100!=0 || i%400==0)

{

printf("%6d",i);

k++;

if(k%10==0) printf("\n");

}

}

5.20编写程序,打印以下图形:

#include "stdio.h"

main()

{

int i,a,k,x,s;

printf("input a add:");

scanf("%d",&a);

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

{

if(i<=(a+1)/2)

x=2*i-1;

else

x=2*(a-i)+1;

s=40-x/2;

for(k=1;k<=s;k++) printf(" ");

for(k=1;k<=x;k++) printf("*");

printf("\n");

}

}

第六章课后习题

6.19编写程序,输入一行字符(用回车结束),输出每个字符以及与之对应的ASCII代码值,每行输出三对。

#include "stdio.h"

main()

{

char c;

int i=0;

printf("Input a string:");

while((c=getchar())!='\n')

{

printf("%c %4d\t",c,c);

i++;

if(i%3==0) printf("\n");

}

printf("\n");

}

6.20请编写程序,输入一行数字字符(用回车结束),每个数字字符的前后都有空格。请编程,把这一行中的数字转换成一个整数。例如:若输入(代表Enter 键):

2 4 8

3

则输出整数:2483

#include "stdio.h"

main()

{

char c;

int a=0;

printf("Input digit char:");

while((c=getchar())!='\n')

if(c==' ')

continue;

else

a=10*a+c-'0';

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

}

6.21请编写程序统计输入的行数,用!号结束输入,!号所在行不计入行数。

#include "stdio.h"

main()

{

char c;

int i=0;

printf("Input string:"); while((c=getchar())!='!')

if(c=='\n') i++;

printf("line:%d\n",i);

}

6.22请编写程序统计输入的一行中小写字母的个数。

#include "stdio.h"

main()

{

char c;

int i=0;

printf("Input a string:");

while((c=getchar())!='\n')

if(c>='a' && c<='z') i++;

printf("small letter:%d\n",i);

}

6.23请编写输出以下图案的程序,图案的行数由输入的整数值确定(每行中字符之间没有空格)。

A

BBB

CCCCC

DDDDDDD

EEEEEEEEE

#include "stdio.h"

main()

{

int i,j,k,c='A',ch,n;

printf("input a line:");

scanf("%d",&n);

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

{

ch=2*i-1;

for(k=1;k<=40-ch/2;k++) printf(" "); for(j=1;j<=ch;j++) printf("%c",c); printf("\n");

}

}