C語言程序設計第二版課后習題答案(2)
C語言程序設計第四章 選擇結構程序設計
一、略
二、B B A B C B A
三、1. 1 0
2. 2 3 2 2
3. 10 20 0
4. ch>=’A’&&ch<=’Z’||ch>=’a’&&ch<=’z’
ch>=’0’&&ch<=’9’
ch==’ ’
5. -1
四、上機操作
1. 從鍵盤輸入一個英文字母,如果是大寫字母,則將它變為小寫字母輸出;如果是小寫字母,則將其變為大寫字母輸出。
#include
main()
{char ch;
ch=getchar();
if(ch>='A'&&ch<='Z') ch+=32;
else if(ch>='a'&&ch<='z') ch-=32;
putchar(ch);
putchar('\n'); }
2. 根據輸入的x值依據下列表達式,計算y的值。
2x (x>-1)y = 3 (x=-1)
4+x (x<-1)
解:
main()
{
float x,y;
scanf("%f",&x);
if(x>-1)
y=2*x;
else if(x==1)
y=3;
else y=4+x;
printf("y=%f",y);
}
本程序運行結果為:
-2
y=2.000000
3.編寫程序,輸入一個整數,判斷它是奇數還是偶數,若是奇數,輸出“Is Odd“;若是偶數,輸出“Is Even“。
main()
{ int x;
scanf("%d",&x);
if(x%2==0) printf("Is Even\n");
else printf("Is Odd\n"); }
4.設計應用程序,求二次方程ax2+bx+c=0的解。
#include
main()
{ float a,b,c,disc,x1,x2,p,q;
scanf("%f,%f,%f",&a,&b,&c);
if(fabs(a)<=1e-6) printf(" The equation is not a quadratic\n");
else
{ disc=b*b-4*a*c;
if(fabs(disc)< 1e-6) printf("x1=x2=%8.4f\n",-b/(2*a));
else if(disc>1e-6)
{x1=(-b+sqrt(disc)/(2*a));
x2=(-b-sqrt(disc)/(2*a));
printf("x1=%8.4f,x2=%8.4f\n",x1,x2); }
else
{ p=-b/(2*a);
q=sqrt(-disc/(2*a));
printf("%8.4f+%x8.4fi\n",p,q);
printf("%8.4f-%8.4fi\n",p,q);} } }
5.按托運規則,行李不超過50公斤時,運費為0.15元/公斤,如超過50公斤,超過部分的運費為0.22元/公斤,現有行李w公斤,編寫一個程序計算運費。
解:
#include
main()
{
float w,f,x;
printf("weight:");
scanf("%f",&w);
if(w<=50)
x=0.15*w;
else
x=0.15*50+0.22*(w-50);
printf("money:%6.2f yuan\n",x);
}
本程序運行結果為:
weight:20
money:3.00 yuan
weight:60
money:9.70 yuan
6. 某商場給與顧客購物的折扣率如下:
購物金額<200元 不打折
500元>購物金額>=200元 9折
1000元>購物金額>=500元 8折
購物金額>=1000元 7.5折
輸入一個購物金額,輸出打折率、購物實際付款金額。
#include
main()
{ float x,y,realx;
scanf("%f",&x);
if(x<=0) { printf("Error! You input a worry number!\n"); y=0;}
else
{ if(x<200) y=1.0;
else if(x<500) y=0.9;
else if(x<1000) y=0.8;
else y=0.75;}
if(y!=0)
{realx=x*y;
printf("y=%f, the realx=%5.2f\n", y,realx);} }
項目實訓
某托兒所收2歲到6歲的孩子,2歲、3歲孩子進小班(Lower class);4歲孩子進中班(Middle class);5歲、6歲孩子進大班(Higher class)。編寫程序(用if語句和switch語句),輸入孩子年齡,輸出年齡及進入的班號。如:輸入:3,輸出:age:3,enter Lower class。
#include
main()
{ int age;
printf("Please input your baby's age:");
scanf("%d",&age);
if(age>6||age<2) printf("Sorry,your baby can't enter!");
else switch(age);
{case 2:
case 3: printf("age:%d,enter Lower class\n",age); break;
case 4: printf("age:%d,enter Middle class\n",age);break;
case 5:
case 6: printf("age:%d,enter Higher class",age);break; } }
C語言程序設計第五章 循環結構程序設計
一、選擇題
C C A A D D
三、操作題
1.求s=1+3+5+7+…100的值。
#include "stdio.h"
main()
{
int i,sum=0;
for(i=1;i<=100;i+=2)
sum=sum+i;
printf("sum=%d",sum);
}
2. 輸入班級學生考試成績,求考試平均成績。約定當輸入負數時,表示輸入結束。
main()
{ float sum=0,score,ave;
int n=0;
scanf("%f",&score);
while(score>0)
{ n++;
sum=sum+score;
scanf("%f",&score); }
ave=sum/n;
printf("\nThe average score is%.2f",ave); }
3.輸入一行字符以@作結束標志,分別統計其中英文字母、空格、數字和其它字符的個數。
#include "stdio.h"
main()
{ char ch;
int cha=0,space=0,digit=0,other=0;
while((ch=getchar())!='@')
{ if (ch>='a'&&ch<='z'||ch>='A'&&ch<='Z') cha++;
else if (ch==' ') space++;
else if (ch>='0'&&ch<='9') digit++;
else other++; }
printf("\ncha=%d,space=%d,digit=%d,other=%d",cha,space,digit,other); }
4.一張紙的厚度為0.1毫米,珠穆瑯瑪峰的高度為8848.13米,假如紙張有足夠大,將紙對折多少次后可以超過珠峰的高度?
main()
{ float h=8848.13,h0=0.0001,h1;
int m=0;
h1=h0;
while(h0<=h)
{ h0=2*h0;
printf("\n m=%d,high=%f",m,h0);
m++; }
printf("\n m=%d\n",m-1);}
5、 編寫一個程序求出滿足下列條件的四位數,該數是一個完全平方數;第一、三位上數之和為10,第二、四位上數之積為12。
解:
#include
main()
{
int i,j,a,b,c,d;
for(i=32;i<=99;i++)
{
j=i*i;
a=j/1000;
b=j/100-a*10;
c=j/10-a*100-b*10;
d=j-a*1000-b*100-c*10;
if(a+c==10&&b*d==12)
printf("%d ",j);
}
}
本程序運行結果為:
1296 9216
6、 一個正數與3的和是5的倍數,與3的差是6的倍數,編寫一個程序求符合條件的最小數。
解:
#include
main()
{
int n;
n=1;
while(1)
{
n=n+1;
if((n+3)%5==0&&(n-3)%6==0)break;
}
printf("n=%d",n);
}
本程序運行結果為:
n=27
7、 已知xyz+yzz=532,其中x、y、z都是數字,編寫一個程序求出x、y、z分別是多少。
解:
#include
main()
{
int x,y,z,i;
for(x=1;x<=9;x++)
for(y=1;y<=9;y++)
for(z=0;z<=9;z++)
{
i=100*x+10*y+z+100*y+10*z+z;
if(i==532) printf("x=%d,y=%d,z=%d\n",x,y,z);
}
}
本程序運行結果為:
x=3,y=2,z=1
8、學校有近千名學生排隊,5人一行余2人,7人一行余3人,3人一行余1人,求學生人數。
解:
#include
main()
{
int n;
for(n=1000;n>=10;n--)
if(n%5==2&&n%7==3&&n%3==1)break;
printf("n=%d\n",n);
}
本程序運行結果為:
n=997
9.驗證歌德巴赫猜想:任意一個大于6的偶數均可表示為兩個質數的和。
#include
main()
{ int i,x;
int p,q,k1,k2;
printf("Please input an odd data(>=6):");
scanf("%d",&x);
for(p=3;p<=x/2;p+=2)
{k1=k2=1;
q=x-p;
if(p>2)
for(i=2;i
if(p%i==0) k1=0;
for(i=2;i
if(q%i==0) k2=0;
if(k1==1&&k2==1) printf("%d=%d+%d\n",x,p,q); }}
10.一個數恰好等于它的平方數的右端,這個數稱為同構數 。如 :5的平方是25,25的平方是625。找出1~1000之間的全部同構數 。
#include "math.h"
main()
{ int i,j,k=0;
for (i=2;i<1000;i++)
{ if (i/10==0) j=1; /*因為i是整型,所以是整除*/
else if (i/100==0) j=2;
else if (i/1000==0) j=3;
if ((long int)i*i%(int)pow(10,j)==i) /*同構數的定義*/
{ k++; /* 計數器*/
printf("%10d",i);
if (k%5==0) printf("\n"); } }
printf("\nk=%d",k); }
項目實訓
1. 編寫程序求1-1/2+1/3-1/4+…+1/99-1/100的值
#include "stdio.h"
main()
{
int i, s=-1;
float sum=1.0;
for(i=2;i<=100;i++)
sum=sum+1.0*s/i;
printf("sum=%f",sum);
}
2.曾有一位印度國王要獎賞他的聰明能干的宰相達依爾。達依爾只要求在國際象棋的棋盤格上放置小麥粒,第一格放1粒,第二格放兩粒,第三格放4粒,第四格放8粒,……,最后能有多少小麥粒呢?
main()
{ float i ,s=1,t=1;
for (i=1;i<=63;i++)
{ t*=2;
s+=t; }
printf("s=%f\n",s);}
3.打印水仙花數,即一個三位數各位上的數字之和等于它本身,如:153=13+53+33 。
main()
{int k1,k2,k3,i;
for (k1=1;k1<=9;k1++)
for (k2=0;k2<=9;k2++)
for (k3=0;k3<=9;k3++)
{ i=k1*k1*k1+k2*k2*k2+k3*k3*k3;
if (i==k1*100+k2*10+k3)
printf("\n%d=%d^3+%d^3+%d^3",i,k1,k2,k3); }}
4.編制電視歌手大獎賽評分程序,要求評委人數和每位評委的打分從鍵盤輸入,去掉一個最高分,再去掉一個最低分,求評委給出的最后得分。
main()/* TV大獎賽 */
{int n,i=1;
float x,max,min,sum=0;
printf("\nPlease input the number of score:");
scanf("%d",&n);
printf("\nInput score:");
scanf("%f",&x);
max=x;min=x;sum=x;
while (i
{ i++;
scanf("%f",&x);
sum+=x;
if (max
else if (x
sum=(sum-max-min)/(n-2);
printf("The last score is%8.2f\n",sum);}
5.打印下列圖形。
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
main()
{ int i,j;
for (i=1;i<=5;i++)
{ for (j=1;j<=5-i;j++)
printf ( " ");
for (j=1;j<=5;j++)
printf (" *");
printf("\n"); }}