c语言程序设计(科学出版社)课后习题解答由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言课后习题及答案”。
第3章 习题解答
第1章
1.C 语言程序主要由预处理命令、函数、注释等组成。
2.填空
(1)分号
(2)main(3)stdio.h 3.源程序:
#include main(){
printf(“*************************n”);printf(“Hello World!n”);
printf(“*************************”);} 4.源程序:
#include main(){
int a, b, c;/* 定义变量 */
scanf(“%d”, &a);/* 输入第一个整数 */ scanf(“%d”, &b);/* 输入第二个整数 */ c=a-b;/*
计算差 */
printf(“%d-%d=%d”,a,b,c);/* 输出结果 */ } 5.(1)(2)x=10;
(3)printf(“s=%dn”,s);
第2章
1.(1)c(2)a(3)b g(4)a d e(5)d
2.a.5 b.295
c.4 d.29 e.9 3.a.x=4,y=6
b.x=4,y=3 f.x=3,y=6 4.16 5.#include main(){
int a,b,c;
scanf(“%d%d”,&a,&b);c=a*b;
printf(“%d*%d=%d”,a,b,c);}
第3章
1.(1)b(2)b(3)d(4)a(5)b 2.(1)&a,&b(2)l,s
3.printf(“x=%.2f,y=%.2fn”,x,y);
4.#include main(){
int num1,num2,num3,sum;
float average;
scanf(“%d%d%d”,&num1,&num2,&num3);
sum=num1+num2+num3;
average=sum/3.0;
printf(“sum=%d,average=%.2fn”,sum,average);} 5.#include main(){
int hour,minute,second,total;/* 定义变量代表时、分、秒和总秒数 */
scanf(“%d”,&total);
hour=total/3600;
minute=total%3600/60;
second=total%3600%60;
printf(“%dhours:%dminutes:%dsecondsn”,hour,minute,second);}
第4章
1.(1)a(2)b(3)b(4)b
(5)b 2.0 3.(1)6(2)4(3)1(4)1 4.#include main(){
int x,y;
scanf(“%d”,&x);
if(x>-5 && x
y=5*x;
if(x == 0)
y=-1;
if(x>0 && x
y=2*x+1;
printf(“x=%d,y=%dn”,x,y);} 5.#include main(){
int score,rank;/* score 表示成绩,rank 表示级别 */
printf(“Please input score:”);
scanf(“%d”,&score);
rank=score/10;
switch(rank)
{
case 10:
case 9: printf(“成绩等级为:An”);break;
case 8: printf(“成绩等级为:Bn”);break;
case 7: printf(“成绩等级为:Cn”);break;
case 6: printf(“成绩等级为:Dn”);break;
default:printf(“成绩等级为:En”);break;
} } 6.#include void main(){
int n;
printf(“Please input the digit:”);
scanf(“%d”,&n);
switch(n)
{
case 1:printf(“Jan n”);break;
case 2:printf(“Feb n”);break;
case 3:printf(“Mar n”);break;
case 4:printf(“Apr n”);break;
case 5:printf(“May n”);break;
case 6:printf(“Jun n”);break;
case 7:printf(“Jul n”);break;
case 8:printf(“Agu n”);break;
case 9:printf(“Sep n”);break;
case 10:printf(“Oct n”);break;
case 11:printf(“Nov n”);break;
case 12:printf(“Dec n”);break;
} }
第5章
1.(1)b(2)a(3)b(4)d(5)d 2.7,1 3.y=-1 4.m=6 5.10,14 6.3 7.5
8.ABABCDCD 9.# include main(){
int i;
long int sum=0;
for(i=2;i
sum+=i;
printf(“2+4+6+...+200=%ld”,sum);} 10.#include main(){
long int n;
int sum = 0;
printf(“Please input the nber:”);
scanf(“%ld”,&n);
while(n!= 0)
{
sum += n % 10;
n /= 10;
}
printf(“%dn”, sum);}
第6章
1.(1)d(2)b(3)d(4)c
(5)a 2.11 3.3 4.5689 5.12,6
6.(1)i--(2)n
7.(1)char k;
(2)i
#include main(){
float a[10];
int i;
float sum=0,average;
for(i=0;i
{
printf(“a[%d]=?”,i);
scanf(“%f”,&a[i]);
sum+=a[i];
}
average=sum/10;
printf(“average is %.2fn”,average);} 9.#include #define N 10 main(){
int a[N],i,target,found;
for(i=0;i
scanf(“%d”,&a[i]);
printf(“Please input a number:”);
scanf(“%d”,&target);
i=0;
while(i
i++;
found = i
printf(“%dn”,found);} 10.#include #define N 80 main(){
char str[N];
int len=0,i=0;
printf(“Please input a string:”);
gets(str);
while(str[i++]!= 0)len++;
printf(“the length of string is %d.n”,len);}
第7章
1.21
2.136 3.16
4.(1)func
(2)m++
5.9
6.1,6,3,2,3 7.2,5,1,2,3,-2 8.#include int fun(int a,int b,int c);main(){
int a,b,c,max;
printf(“Please input three numbers:”);
scanf(“%d%d%d”,&a,&b,&c);
max=fun(a,b,c);
printf(“Max is %d.n”,max);}
int fun(int a,int b,int c){
int max;
max= a>b?(a>c?a:c):(b>c?b:c);
return max;} 9.#include long int sum(int n);main(){
int n;
printf(“n=?”);
scanf(“%d”,&n);
printf(“Sum=%ld.n”,sum(n));}
long int sum(int n){
if(n = = 1)return 1;
else return sum(n-1)+n;} 10.#include void fun(n);main(){
int n;
printf(“n=?”);
scanf(“%d”,&n);
fun(n);
}
void fun(n){
if(n = = 0)return;
else
{
fun(n/2);
printf(“%-2d”,n%2);
} }
第8章
1.(1)b(2)d(3)b(4)c(5)c 2.8
3.123456789 4.2 3 4 5 6 5.345
6.1 2 3 4 5 6 7.b[i]
8.bcdefgha 9.p=sum 10.#include #include main()
{
char str[80];
char *p1, *p2;gets(str);p1=str;
p2=str+strlen(str)-1;
while(p1
puts(p1
}
第9章
1.a.#define F(x)(x)*(x)*(x)b.#define F(x)(x)%4
c.#define F(x,y)(x)*(y)
c.#define DOUBLE(x)2*(x)3.d 4.-20
5.N is undefined 6.7.5 7.y=6 8.#include
#define SWAP(a,b){int temp;temp=a;a=b;b=temp;} main(){
int x,y;
printf(“x=?”);
scanf(“%d”,&x);
printf(“y=?”);
scanf(“%d”,&y);
SWAP(x,y)
printf(“x=%d,y=%d.n”,x,y);}
第10章
1.struct student{
int sno;
char sname[10];
char sex;}stu1,stu2;2.12
3.合法的有a,b,d
c.改成 s.u.rectangle.length=25;
e.改成 s.u.circle.radius=5;
f.改成 s.u.circle.radius=5;
4.a,b,c,d(说明:变量 b 有确定的值之后,b++是合法的。)5.改为
typedef struct product {
char name[10];float price;}PRODUCT;
PRODUCT products[10];
6.(1)struct employee(2)printemp(emp)7.2 4 3 9 8 8.#include struct time_struct {
int hour;
int minute;
int second;};
main(){
struct time_struct time;
printf(“Input time?n(Example 18:28:38)n”);
scanf(“%d:%d:%d”,&time.hour,&time.minute,&time.second);
printf(“Time is %d:%d:%dn”,time.hour,time.minute,time.second);} 9.#include struct time_struct {
int hour;
int minute;
int second;}time;
void enter_time();void display_time();main(){
enter_time();
display_time();}
void enter_time(){
printf(“Enter the time(example 18:28:38)?”);
scanf(“%d:%d:%d”,&time.hour,&time.minute,&time.second);}
void display_time(){
printf(“Time is %d:%d:%d.n”,time.hour,time.minute,time.second);} 10.#include #define N 3 struct hotel {
char name[31];/*旅馆名称*/
char addre[31];/*旅馆地址*/
int grade;/*旅馆级别*/
float average_charge;/*平均房价*/
int number;/*房间数量*/ }h[N]={
{“h1”,“上海路”,5,500.00,80}, {“h2”,“北京大街”,5,480.00,70}, {“h3”,“南京大街”,3,300.50,100} };
main(){
int grade,i;
printf(“请输入级别(3-5)?”);
scanf(“%d”,&grade);
for(i=0;i
if(h[i].grade==grade)
printf(“名称:%sn 地址:%sn 级别:%dn平均房价%.2fn 房间数量:%dn”,h[i].name,h[i].addre,h[i].grade,h[i].average_charge,h[i].number);}
第11章
1.(1)c
(2)d(3)b(4)b(5)b
2.Basican 3.fgetc(fp)
4.“record.dat”, “w” 5.#include #include #include
typedef struct Employee {
int id;
char name[20];
char gender[20];
int age;
char addre[20];}Employee;
int main(void){
FILE *fp;
char another,choice;
Employee emp;
long int recsize;
fp=fopen(“employee.dat”,“rb+”);
if(fp==NULL)
{
fp=fopen(“employee.dat”,“wb+”);
if(fp==NULL)
{
printf(“Can't Open File”);
exit(0);
}
}
recsize=sizeof(emp);
while(1)
{
printf(“1.添加记录 2.显示男员工 3.退出n”);
printf(“Enter your choice(1-3):”);
fflush(stdin);
scanf(“%c”,&choice);
switch(choice)
{
case'1':
fseek(fp,0,SEEK_END);
another='Y';
while(another=='Y'|| another=='y')
{
printf(“输入信息(id 姓名
性别
年龄 住址):n”);
scanf(“%d %s %s %d
%s”,&emp.id,&emp.name,&emp.gender,&emp.age,&emp.addre);
fwrite(&emp,recsize,1,fp);
printf(“是否继续(Y/N): ”);
fflush(stdin);
another=getchar();
}
break;
case '2':
printf(“学号t 姓名t性别t 年龄t住址n”);
rewind(fp);
while(fread(&emp,recsize,1,fp)==1)
if(strcmp(emp.gender,“男”)==0)
printf(“%dt%st%st%dt%sn”,emp.id,emp.name,emp.gender,emp.age,emp.addre);
break;
case '3':
fclose(fp);
exit(0);
}
} } 6.#include“stdio.h” #include“stdlib.h” #define M 2
#define stu struct student stu {
int num;
char name[20];
float s1;
float s2;
float s3;
float avg;};main(){
stu st[M];
FILE *fp;
int i;
printf(“请输入 5 名同学生的成绩,按照学号,姓名,成绩 1,成绩2,成绩 3 的顺序,中间用空格隔
开:n”);
for(i=0;i
{
scanf(“%d%s%f%f%f”,&st[i].num,st[i].name,&st[i].s1,&st[i].s2,&st[i].s3);
st[i].avg=(st[i].s1+st[i].s2+st[i].s3)/3;
} if((fp=fopen(“stud.rec”,“wb”))==NULL)
{
printf(“cannot open filen”);
}
for(i=0;i
{
if(fwrite(&st[i],sizeof(stu),1,fp)!=1)
printf(“file write errorn”);
}
fclose(fp);
fp=fopen(“stud.rec”,“rb”);
printf(“numtnametscore1tscore2tscore3taveragen”);
for(i=0;i
{
fread(&st[i],sizeof(stu),1,fp);
printf(“%dt%st%.2ft%.2ft%.2ft%.2fn”,st[i].num,st[i].name,st[i].s1,st[i].s2,st[i].s3,st[i].avg);
}
fclose(fp);}
第12章
1.a.2 b.4 c.11 d.4 e.-15 f.28 g.-36 2.程序设计分析:先将整数x 右移4 位,将该整数机内码的第4 到7 位移至第0 到3 位,然后与0x000f(***1)进行位与运算,所保留的低4 位就是所要的结果
#include void main(){
int x,y;
scanf(“%d”,&x);
y=x>>4;y=y&0x000f;
printf(“4~7位的十六进制数:y=%#xn”,y);} 3.d
4.(1)p!=NULL
(2)p=p->next 5.p=p->next
6.略
第七章 函数调用 7-1 写两个函数,分别求两个整数的最大公约数和最小公倍数, #include void main() { int hcf(int,int); int lcd(int,int,int);int u,v,h,l; scanf("%d,%......
高等院校计算机基础教育规划教材《C++程序设计》课后习题参考答案――武汉大学出版社习题1参考答案一、选择题 1.A 2.D二、填空题1.BASIC、FORTRAN、AL_GOL60和COBOL 2.8 3......
习题一1.运行startup.bat启动Tomcat服务器的好处是什么?答:确保Tomcat服务器使用的是Java_home环境变量设置的JDK。2.请在C:\下建立一个名字为book的目录,并将该目录设置成一个We......
C语言程序设计教程课后习题答案第一章 C语言程序设计概述 -习题答案1 算法的描述有哪些基本方法?答1、自然语言2、专用工具2 C语言程序的基本结构是怎样的?举一个例子说明。答1......
/*练习5-3*/ #include int prime(int m) {int i;for(i=2;iif(m%i==0)break;if(i==m)return 1;elsereturn 2; } main() {int i,m,n,sum=0,a=0;printf("enter m and n:(1scan......