C语言程序设计习题解答.docx
《C语言程序设计习题解答.docx》由会员分享,可在线阅读,更多相关《C语言程序设计习题解答.docx(56页珍藏版)》请在冰豆网上搜索。
C语言程序设计习题解答
《C语言程序设计》习题解答
第二章数据类型、运算符和表达式
一、简答题:
1.常量有数值常量、字符常量、字符串常量和符号常量;字符u、l和f主要是对数值常量进行修饰。
字符u和l对整型常量进行修饰:
表明常量是否是unsigned类型以及是否是long型;字符l对实型常量进行修饰:
表明常量之是否是float类型。
2.字符常量用单引号‘’界定单个字符,内存空间只占一个字节;字符串常量用双引号界定零个或多个字符,字符串常量的结尾都有一个结束字符‘\0’。
3.&&、||和!
是构成逻辑表达式的逻辑运算符,表达式运算结果是0(真)或1(假);&、|和~是位操作运算符中的逻辑为运算符,对整型操作数的二进制位进行运算,结果为整型值。
4.表达式在计算中根据运算符的优先级和结合型进行运算,在计算过程中要求运算符的两个操作数类型必须相同,根据数据类型之间的隐式转换规则对操作数的类型进行转换,最后运算符运算结果的类型就是表达式值的类型。
5.类型转换有隐式转换和显示转换。
隐士转换是在计算过程中根据隐士转换规则进行;显示转换利用强制转换运算符进行;在赋值运算中,表达式右边值得类型都强制转换成左边变量的类型。
二、选择题:
(1)D
(2)B(3)D(4)D(5)B(6)D(7)D
(8)C(9)C(10)C(11)C(12)A(13)A(14)D
(15)A(16)A、C(17)A(18)A(19)9(20)A
三、计算表达式的值:
1.
(1)24
(2)10(3)96(4)0(5)0(6)0
2.
(1)5
(2)10(3)40
3.
(1)0
(2)1(3)3(4)16(5)1
4.
(1)3.500000
(2)3.000000
5.
(1)6
(2)6(3)0(4)0
四、写出给出式子的C语言表示形式:
1.x*x+3*x+1
2.(a*x+b)/(c*y+d)*(m*x*x+n*y*y)
3.sqrt(4*x*x*x+5*x*x+x+3)
4.sin(x+0.5)*sin(x+0.5)+3*cos(2*x+4)
5.(a/x)/(a/(a+y)+b/(a+b/z))
6.labs(3-exp(x)*ln(1+x))
第三章简单程序设计
一、简答题:
(略)
二、选择题:
(1)C
(2)D(3)C(4)B(5)B
(6)D(7)D(8)C(9)A(10)A
三、编程实现
1.voidmain()
{
inta,b;
intmin;
printf("pleaseinputtwointegerdata:
");
scanf("%d%d",&a,&b);
min=a>b?
b:
a;
printf("theminis:
%d\n",min);
}
2.voidmain()
{
floatf;
printf("pleaseinputfloatdata:
");
scanf("%f",&f);
printf("thedatais%.2f\n",f);
}
3.voidmain()
{
charch;
printf("pleaseinputchar:
");
scanf("%c",&ch);
printf("thethreecharactersare:
%c,%c,%c.\n",ch-1,ch,ch+1);
}
4.#include
voidmain()
{
floata,b,c;
floatl,mid,area;
printf("pleaseinputthreeeadge:
");
scanf("%f%f%f",&a,&b,&c);
l=0.5*(a+b+c);
mid=l*(l-a)*(l-b)*(l-c);
area=sqrt(mid);
printf("areais:
%f\n",area);
}
第四章数组
一、简答题:
(略)
二、选择题:
(1)C
(2)A(3)C(4)B(5)D(6)B
(7)C(8)B(9)A(10)B(11)C(12)C
三、编写程序:
1.#include
#defineLEN128
voidmain()
{
charstr1[LEN],str2[LEN];
intlen1,len2;
printf("pleaseinputfirststring:
\n");
gets(str1);
printf("pleaseinputsecondstring:
\n");
gets(str2);
len1=strlen(str1);
len2=strlen(str2);
if(len1>len2)
printf("thestringis:
%s\n",str1);
if(len1printf("thestringis:
%s\n",str2);
if(len1==len2)
{
if(strcmp(str1,str2)>0)
printf("thestringis:
%s\n",str1);
else
printf("thestringis:
%s\n",str2);
}
}
2.#include
#defineLEN128
voidmain()
{
charstr1[LEN],str2[LEN];
puts("pleaseinputfirststring:
");
gets(str1);
puts("pleaseinputsecondstring:
");
gets(str2);
strcat(str1,str2);
printf("thesresultis:
\n%s\n",str1);
}
第五章基本语句
各小题的参考程序如下:
1.#definePI3.14159
voidmain()
{
floatr,h;
floats,v;
printf("pleaseinputrandh:
");
scanf("%f%f",&r,&h);
s=PI*r*r;
s+=2*PI*PI*r*h;
v=1.0/3*PI*r*r*h;
printf("theareais%f\n",s);
printf("thevolumeis%f\n",v);
}
2.voidmain()
{
floatx;
inty;
printf("inputx:
");
scanf("%f",&x);
if(x>0)
y=1;
else
if(x==0)
y=0;
else
y=-1;
printf("yis%d\n",y);
}
3.voidmain()
{
intflag=0;
intdata;
printf("inputdata:
");
scanf("%d",&data);
if(data%3==0)
flag++;
if(data%5==0)
flag++;
if(data%7==0)
flag++;
switch(flag)
{
case0:
printf("can\'tdividedbyanyone!
\n");break;
case1:
printf("candividedbyonedata!
\n");break;
case2:
printf("candividedbytwodata!
\n");break;
case3:
printf("candividedbythreedata!
\n");
}
}
4.#include
voidmain()
{
floata,b,c;
floatl,s;
printf("inputa,bandc:
");
scanf("%f%f%f",&a,&b,&c);
if(a+b>c&&fabs(a-b){
l=(a+b+c)/2;
s=sqrt(l*(l-a)*(l-b)*(l-c));
printf("theareaoftriangleis%f.\n",s);
}
else
printf("can\'tconstructtriangle.\n");
}
5.#include
voidmain()
{
floatm,n,k;
floatdet,x1,x2;
printf("inputm,n,k:
");
scanf("%f%f%f",&m,&n,&k);
det=n*n-4*m*k;
if(det>=0)
{
det=sqrt(det);
x1=(-n+det)/(2*m);
x2=(-n-det)/(2*m);
if(det)
{
printf("thefirstrootis%f.\n",x1);
printf("thesecondrootis%f.\n",x2);
}
else
printf("therootis%f.\n",x1);
}
else
{
det=sqrt(-det);
x1=-n/(2*m);
x2=det/(2*m);
x2=fabs(x2);
printf("thefisrtvirtualrootis%f+%fi.\n",x1,x2);
printf("thescondvirtualrootis%f-%fi.\n",x1,x2);
}
}
6.voidmain()
{
floata,b,result;
charch;
printf("pleaseinputexpression:
");
scanf("%f%c%f",&a,&ch,&b);
switch(ch)
{
case'+':
result=a+b;break;
case'-':
result=a-b;break;
case'*':
result=a*b;break;
case'/':
if(b)
{result=a/b;break;}
else
{printf("DividedZero!
\n");return;}
default:
printf("expressionError!
\n");return;
}
printf("%f%c%f=%f.\n",a,ch,b,result);
}
7.voidmain()
{
intn,num[6];
inti,x;
printf("pleaseinputnumofdata:
");
scanf("%d",&n);
printf("inputdata:
\n");
for(i=0;i{
scanf("%d",&x);
if(x>0&&x<=5)
num[x]++;
}
printf("theresultis:
\n");
for(i=1;i<=5;i++)
printf("thenumof%dis%d.\n",i,num[i]);
}
8.voidmain()
{
intn,i;
doublefac=1;
printf("inputn:
");
scanf("%d",&n);
for(i=1;i<=n;i++)
fac*=i;
printf("%d!
=%.0f\n",n,fac);
}
9.voidmain()
{
floata,b,temp;
floats;
inti;
a=1,b=2;
for(i=1,s=0;i<=30;i++)
{
s+=b/a;
temp=b;
b=a+b;
a=temp;
}
printf("theresultis%f.\n",s);
}
10.voidmain()
{
floatavg_age=0,avg_score=0;
floatage,score;
intnum=0;
printf("inputageandscore:
\n");
scanf("%f%f",&age,&score);
while(age!
=-1)
{
avg_age+=age;
avg_score+=score;
num++;
printf("inputageandscore:
\n");
scanf("%f%f",&age,&score);
}
printf("theaverageageis%.1f.\n",avg_age/num);
printf("theaveragescoreis%.1f.\n",avg_score/num);
}
11.voidmain()
{
intn1=0,n2=0,n3=0;
intx,max,min;
inti;
printf("pleaseinputtendata:
\n");
scanf("%d",&x);
max=min=x;
if(x>0)
n1++;
else
if(x==0)
n2++;
else
n3++;
for(i=1;i<10;i++)
{
scanf("%d",&x);
if(min>x)
min=x;
if(maxmax=x;
if(x>0)
n1++;
else
if(x==0)
n2++;
else
n3++;
}
printf("themaxis%d.\n",max);
printf("theminis%d.\n",min);
printf("thenumofpositiveis%d.\n",n1);
printf("thenumofZerois%d.\n",n2);
printf("thenumofnegativeis%d.\n",n3);
}
12.voidmain()
{
intn;
doublenum1=1,num2=1;
printf("inputn:
");
scanf("%d",&n);
while(n-->0)
{
num1*=3;num2/=3;
}
printf("theresult1is%f.\n",num1);
printf("theresult2is%f.\n",num2);
}
13.#include
voidmain()
{
char*s[9]={"one","two","three","four","five",
"six","seven","eight","nine"};
longd;
intnum[10],i=0,j;
printf("inputdata:
");
scanf("%ld",&d);
while(d)
{
num[i++]=d%10;
d=d/10;
}
for(j=i-1;j>=0;j--)
printf("%s",s[num[j]-1]);
putchar('\n');
}
14.voidmain()
{
floatpi;
intn,flag;
for(pi=1,n=2,flag=-1;1.0/(2*n-1)>1.0e-6;n++,flag*=-1)
pi+=flag*1.0/(2*n-1);
printf("pi=%f\n",4*pi);
}
15.voidmain()
{
intx,i;
intcount,sum;
for(i=1,count=0,sum=0;i<=500;i++)
if(i%3==2&&i%5==3&&i%7==2)
{
count++;
sum+=i;
printf("%5d",i);
if(count%5==0)
printf("\n");
}
printf("thesumis%d.\n",sum);
}
16.#include
voidmain()
{
charch;
intch_num=0,dig_num=0,other=0;
printf("pleaseinputstring:
\n");
while((ch=getchar())!
='!
')
if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')
ch_num++;
else
if(ch>='0'&&ch<='9')
dig_num++;
else
other++;
printf("thenumofcharacteris%d.\n",ch_num);
printf("thenumofnumberis%d.\n",dig_num);
printf("thenumofothercharacteris%d.\n",other);
}
17.#defineN6
voidmain()
{
inti,j;
for(i=1;i<=N;i++)
{
for(j=1;j<=N-i;j++)
printf("%c",'');
for(j=1;j<=i;j++)
printf("*");
printf("\n");
}
for(i=1;i<=N-1;i++)
{
for(j=1;j<=i;j++)
printf("%c",'');
for(j=1;j<=N-i;j++)
printf("*");
printf("\n");
}
}
18.#defineN6
voidmain()
{
inti,j;
for(i=1;i<=N;i++)
{
for(j=1;j<=2*i;j++)
printf("");
for(j=1;j<=i;j++)
printf("#");
printf("\n");
}
}
19.#include
voidmain()
{
intflag=0,num=0;
charch;
printf("inputexpression:
");
while((ch=getchar())!
=';')
{
if(ch=='(')
num++;
if(ch==')')
{
num--;
if(num<0&&!
flag)
flag++;
}
}
if(num==0&&!
flag)
printf("it\'sOK!
\n");
if(num>0&&!
flag)
printf("thenumof\'(\'morethan\')\'!
\n");
if(flag&&num>=0)
printf("the\')\'ispriorof\'(\'!
\n");
if(flag&&num<-1)
printf("the\')\'ispriorof\'(\'!
andthenumof\')\'morethan\'(\'!
\n");
}
20.voidmain()
{
longd;
intsum=0;
printf("inputdata:
");
scanf("%ld",&d);
while(d)
{
sum+=d%10;
d/=10;
}
printf("thesumof%ldis%d.\n",d,sum);
}
21.#defineN4
voidmain()
{
floatsc[N][6];
floatavg[2][N],t;
inti,j,no;
printf("pleaseinputNo.andscores:
\n");
printf("No.s1s2s3s4s5\n");
for(i=0;ifor(j=0;j<6;j++)
scanf("%f",&sc[i][j]);
for(i=0;i{
for(j=1;j<6;j++)
avg[0][i]+=sc[i][j];
avg[0][i]/=5;
avg[1][i]=i;
}
for(i=0;ifor(j=i+1;j{
if(avg[0][i]{
t=avg[0][i];
avg[0][i]=avg[0][j];
avg[0][j]=t;
t=avg[1][i];
avg[1][i]=avg[1][j];
avg[1][j]=t;
}
}
printf("theresultis:
\n");
printf("NO.g1g2g3g4g5avg\n");
for(i=0;i{
no=(int)avg[1][i];
printf("%3.0f",sc[no][0]);
for(j=1;j<6;j++)
printf("%6.1f",sc[no][j]);
printf("%6.1f\n",avg[0][i]);
}
}
22.#include
#defineN3
voidmain()
{
intarray[N][N];
intmax,min;
intmax_index[2][N*N];
intmin_index[2][N*N];
inti,j,max_flag,min_flag;
printf("inputarray:
\n");
for(i=0;ifor(j=0;jscanf("%d",&array[i][j]);
max=min=array[0][0];
max_flag=min_flag=0;
for(i=0;ifor(j=0;j{
if(max<=array[i][j])
{
if(max{
max_flag=0;
max=array[i][j];
}
max_index[0][max_flag]=i;
max_index[1][max_flag]=j;
max_flag++;
}
if(min>=array[i][j])
{