C语言程序设计习题集答案.docx
《C语言程序设计习题集答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计习题集答案.docx(18页珍藏版)》请在冰豆网上搜索。
C语言程序设计习题集答案
第1~2章C语言概述、算法、数据类型、运算符与表达式
一、选择题
ACDBBCCDCBD
二、填空题
1、n=20
2、a=66,b=E
第3章顺序程序设计
一、选择题
BAAD
二、程序阅读
1、1224
012
2、2,3,2,2
3、0
三、编程
1
#include<>
#include<>
voidmain()
{
inta,b,c;
floats,area;
scanf("%d,%d,%d",&a,&b,&c);
s=(a+b+c)/;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%f,b=%f,c=%f,s=%f,area=%f",a,b,c,s*2,area);
}
2
#include<>
#include<>
voidmain()
{
floata,b,c,del,x1,x2;
scanf("%f,%f,%f",&a,&b,&c);
del=b*b-4*a*c;
if(del>=0)
{
x1=(-b+sqrt(del))/(2*a);
x2=(-b-sqrt(del))/(2*a);
printf("x1=%f,x2=%f",x1,x2);
}
else
printf("没有实根");
}
3
#include<>
voidmain()
{
intc,f;
printf(“inputc:
\n”);
scanf(“%d”,&c);
f=*c+32;
printf("%d的华氏温度是%d",c,f);
}
选择结构程序设计
一、选择题
DBBCDC
二、程序阅读
1、|a|+|b|=61
2、PQ
3、-1
4、60~69
60
Error!
5、0,1
6、a+b+c=15
三、编程
1
#include<>
voidmain()
{
inta,b,c,min;
scanf("%d,%d,%d",&a,&b,&c);
min=a;
if(min>b)min=b;
if(min>c)min=c;
printf(“%d,”,min);
}
2
#include<>
voidmain()
{
inta;
scanf("%d",&a);
if(a%3==0&&a%5==0&&a%7==0)
printf("yes");
else
printf("no");
}
3
#include<>
#include<>
voidmain()
{
floatx,y;
scanf("%f",&x);
if(x<0)
y=fabs(x);
elseif(x>=0&&x<=2)
y=sqrt(x+1);
elseif(x>=2&&x<4)
y=pow(x+2,3);
else
y=2*x+5;
printf("x=%f,y=%f",x,y);
}
4
#include<>
voidmain()
{
floatrate,tax,salary;
scanf("%f",salary);
if(salary<=850)
rate=0;
elseif(salary>1350&&salary<=2850)
rate=;
elseif(salary>2850&&salary<5850)
rate=;
else
rate=;
tax=rate*(salary-850);
printf("salary=%f,rate=%f,tax=%f",salary,rate,tax);
}
循环控制
一、填空题:
3.46
二、选择题:
CDBBBCCCBD
三、程序阅读:
1、输出:
33
2、输出:
24
3、2#4#7#11#16#
4、3#2#0#0#1#
5、BADC
6、DABC
7、BCAD
8、ADBC
9、CCA
10、BDA
11、ADC
四、编程
1.#include<>
#include<>
voidmain()
{intx;
printf("xsqrt(x)\n");
for(x=5;x<=1000;x++)
printf("%d%f\n",x,sqrt(x));
}
2.#include<>
#include<>
main()
{
inti,flag;
doublepi,item;
i=1;
flag=1;
pi=0;
item=;
while(fabs(item)>=
{item=flag*i;
pi=pi+item;
flag=-flag;
i=i+2;
}
pi=pi*4;
printf("pi=%f",pi);
}
3.教材126页例
4.#include<>
main()
{inti,a,b,c;
a=1;b=1;
printf("%d%d",a,b);
for(i=3;i<=10;i++)
{
c=a+b;
printf("%d",c);
a=b;
b=c;
}
}
第4章数组
一、选择题:
DDADCCDBDBDDDAB
二、程序填空:
ABBD
CDAB
BB
DCA
CD
CA
1#2#3#1#1#3
298
三、编程:
1、#include<>
voidmain()
{
intmark,a,p,f;
a=p=f=0;
printf("Enterscores:
");
scanf("%d",&mark);
while(mark>0){
if(mark>=85)a++;
elseif(mark>=60)p++;
elsef++;
scanf("%d",&mark);
}
printf(">=85:
%d\n",a);
printf("60-84:
%d\n",p);
printf("<60:
%d\n",f);
}
2、#include<>
voidmain()
{inta[10],count=0,i;
floataverage,sum=0;
for(i=0;i<10;i++)
{scanf("%d",&a[i]);
sum=sum+a[i];
}
average=sum/10;
for(i=0;i<10;i++)
if(a[i]>average)count=count+1;
printf("平均值为%f大于平均值的数有%d个",average,count);
}
3.
#include<>
main()
{inta[10];
inti,j,t,n;
printf(“请输入一个正整数n(1”);
scanf(“%d”,&n);
for(i=0;iscanf("%d",&a[i]);
printf("\n");
for(j=0;jfor(i=j+1;iif(a[j]>a[i])
{t=a[j];a[j]=a[i];a[i]=t;}
printf("Thesortednumbers:
\n");
for(i=0;iprintf("%d",a[i]);
}
4.#include<>
voidmain()
{inta[6][6],n,i,j,x,y,max;
printf(“请输入一个正整数n(1≤n≤6):
”);
scanf(“%d”,&n);
printf(“请输入一个n行n列的矩阵:
\n”);
for(i=0;ifor(j=0;jscanf(“%d”,&a[i][j]);
max=a[0][0];x=0;y=0;
for(i=0;ifor(j=0;jif(fabs(a[i][j])>max){max=a[i][j];x=i;y=j;}
printf(“绝对值最大的元素为:
%d,下标分别为:
%d,%d\n”,max,x,y);
}
第5章函数
一、选择题
ABCBDC
7)BDAC
8)DCBA
9)DBB
10)CCBB
二、程序阅读题
(1)3,5
(2)4
(3)s=10
(4)5,25
7,15
三、程序设计
1
#include<>
#include<>
intisprime(intm)
{intk,n,res;
if(m==1)return0;
res=1;
n=(int)sqrt(m);
for(k=2;k<=n;k++)
if(m%k==0){
res=0;
break;
}
returnres;
}
voidmain()
{
intm,n;
intsum=0;
inti;
do
{
printf("Inputm,nm3,10\n");
scanf("%d,%d",&m,&n);
}while(m<0||n<0||m>n);
for(i=m;i<=n;i++)
{
if(isprime(i))
{
sum+=i;
}
}
printf("Theallprimes'sumis:
%d\n",sum);
}
2
intmax_value(intarr[][4])
{
inti,j,max;
max=arr[0][0];
for(i=0;i<2;i++)
for(j=0;j<4;j++)
{
if(maxmax=a[i][j];
}
returnmax;
}
3
#include<>
#include<>
intisTheFineNumber(intn)
{
intflag=0;
inta,b,c;
1.if((int)sqrt(n)==sqrt(n))k,结果为C)
2.D
二、选择填空题:
1.B
2.C
三、编程题:
1
#include<>
struct
{
intyear;
intmonth;
intday;
}date;
voidmain()
{intdays;
printf("inputyear,month,day:
\n");
scanf("%d%d%d",&,&,&;
switch
{
case1:
days=;break;
case2:
days=+31;break;
case3:
days=+59;break;
case4:
days=+90;break;
case5:
days=+120;break;
case6:
days=+151;break;
case7:
days=+181;break;
case8:
days=+212;break;
case9:
days=+243;break;
case10:
days=+273;break;
case11:
days=+304;break;
case12:
days=+334;break;
}
if(%4==0&&%100!
=0||%400==0)
&&>=3)days+=1;
printf("%d/%disthe%dthdayin%d\n",,,days,;
}
2
#include<>
struct
{
inthour;
intmin;
intsec;
}time1,time2,time3;
voidmain()
{
printf("inputthefirsttimehour,min,sec:
\n");
scanf("%d%d%d",&,&,&;
printf("inputthesecondtimehour,min,sec:
\n");
scanf("%d%d%d",&,&,&;
=if<0)
{+=60;
;
}
=if<0)
{+=60;
;
}
=
printf("timelagishour:
%dmin:
%dsec:
%d",,,;
}
3
#include<>
#defineN5
structstudent
{
charnum[6];
charname[6];
intscore[4];
}stu[N];
voidmain()
{voidprint(structstudentstu[6]);
inti,j;
for(i=0;i{
printf("ninputscoreofstudent%d:
\n",i+1);
printf("No.:
");
scanf("%s",stu[i].num);
printf("name:
");
scanf("%s",stu[i].name);
for(j=0;j<3;j++)
{
printf("score%d:
",j+1);
scanf("%d",&stu[i].score[j]);
}
printf("\n");
print(stu);
}
}
voidprint(structstudentstu[6])
{inti,j;
printf("\nNo.namescore1score2score3\n");
for(i=0;i{
printf("%5s%10s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf("%9d",stu[i].score[j]);
printf("\n");
}
}
第10章文件
一、选择题
CCBBACCDDCDDD
二、编程
1.
#include<>
#include<>
voidmain()
{
FILE*fp;
charstr[80];
if((fp=fopen("","r"))==NULL)
printf("error\n");
while(!
feof(fp))
{
fscanf(fp,"%s\n",str);
if(strstr(str,"for")!
=NULL)
printf("%s\n",str);
}
fclose(fp);
}
2.
#include<>
#include<>
voidmain()
{
FILE*fp;
intn,sum=0;
if((fp=fopen("","a+"))==NULL)
printf("error\n");
while(!
feof(fp))
{
fscanf(fp,"%d\n",&n);
sum+=n;
}
fprintf(fp,"\nsum=%d\n",sum);
fclose(fp);
}
3.
#include<>
#include<>
voidmain(intargc,char*argv[])
{
FILE*in,*out;
charch;
if(argc!
=3)
{
printf("Youforgottoenterafilename\n");
exit(0);
}
if((in=fopen(argv[1],"r"))==NULL)
{
printf("cannotopeninfile\n");
exit(0);
}
if((out=fopen(argv[2],"w"))==NULL)
{
printf("cannotopenoutfile\n");
exit(0);
}
while(!
feof(in))fputc(fgetc(in),out);
fclose(in);
fclose(out);
}
4.
#include<>
#include<>
voidmain()
{
FILE*fp;
intn,a=0,b=0,c=0;
if((fp=fopen("","a+"))==NULL)
printf("error\n");
while(!
feof(fp))
{
fscanf(fp,"%d\n",&n);
if(n>0)
a++;
elseif(n<0)
b++;
elsec++;
}
printf("正数有%d个,负数有%d个,零有%d个\n",a,b,c);
fclose(fp);
}