PTA-2017實驗3

3-1 求一元二次方程的根(20 分)
本題目要求一元二次方程的根,結果保留2位小數。

輸入格式:
輸入在一行中給出3個浮點系數a、b、c,中間用空格分開。

輸出格式:
根據系數情況,輸出不同結果:
1)如果方程有兩個不相等的實數根,則每行輸出一個根,先大后小;
2)如果方程有兩個不相等復數根,則每行按照格式“實部+虛部i”輸出一個根,先輸出虛部為正的,后輸出虛部為負的;
3)如果方程只有一個根,則直接輸出此根;
4)如果系數都為0,則輸出"Zero Equation";
5)如果a和b為0,c不為0,則輸出"Not An Equation"。
輸入樣例1:

2.1 8.9 3.5

輸出樣例1:

-0.44
-3.80

輸入樣例2:

1 2 3

輸出樣例2:

-1.00+1.41i
-1.00-1.41i

輸入樣例3:

0 2 4

輸出樣例3:

-2.00

輸入樣例4:

0 0 0

輸出樣例4:

Zero Equation

輸入樣例5:

0 0 1

輸出樣例5:

Not An Equation

程序源碼

#include <stdio.h>
#include <math.h>
int main(){
    double a,b,c,num1,num2;
    scanf("%lf %lf %lf",&a,&b,&c);
    num1=-b;
    num2=b*b-4*a*c;
    if(a==0&&b==0&&c!=0){
        printf("Not An Equation");
    }
    else if(a==0&&b==0&&c==0){
        printf("Zero Equation");
    }
    else if(a==0){
            printf("%.2f",-c/b);
    }
    else if(num2==0){
        printf("%.2f",num1/(2*a));
    }else if(num2>0){
        printf("%.2f\n",num1/(2*a)+sqrt(num2)/(2*a));
        printf("%.2f",num1/(2*a)-sqrt(num2)/(2*a));
    } else{
        if(num1==0){
            printf("0.00+%.2fi\n",sqrt(-num2)/(2*a));
            printf("0.00-%.2fi\n",sqrt(-num2)/(2*a));
        }else{
            printf("%.2f+%.2fi\n",num1/(2*a),sqrt(-num2)/(2*a));
                printf("%.2f-%.2fi",num1/(2*a),sqrt(-num2)/(2*a));
        }
    }
    return 0;
}
//感覺太復雜了,應該可以簡便的,可是簡便的方法,進去居然會有錯誤= =

3-2 計算符號函數的值(10 分)
對于任一整數n,符號函數sign(n)的定義如下:
請編寫程序計算該函數對任一輸入整數的值。
輸入格式:
輸入在一行中給出整數n。
輸出格式:
在一行中按照格式“sign(n) = 函數值”輸出該整數n對應的函數值。
輸入樣例1:
···
10
···
輸出樣例1:

sign(10) = 1

輸入樣例2:
···
0
···
輸出樣例2:
···
sign(0) = 0
···
輸入樣例3:
···
-98
···
輸出樣例3:
···
sign(-98) = -1
···
程序源碼

#include <stdio.h>
#include <stdlib.h>
int sign(int x) {
    if (x > 0) {
        return 1;
    } else if (x == 0) {
        return 0;
    } else {
        return -1;
    }
}
int main(void) {
    int x;

    scanf("%d", &x);
    printf("sign(%d) = %d\n", x, sign(x));

    return 0;
}

3-4 統計字符(15 分)
本題要求編寫程序,輸入10個字符,統計其中英文字母、空格或回車、數字字符和其他字符的個數。

輸入格式:
輸入為10個字符。最后一個回車表示輸入結束,不算在內。
輸出格式:
在一行內按照
letter = 英文字母個數, blank = 空格或回車個數, digit = 數字字符個數, other = 其他字符個數的格式輸出。

輸入樣例:

aZ &
09 Az

輸出樣例:

letter = 4, blank = 3, digit = 2, other = 1

程序源碼


#include <stdio.h>
#include <stdlib.h>
int main() {
   char s;int letter = 0, blank = 0, digit = 0, other = 0;
   for(int i=0;i<=9;i++){
      s=getchar(); 
      if (s>= 'A' && s<= 'Z') {
      letter++;
      } else if (s >= 'a' && s <= 'z') {
          letter++;
      } else if (s>= '0' && s <= '9') {
         digit++;
      } else if (s== ' '||s=='\n') {
         blank++;
     } else {
         other++;
     }
}
 printf("letter = %d, blank = %d, digit = %d, other = %d",letter,blank,digit,other);
 return 0;
}

3-5 查詢水果價格(15 分)
給定四種水果,分別是蘋果(apple)、梨(pear)、桔子(orange)、葡萄(grape),單價分別對應為3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。

首先在屏幕上顯示以下菜單:

[1] apple
[2] pear
[3] orange
[4] grape
[0] exit

用戶可以輸入編號1~4查詢對應水果的單價。當連續查詢次數超過5次時,程序應自動退出查詢;不到5次而用戶輸入0即退出;輸入其他編號,顯示價格為0。

輸入格式:
輸入在一行中給出用戶連續輸入的若干個編號。
輸出格式:
首先在屏幕上顯示菜單。然后對應用戶的每個輸入,在一行中按格式“price = 價格”輸出查詢結果,其中價格保留兩位小數。當用戶連續查詢次數超過5次、或主動輸入0時,程序結束。

輸入樣例1:
···
3 -1 0 2
···
輸出樣例1:
···
[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
price = 4.10
price = 0.00
···
輸入樣例2:
···
1 2 3 3 4 4 5 6 7 8
···
輸出樣例2:
···
[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
price = 3.00
price = 2.50
price = 4.10
price = 4.10
price = 10.20
···
程序源碼

#include <stdio.h>
int main()
{

    int n,i;
    printf("[1] apple\n[2] pear\n[3] orange\n[4] grape\n[0] exit\n");
    for(i = 0;i < 5;i++)
    {
       scanf("%d",&n);
       
       if(n==0)break;
       switch(n)
       {
       case 1:printf("price = 3.00\n");break;
       case 2:printf("price = 2.50\n");break;
       case 3:printf("price = 4.10\n");break;
       case 4:printf("price = 10.20\n");break;
      default:printf("price = 0.00\n");
}
}
return 0;
}

3-6 計算個人所得稅(10 分)
假設個人所得稅為:稅率×(工資?1600)。請編寫程序計算應繳的所得稅,其中稅率定義為:
當工資不超過1600時,稅率為0;
當工資在區間(1600, 2500]時,稅率為5%;
當工資在區間(2500, 3500]時,稅率為10%;
當工資在區間(3500, 4500]時,稅率為15%;
當工資超過4500時,稅率為20%。
輸入格式:
輸入在一行中給出非負工資。
輸出格式:
在一行輸出個人所得稅,精確到小數點后2位。
輸入樣例1:

1600

輸出樣例1:

0.00

輸入樣例2:

1601

輸出樣例2:

0.05

輸入樣例3:

3000

輸出樣例3:

140.00

輸入樣例4:

4000

輸出樣例4:

360.00

輸入樣例5:

5000

輸出樣例5:

680.00

程序源碼

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    double money,sum;
    sum=0;
    scanf("%lf",&money);
    if(money<=1600) {
        sum=0;
    } else if(money<=2500) {
        sum=(money-1600)*0.05;
    } else if(money<=3500) {
        sum=(money-1600)*0.1;
    } else if(money<=4500) {
        sum=(money-1600)*0.15;
    } else {
        sum=(money-1600)*0.2;
    }
    printf("%.2f",sum);
    return 0;
}

3-7 統計學生成績(15 分)
本題要求編寫程序讀入N個學生的百分制成績,統計五分制成績的分布。百分制成績到五分制成績的轉換規則:

大于等于90分為A;
小于90且大于等于80為B;
小于80且大于等于70為C;
小于70且大于等于60為D;
小于60為E。
輸入格式:

輸入在第一行中給出一個正整數N(≤1000),即學生人數;第二行中給出N個學生的百分制成績,其間以空格分隔。

輸出格式:

在一行中輸出A、B、C、D、E對應的五分制成績的人數分布,數字間以空格分隔,行末不得有多余空格。

輸入樣例:

7
77 54 92 73 60 65 69

輸出樣例:

1 0 2 3 1

程序源碼

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int n,num,a,b,c,d,e;
    a=0;b=0;c=0;d=0;e=0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%d",&num);
        if(num>=90){
            a++;
        }else if(num>=80){
            b++;
        }else if(num>=70){
            c++;
        }else if(num>=60){
            d++;
        }else{
            e++;
        }
    }
    printf("%d %d %d %d %d",a,b,c,d,e);
    return 0;
}

3-8 輸出三角形面積和周長(15 分)
本題要求編寫程序,根據輸入的三角形的三條邊a、b、c,計算并輸出面積和周長。注意:在一個三角形中, 任意兩邊之和大于第三邊。三角形面積計算公式:area=√?s(s?a)(s?b)(s?c) ,其中s=(a+b+c)/2。
輸入格式:

輸入為3個正整數,分別代表三角形的3條邊a、b、c。

輸出格式:

如果輸入的邊能構成一個三角形,則在一行內,按照area = 面積; perimeter = 周長的格式輸出,保留兩位小數。否則,輸出
These sides do not correspond to a valid triangle

輸入樣例1:

5 5 3

輸出樣例1:

area = 7.15; perimeter = 13.00

輸入樣例2:

1 4 1

輸出樣例2:

These sides do not correspond to a valid triangle

程序源碼

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void) {
    int a,b,c;
    double area,s,perimeter;
    scanf("%d %d %d",&a,&b,&c);
    if(a+b>c&&a+c>b&&b+c>a){
        perimeter=a+b+c;
        s=(perimeter)/2;
        area=sqrt(s*(s-a)*(s-b)*(s-c));
        printf("area = %.2f; perimeter = %.2f",area,perimeter);
    }else{
        printf("These sides do not correspond to a valid triangle");
    }
    return 0;
}

3-9 三天打魚兩天曬網(15 分)
中國有句俗語叫“三天打魚兩天曬網”。假設某人從某天起,開始“三天打魚兩天曬網”,問這個人在以后的第N天中是“打魚”還是“曬網”?

輸入格式:

輸入在一行中給出一個不超過1000的正整數N。

輸出格式:

在一行中輸出此人在第N天中是“Fishing”(即“打魚”)還是“Drying”(即“曬網”),并且輸出“in day N”。

輸入樣例1:

103

輸出樣例1:

Fishing in day 103

輸入樣例2:

34

輸出樣例2:

Drying in day 34

程序源碼

#include <stdio.h>
#include <stdlib.h>
int main(void) {
     int day;
     scanf("%d",&day);
     if(day%5>3||day%5==0){
        printf("Drying in day %d",day);
     }else{
        printf("Fishing in day %d",day);
     }
    return 0;
}

3-10 高速公路超速處罰(15 分)
按照規定,在高速公路上行使的機動車,超出本車道限速的10%則處200元罰款;若超出50%,就要吊銷駕駛證。請編寫程序根據車速和限速自動判別對該機動車的處理。

輸入格式:

輸入在一行中給出2個正整數,分別對應車速和限速,其間以空格分隔。

輸出格式:

在一行中輸出處理意見:若屬于正常行駛,則輸出“OK”;若應處罰款,則輸出“Exceed x%. Ticket 200”;若應吊銷駕駛證,則輸出“Exceed x%. License Revoked”。其中x是超速的百分比,精確到整數。

輸入樣例1:

65 60

輸出樣例1:*

OK

輸入樣例2:

110 100

輸出樣例2:

Exceed 10%. Ticket 200

輸入樣例3:

200 120

輸出樣例3:

Exceed 67%. License Revoked

程序源碼

#include <stdio.h>
#include <stdlib.h>

int main(void) {
     double v1,v2;
     double num;
     scanf("%lf %lf",&v1,&v2);
     num=(v1-v2)/v2;
     if(num>=0.5){
        printf("Exceed %.0f%%. License Revoked",num*100);   
     }else if(num>=0.1){
        printf("Exceed %.0f%%. Ticket 200",num*100);
     }else{
        printf("OK");
     }
    return 0;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,119評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,382評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,038評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,853評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,616評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,112評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,192評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,355評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,869評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,727評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,928評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,467評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,165評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,570評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,813評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,585評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,892評論 2 372

推薦閱讀更多精彩內容