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阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容