习题答案.docx
《习题答案.docx》由会员分享,可在线阅读,更多相关《习题答案.docx(26页珍藏版)》请在冰豆网上搜索。
习题答案
第1章习题答案
1.填空题
(1)函数、一个主函数、函数。
(2)/*、*/。
(3)连接。
(4)#。
(5).h。
(6).c、.obj、.exe。
2.填空题
(1)C
(2)C(3)D(4)B(5)D(6)A
3.程序设计题
(1)#include
voidmain()
{
printf("*\n");
printf("*A*\n");
printf("*\n");
}
(2)#include
voidmain()
{
printf("***************\n");
printf("Yourareastudent\n");
printf("***************\n");
}
第2章参考答案
1.
(1)C
(2)A(3)B(4)B
(5)A(6)C(7)B(8)A
(9)C(10)A
2.
(1)0x
(2)\0(3)5(4)a%2!
=0或a%2==1(5)0
(6)x>20&&x≤60(7)3.5(8)0(9)2(10)4
3.
(1)
#include
voidmain()
{
floatr=0,h=0,l=0,v=0,pi=0;
pi=3.1415926;
printf("请输入圆半径及圆柱的高,用逗号分隔:
");
scanf("%f,%f",&r,&h);
l=2*pi*r;
v=pi*r*r*h;
printf("圆周长为:
%6.2f\n",l);
printf("%圆柱体积为:
%6.2f\n",v);
}
(2)
#include
voidmain()
{
longx=0;
inth=0,m=0,s=0;
printf("请输入秒数,为一个正整数:
");
scanf("%d",&x);
h=x/3600;
m=x%3600/60;
s=x%3600%60;
printf("你输入的秒数为%d小时%d分%d秒\n",h,m,s);
}
第3章习题答案:
1、填空题
(1)i<9、i、i++;++a;、i++;、9、10
(2)i<10、i、a++、i++、9、10、10。
(3)54321。
(4)x%3==0||x%7==0、f=1。
2、选择题
(1)B
(2)D(3)B(4)C(5)A(6)A
3、
(1)
#include
voidmain()
{
intnumber;
printf("Enteranumber:
");/*输入提示*/
scanf("%d",&number);/*输入1个数*/
if(number%2==0)/*若number除以2的余数是0,则为偶数*/
{
printf("Tnenumberiseven.\n");
}
else
{/*若number除以2的余数不是0,则为奇数*/
printf("Tnenumberisodd.\n");
}
return0;
}
(2)#include
voidmain()
{
intn,i;
for(n=3;n<=100;n=n+1)
{
for(i=2;i<=n-1;i=i+1)
if(n%i==0)break;
if(i>=n)printf("%d\t",n);
}
}
(3)#include
voidmain()
{
doublesum=0;
doubletmp=1;
intmul=1;
inti;
for(i=1;i<=50;i++)
{
tmp*=i;
sum+=tmp*mul;
mul*=-1;
}
printf("1!
-2!
+3!
-4!
+.....+49!
-50!
=%e",sum);
}
(4)#include
voidmain()
{
intn=0;
printf("inputastring\n");
while(getchar()!
='\n')n++;
printf("%d",n);
}
第4章习题答案:
1、填空题:
(1)intm[4][10];
(2)intn[10]={9,4,7,19,42,-8}(3)07
(4)string.h(5)inta[10]={9,3,4,7,12,5,8,5,1,10};(6)3
2、选择题:
(1)C
(2)C(3)D(4)C(5)B(6)C
3、程序设计题
(1)
#include“stdio.h”
#defineN6/*定义符号常量N(分数个数)*/
main()
{intscore[N],i,sum,max,min;/*输入N个成绩*/
printf("Pleaseinput%dscores(departedbyspace):
",N);
for(i=0;iscanf("%d",&score[i]);/*求分数合计、最高分和最低分*/
sum=max=min=score[0];/*预置累计和、最高、最低分*/
for(i=1;i{sum+=score[i];/*求累计和*/
if(score[i]>max)max=score[i];
if(score[i]}
/*输出结果*/
printf("\naverage=%4.1f,max=%d,min=%d\n",(float)sum/N,max,min);
}
(2)#include“stdio.h”
#include“string.h”
main()
{charc,str[40];
inti,length;
printf(“inputstring:
”);
gets(str);
length=strlen(str);
for(i=0;i{c=str[i];
str[i]=str[length-i-1];
str[length-i-1]=c;
}
printf(“\noutputstring:
”);
puts(str);
}
第5章习题答案:
1.填空题
(1)声明部分、语句部分
(2)int型(3)实参数组的首地址
(4)static(5)c=20(6)12624
2.选择题
(1)A
(2)D(3)C(4)A(5)B(6)B
3.程序设计题
(1)
#include
intfac(intk)
{
inti,f=1;
for(i=2;i<=k;i++)
f=f*i;
returnf;
}
voidmain()
{
intm,n,c;
printf("请输入m,n:
");
scanf("%d%d",&m,&n);
c=fac(m)/(fac(n)*fac(m-n));
printf("%d里取%d的组合数是:
%d\n",m,n,c);
}
(2)
#include
intisprime(intm)
{
inti;
for(i=2;iif(m%i==0)
return0;
return1;
}
voidmain()
{
intn;
printf("请输入一个正整数:
");
scanf("%d",&n);
if(isprime(n))
printf("%d是一个素数!
\n",n);
else
printf("%d不是一个素数!
\n",n);
}
(3)
#include
longpower(intx,intn)
{
if(n==0)
return1;
else
returnx*power(x,n-1);
}
voidmain()
{
intx,n;
printf("x=?
n=?
\n");
scanf("%d%d",&x,&n);
printf("%d^%d=%ld\n",x,n,power(x,n));
}
(4)
#include
voidmain()
{
charstr[80];
intcount[4];
voidfunc(chars[],intc[]);
printf("请输入一串字符,以回车结束:
\n");
gets(str);
func(str,count);
printf("%d个字母,%d个空格,%d个数字,%d个其它字符。
\n",
count[0],count[1],count[2],count[3]);
}
voidfunc(chars[],intc[])
{
inti;
for(i=0;i<4;i++)
c[i]=0;
i=0;
while(s[i]!
='\0')
{
if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')
c[0]++;
else
if(s[i]=='')
c[1]++;
else
if(s[i]>='0'&&s[i]<='9')
c[2]++;
else
c[3]++;
i++;
}
}
第6章习题答案:
1.填空题
(1)39
(2)ef(3)6(4)5(5)ss=s;s-ss;(6)0,2
2.选择题
(1)B
(2)D(3)D(4)B(5)C(6)A
3.程序设计题
(1)#include
voidmain()
{
inta,b,c,*p1,*p2,*p3,*p;
printf("请输入3个实数:
");
scanf("%d,%d,%d",&a,&b,&c);
p1=&a;p2=&b;p3=&c;
if(a>b)
{p=p1;p1=p2;p2=p;}
if(a>c)
{p=p1;p1=p3;p3=p;}
if(b>c)
{p=p2;p2=p3;p3=p;}
printf("%d,%d,%d\n",*p1,*p2,*p3);
}
(2)#include
#include
voidmain()
{
charstr1[20],str2[10],*p,*q;intm;
printf("请输入一个字符串:
\n");
gets(str1);
printf("请输入整数m:
\n");
scanf("%d",&m);
p=str1+m;
q=str2;
while(*p!
='\0')
{
*q=*p;
p++;
q++;
}
*q='\0';
printf("新串为:
");
puts(str2);
}
(3)#include
voidmain()
{int*p,i,a[10]={3,7,9,11,0,6,7,5,4,2};
voidsort(intx[],intn);
printf("排序前数组为:
\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
p=a;
sort(p,10);
printf("排序后数组为:
\n");
for(p=a,i=0;i<10;i++)
{printf("%d",*p);
p++;}
printf("\n");
}
voidsort(intx[],intn)
{inti,j,k,t;
for(i=0;i{k=i;
for(j=i+1;jif(x[j]>x[k])k=j;
if(k!
=i)
{t=x[i];x[i]=x[k];x[k]=t;}
}
}
(4)#include
floatf1(floatx)
{returnx;}
floatf2(floatx)
{return2*x-5;}
floatf3(floatx)
{return3*x+4;}
floatpp(floatx,float(*p)(float))
{floatresult;
result=(*p)(x);
returnresult;
}
voidmain()
{
floatx,y;
printf("请输入实数x:
");
scanf("%f",&x);
if(x<0)
y=pp(x,f1);
elseif(x<5)
y=pp(x,f2);
elsey=pp(x,f3);
printf("x=%f,y=%f",x,y);
}
第7章习题答案
1.填空题
(1)No:
111010name:
LiMingsexMage:
20
(2)10ch
(3)structSTRU
(4)uniondatau;scanf(“%s”,u.c);(或scanf(“%c%c%c%c“,&u.c[0],&u.c[1],&u.c[2],&u.c[3]);
(5)2
(6)name
2.选择题
(1)D
(2)D(3)B(4)B(5)B(6)B
3.程序设计题
(1)定义一个结构体变量(包括年、月、日)、计算该日在本年中是第几天?
注意闰年问题。
#include
structdate{
intyear;
intmonth;
intday;
}date1;
main()
{inti,day_sum;
staticintday_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
printf("请输入年,月,日:
\n");
scanf("%d,%d,%d",&date1.year,&date1.month,&date1.day);
day_sum=0;
for(i=1;iday_sum+=day_tab[i];
day_sum+=date1.day;
if((date1.year%4==0&&date1.year%100!
=0||date1.year%400==0)
&&date1.month>=3)
day_sum+=1;
printf("%d月%d日是%d年的第%d天\n",
date1.month,date1.day,date1.year,day_sum);
}
(2)输入5个同学的姓名、数学成绩、英语成绩和物理成绩,并统计出每个同学的总分、平均分,最后输出每个同学的姓名、数学成绩、英语成绩、物理成绩、总分及平均分。
#include
#defineN5
structstudent
{charname[8];
floatscore[5];
}stu[N];
voidprint(structstudent*p)
{inti,j;
printf("\n姓名成绩1成绩2成绩3总分平均分\n");
for(i=0;i{printf("%8s",(*p).name);
for(j=0;j<5;j++)
printf("%7.1f",(*p).score[j]);
printf("\n");
}
}
main()
{
inti,j;
for(i=0;i{printf("请输入学生%d的信息:
\n",i+1);
printf("姓名:
");
scanf("%s",stu[i].name);
for(j=0;j<3;j++)
{printf("成绩%d:
",j+1);
scanf("%f",&stu[i].score[j]);
}
stu[i].score[3]=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];
stu[i].score[4]=stu[i].score[3]/3;
}
printf("\n");
print(stu);
(3)应用枚举类型编写一个程序,输入月份号,输出该月的英文名称。
#include"stdio.h"
main()
{
enummonth{Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec}mon;
intk;
printf("Pleaseinputanumber(1~12):
");
scanf("%d",&k);
mon=(enummonth)k;
switch(mon)
{
caseJan:
printf("TomonthisJan.\n");break;
caseFeb:
printf("TomonthisFeb.\n");break;
caseMar:
printf("TomonthisMar.\n");break;
caseApr:
printf("TomonthisApr.\n");break;
caseMay:
printf("TomonthisMay.\n");break;
caseJun:
printf("TomonthisJnu.\n");break;
caseJul:
printf("TomonthisJu1.\n");break;
caseAug:
printf("TomonthisAug.\n");break;
caseSep:
printf("TomonthisSep.\n");break;
caseOct:
printf("TomonthisOct.\n");break;
caseNov:
printf("TomonthisNov.\n");break;
caseDec:
printf("TomonthisDec.\n");break;
default:
printf("Inputiserror!
\n");break;
}
}
第8章习题答案:
1.填空题:
(1)顺序存取随机存取
(2)二进制ASCII(3)字符流式(4)n-1buf的首地址(5)键盘(6)”wb+”
2、选择题:
(1)B
(2)C(3)D(4)C(5)D(6)B
3、程序设计题:
(1)#include"stdio.h"
FILE*fp;
voidmain()
{intp=0,n=0,z=0,temp;
fp=fopen("num.dat","r");
while(!
feof(fp))
{fscanf(fp,"%d",&temp);
if(temp>0)
p++;
elseif(temp<0)
n++;
else
z++;
}
fclose(fp);
printf("positive:
%3d,negative:
%3d,zero:
%3d\n",p,n,z);
}
(2)#include"stdio.h"
#include"stdlib.h"
voidmain()
{FILE*fp;
charch,filename[10];
puts("pleaseenterthefilename:
");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{puts("cannotopenthefile\n");
exit(0);
}
ch=getchar();
while(ch!
='*')
{fputc(ch,fp);
putchar(ch);
ch=getchar();
}
fclose(fp);
printf("\n");
}
第9章习题答案:
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#defineMAX50
structphonetype
{
charname[10];
chartel[16];
charwork[30];
}phone[MAX];
intnn;
voidreadfile()
{inti;
FILE*fp;
fp=fopen("tel-book","r");
fread(&phone[0],sizeof(structphonetype),1,fp);
nn=atoi(phone[0].name);
for(i=1;i<=nn;i++)
fread(&phone[i],sizeof(structphonetype),1,fp);/*读磁盘文件*/
fclose(fp);
}
voidwritefile(intn)
{inti;
FILE*fp;
fp=fopen("tel-book","w");/*文件写操作*/
for(i=0;i<=n;i++)
fwrite(&phone[i],sizeof(structphonetype),1,fp);
fclose(fp);
}
intcreat()/*录入原始数据并写入磁盘文件*/
{
inti=1;charname1[10];
while
(1)
{
printf("\n请输入第%d个电话信息(姓名输入000则输入结束!
):
\n",i);
printf("姓名:
");
scanf("%s",name1);
if(strcmp(name1,"000")==0)break;
strcpy(phone[i].name,name1);
printf("电话:
");
scanf("%s",phon