C語言程序設計第五版譚浩強第四章答案


譚浩強 C語言程序設計第五版答案 第一章答案

C語言程序設計答案

1.什么是算術運算?什么是關系運算?什么是邏輯運算?
答:算術運算時數學里基礎的加減乘數求余數等;關系運算時求兩個或者多個變量或者表達式之間的關系;邏輯運算時將多個變量或者表達式鏈接起來的邏輯關系。
2.C語言中如何表示“真”和“假”?系統如何判斷一個量的“真”和“假”?

 

答:C語言中將數值為1作為真,為0作為假,系統將值為非0的變量或表達式作為真,否則假。
3.寫出下面各邏輯表達式的值。設a=3,b=4,c=5.
(1)a+b>c&&b==c
(2)a||b+c&&b-c
(3)!(a>b)&&!c||1
(4)!(x=a)&&(y=b)&&0
(5)!(a+b)+c-1&&b+c/2
答:(1)0 因為b!=c;(2)1 因為a,b+c,b-c均非0;(3)1 因為||右側為1 邏輯運算符||其中一個表示為1值則可以判定;
(4)0 很明顯第一個和第三個式子為假 &&其中一個為假 則判定;(5)1 &&前可以表示為0+5-1,后表示4+5/2均非0 。
4.有3個整數,由鍵盤輸入,輸出其中最大的數。
#include<stdio.h>
int main()
{int a,b,c,z;
scanf("%d%d%d",&a,&b,&c);
if(a>b) z=a;
else z=b;
else z=c;
printf("max=%d",z);
}

5.從鍵盤輸入一個小於1000的正整數,要求輸出它的平方根(如平方根不是整數,則輸出其整數部分)。要求在輸入數據后先對其檢查是否為小於1000的正數。若不是,則要求從新輸入。
#include <stdio.h>
#include <math.h>
int main()
{
  int i,k;                                     
  printf("請輸入一個小於%d的整數i:",M);
  scanf("%d",&i);
  if (i>1000)
  {printf("輸入的數不符合要求,請重新輸入一個小於1000的整數i:\n");
   scanf("%d",&i);
  }
  k=sqrt(i);
  printf("%d的平方根的整數部分是:%d\n",i,k);
  return 0;
}

6.有一個函數:
{x (x<1)
y={2x-1 (1<=x<10)
{3x-11 (x>=10)
寫程序,輸入x的值,輸出y相應的值。
#include<stdio.h>
void main()
{
int x,y;
scanf("%d",&x);
if(x<1)
y=x;
else
if(1<=x<10)
y=2*x-1;
else
y=3*x-11;
printf("x=%d,y=%d",x,y);
}
7.此題過長就不打出來了,跟第6題相似,弄懂第6題,此題迎刃而解。
8.給出一個百分制成績,要求輸出成績等級A,B,C,D,E。90分以上為A,80~89分為B,70~79分為C,60~69分為D,60分以下為E。
#include<stdio.h>
int main()
{
    int score;
    printf("輸入學生的成績:\n");
    scanf("%d",&score);
    if (score<0 || score>100){
printf("輸入的數據非法!\n");
}
else{
if(score>90){
        printf("該同學的等級為:A");
    }
    if(score>=80 && score<=90){
        printf("該同學的等級為:B");
    }
    if(score>=70 && score<=79){
        printf("該同學的等級為:C");
    }
    if(score>=60 && score<=69){
        printf("該同學的等級為:D");
    }
    if(score>=0&&score<=59){
        printf("該同學的等級為:E");
    }
    }
    return 0;
}

給出一個不多於5位數的正整數;
(1)求出它是幾位數;
(2)分別輸出每一位數字;
(3)按逆順序輸出各位數,例如原有數為123,應輸出321
#include<stdio.h>
main()
{
    long num;
    printf("輸入一個不多於5位的整數:\n");
    scanf("%ld",&num);
    int place;
    if(num>9999) place=5;
    else if(num>999) place=4;
    else if(num>99) place=3;
    else if(num>9) place=2;
    else place=1;
    printf("\n%d是%d位數\n",num,place);
    int ten_thousand,thousand,hundred,ten,indiv;
    ten_thousand=num/10000;
    thousand=(num-ten_thousand*10000)/1000;
    hundred=(num-ten_thousand*10000-thousand*1000)/100;
    ten=(num-ten_thousand*10000-thousand*1000-hundred*100)/10;
    indiv=(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);
    printf("\n分別打印出每一位數字和逆序輸出:\n");
    switch(place)
    {
        case 5:printf("%d\t%d%d%d%d%d\n",num,ten_thousand,thousand,hundred,ten,indiv);break;
        case 4:printf("%d\t%d%d%d%d\n",num,indiv,ten,hundred,thousand);break;
        case 3:printf("%d\t%d%d%d\n",num,indiv,ten,hundred);break;
        case 2:printf("%d\t%d%d\n",num,indiv,ten);break;
        case 1:printf("%d\t%d\n",num,indiv);break;
    }
}

10.企業發放的獎金根據企業的當年利潤決定。當利潤I低於或等於100000元時,獎金可提成10%;利潤大於100000元,小於200000元(100000
#include<stdio.h>
main()
{
    long i;
    float bonus,bon1,bon2,bon4,bon6,bon10;
    int c;
    bon1=10000*0.1;
    bon2=bon1+100000*0.075;
    bon4=bon2+200000*0.05;
    bon6=bon4+200000*0.03;
    bon10=bon6+400000*0.015;
    printf("請輸入利潤i:");
    scanf("%ld",&i);
    c=i/100000;
    if(c>10) c=10;
    switch(c)
    {
    case 0:bonus=1*0.1;break;
    case 1:bonus=bon1+(i-100000)*0.075;break;
    case 2:
    case 3:bonus=bon2+(i-200000)*0.05;break;
    case 4:
    case 5:bonus=bon4+(i-400000)*0.03;break;
    case 6:
    case 7:
    case 8:
    case 9:bonus=bon6+(i-600000)*0.015;break;
    case 10:bonus=bon10+(i-1000000)*0.01;break;
    }
    printf("獎金是%10.2f",bonus);
}


11.輸入4個整數,要求按由小到大的順序輸出。
#include<stdio.h>
void main()
{
    int a,b,c,d,t;
    printf("請輸入四個整數:\n");
    scanf("%d%d%d%d",&a,&b,&c,&d);
    if(a>b)
    {
    t=a;a=b;b=t;
    }
    if(a>c)
    {
        t=a;a=c;c=t;
    }
    if(a>d)
    {
        t=a;a=d;d=t;
    }
    if(b>c)
    {
        t=b;b=c;c=t;
    }
    if(b>d)
    {
        t=b;b=d;d=t;
    }
    if(c>d)
    {
        t=c;c=d;d=t;
    }
    printf("%d%d%d%d",a,b,c,d);
}
12.有4個圓塔,圓心分別為(2,2)、(-2,2)、(-2,-2)、(2,-2),圓半徑為1。這4個塔的高度為10m,塔以外無建築物。今輸入任一點的坐標,求該點的建築高度(塔外的高度為0)
#include<stdio.h>
main()
{
    int h=10;
    float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4;
    printf("請輸入一點(x,y):");
    scanf("%f,%f",&x,&y);
    d1=(x-x1)*(x-x1)+(y-y1)*(y-y1);
    d2=(x-x2)*(x-x2)+(y+y2)*(y+y2);
    d3=(x+x3)*(x+x3)+(y-y3)*(y-y3);
    d4=(x+x4)*(x-x4)+(y+y4)*(y-y4);
    if(d1>1&&d2>1&&d3>1&&d4>1) h=0;
    printf("該點高度為h%d\n",h);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM