湖南中医药大学OJ—1140到1149

1140: 例题4-1 一元二次方程求根

题目描述
求一元二次方程ax2+bx+c=0的根,三个系数a, b, c由键盘输入,且a不能为0,但不保证b^2-4ac>0。
程序中所涉及的变量均为double类型。
输入:
以空格分隔的一元二次方程的三个系数,双精度double类型
输出:
分行输出两个根如下(注意末尾的换行):
r1=第一个根
r2=第二个根
结果输出时,宽度占7位,其中小数部分2位。
如果方程无实根,输出一行如下信息(注意末尾的换行):
No real roots!

样例输入 Copy
1 2 3
样例输出 Copy
No real roots!

简单的数学题

#include<stdio.h>
#include<string.h>
#include<math.h>
#define PI 3.14
int main()
{
    
    
    double a,b,c,x,r1,r2;   
    scanf("%lf %lf %lf",&a,&b,&c);
    x=b*b-4*a*c;//判断是否满足有根必要条件
    if(x<0)
        printf("No real roots!\n");
    else if(x>0)
    {
    
    
        r1=-(b-sqrt(x))/2*a;
        r2=-(b+sqrt(x))/2*a;    
        printf("r1=%7.2\nr2=%7.2lf\n",r1,r2);
    }
    else
    {
    
    
        r1=-(b-sqrt(x))/2*a;
        printf("r1=%7.2lf\n",r1);
    }
    return 0;
}

1141: 例题4-2 比较交换实数值

题目描述
从键盘输入2个实数,按照代数值由小到大的顺序输出这两个数。
输入:
用空格分隔的两个实数。
输出:
从小到大输出这两个实数,中间以空格来分隔,小数在前,大数在后。
小数点后保留2位小数。
末尾输出换行符。

样例输入 Copy
3.6 -2.3
样例输出 Copy
-2.30 3.60

此题的目的不是我下面的程序目的,题目的意义在于,学会两个整数的交换,使a始终最小,b始终最大(自己思考怎么交换实数)

#include<stdio.h>
#include<string.h>
#include<math.h>
#define PI 3.14
int main()
{
    
    
    double a,b,c,x,r1,r2;   
    scanf("%lf %lf",&a,&b);
    if(a<b)
        printf("%.2lf %.2lf\n",a,b);
    else
        printf("%.2lf %.2lf\n",b,a);
    return 0;
}

1142:例题4-3 比较交换3个实数值,并按序输出

题目描述
从键盘输入3个实数a, b, c,通过比较交换,将最小值存储在变量a中,最大值存储在变量c中,中间值存储在变量b中,并按照从小到大的顺序输出这三个数a, b, c。
末尾输出换行。
输入:
输入以空格分隔的三个实数
输出:
按照从小到大的顺序输出这三个实数,中间以空格分隔,最小值在前,最大值在后。小数点后保留2位小数。
注意末尾的换行。

样例输入 Copy
3 7 1
样例输出 Copy
1.00 3.00 7.00

下面是正确的交换实数的示例,关于实数的交换,可以这样理解:有两个瓶子,一个装了可乐,一个装了雪碧,现在想把两个瓶子里的饮料互换,这时,可以用一个空瓶子,先把可乐倒进去,然后原本的可乐瓶就空了,这时再把雪碧倒进原来的可乐瓶,这时,原可乐瓶里面的就是雪碧了,然后现在雪碧的瓶子肯定是空的,再将,之前空瓶子(现在里面充满可乐的瓶子)里面的可乐倒进现在的空雪碧瓶,就这样实现了饮料瓶中的饮料互换。

#include<stdio.h>
#include<string.h>
#include<math.h>
#define PI 3.14
int main()
{
    
    
    double a,b,c,x,r1,r2;   
    scanf("%lf %lf %lf",&a,&b,&c);
    if(a>b)
    {
    
    
        x=b;//定义一个空闲变量X,起一个中介的作用
        b=a;
        a=x;
    }
    else if(a>c)
    {
    
    
        x=c;
        c=a;
        a=x;
    }
    else if(b>c);
    {
    
    
        x=c;
        c=b;
        b=x;
    }
     
    printf("%.2lf %.2lf %.2lf\n",a,b,c);
    return 0;
}

1143: 例题4-4 大写字母转换为小写字母

题目描述
输入一个字符,判断它是否为大写字母,如果是,将它转换为小写字母;如果不是,不转换。然后输出最后得到的字符。
输入:
一个字符
输出:
一个字符,末尾输出换行。

样例输入 Copy
A
样例输出 Copy
a

#include<stdio.h>
#include<string.h>
#include<math.h>
#define PI 3.14
int main()
{
    
    
    int A;
    A=getchar();//输入一个字符
    A+=32;//利用ASCCL码传换
    printf("%c\n",A);
    return 0;
}

1144: 例题4-5 符号函数

题目描述
给定如下函数:
在这里插入图片描述
输入x的值,要求输出相应的y值。
末尾输出换行符。
程序中涉及的变量请均定义为整型(int)
输入:
键盘输入一整数。
输出:
输出-1, 0, 1三者之一

样例输入 Copy
5
样例输出 Copy
1

就是对图片的简单判断,是对if语句的练习

#include<stdio.h>
#include<string.h>
#include<math.h>
#define PI 3.14
int main()
{
    
    
    int x,y;
    scanf("%d",&x);
    if(x<0)
        y=-1;
    else if(x=0)
        y=0;
    else
        y=1;
    printf("%d\n",y);
    return 0;
}

1145: 例题4-6 成绩格式转换

题目描述
要求按照考试成绩的等级输出百分制成绩段,A等为85分以上,B等为7084分,C等为6069分,D等为60分以下。
成绩的等级由键盘输入(大小写的ABCD皆可)。
要求使用switch语句。
输入:
以大小写字母ABCDabcd表示的成绩等级。
输出:
输入等级所表示的百分制成绩段。单独占一行,末尾输出换行符。
输出结果应为如下几行之一:
85~100
70~84
60~69
0~60

样例输入 Copy
A
样例输出 Copy
85~100

#include<stdio.h>
#include<string.h>
#include<math.h>
#define PI 3.14
int main()
{
    
    
    char x,y;
    scanf("%c",&x);
    switch(x)
    {
    
    
    	case 'A' : printf("85~100\n"); break;
    	case 'a' : printf("85~100\n"); break;
    	case 'B' : printf("70~84\n"); break;
    	case 'b' : printf("71~84\n"); break;
    	case 'C' : printf("60~69\n"); break;
    	case 'c' : printf("60~69\n"); break;
    	case 'D' : printf("0~60\n"); break;
    	case 'd' : printf("0~60\n"); break;
    	default : printf("0~60\n"); break;
    }
    return 0;
}

1146: 例题4-8 判断闰年

题目描述
输入一个年份,判断该年份是否为闰年。如果是输出该年份是一个闰年,否则输出该年份不是闰年的信息。
输入:
年份
输出:
输出结果的格式如下所示:
输入的年份 is a leap year!
输入的年份 is not a leap year!
注意末尾输出换行。

样例输入 Copy
1900
样例输出 Copy
1900 is not a leap year!

#include<stdio.h>
#include<string.h>
#include<math.h>
#define PI 3.14
int main()
{
    
    
    int x,y;
    scanf("%d",&x);
    if(x%4==0&&x%100!=0||x%400==0)//闰年的条件
        printf("%d is a leap year!\n",x);
    else
        printf("%d is not a leap year!\n",x);   
    //printf("%d\n",y);
    return 0;
}

1147: 例题4-10 运费计算

题目描述
运输公司对用户计算运输费用。路程(km)越远(以s表示),每吨.千米的运费越低。
计算标准如下:
在这里插入图片描述
设基本运费为p,货物重量为w,运输距离为s,折扣率为d,则总运费f的计算公式如下:
输入:
输入运输单价、重量和距离,以空格分隔。
数据类型定义为float类型。
输出:
freight=计算出的总运费。
小数点后保留2位数字,末尾输出换行。

样例输入
100 20 300
样例输出
freight=588000.00

跟着题目写算式就行了

#include<stdio.h>
#include<string.h>
#include<math.h>
#define PI 3.14
int main()
{
    
    
    float s,p,w,d,f;
    scanf("%f %f %f",&p,&w,&s);
    if(s<250)
    {
    
    
        d=0;
        f=p*w*s*(1-d);
    }
    if(s>=250&&s<500)
    {
    
    
        d=0.02;
        f=p*w*s*(1-d);
    }
    if(s>=500&&s<1000)
    {
    
    
        d=0.05;
        f=p*w*s*(1-d);
    }
    if(s>=1000&&s<2000)
    {
    
    
        d=0.08;
        f=p*w*s*(1-d);
    }
    if(s>=2000&&s<3000)
    {
    
    
        d=0.10;
        f=p*w*s*(1-d);
    }
    if(s>=3000)
    {
    
    
        d=0.15;
        f=p*w*s*(1-d);
    }
        printf("freight=%.2f\n",f);
    //printf("%d\n",y);
    return 0;
}

1148: 习题4-4 三个整数求最大值

题目描述
有3个整数a, b, c,由键盘输入,输出其中最大的数。
输入
以空格分割的三个整数。
输出
三个数中的最大值,末尾换行。

样例输入 Copy
1 3 2
样例输出 Copy
3

循环的嵌套

#include<stdio.h>
#include<string.h>
#include<math.h>
#define PI 3.14
int main()
{
    
    
    int a,b,c;
    scanf("%d %d %d",&a,&b,&c);
    if(a>b)
    {
    
    
        if(a>c)
            printf("%d\n",a);
        else printf("%d\n",c);
    }
    if(b>c)
    {
    
    
        printf("%d\n",b);
        if(b<c)
            printf("%d\n",c);
    }   
    //printf("%d\n",y);
    return 0;
}

1149: 习题4-5 求平方根

题目描述
从键盘输入一个小于1000的正数,要求输出它的平方根(如平方根不是整数,则输出其整数部分)。
要求在输入数据后先对其进行检查是否为小于1000的正数。若不是,则输出一行错误信息,信息内容为:“invalid data!”
输入:
一个小于1000的正数
输出:
输入数据的平方根,仅输出整数部分。
注意末尾的换行。

样例输入 Copy
108.7
样例输出 Copy
10

可以直接调用sqrt函数

#include<stdio.h>
#include<string.h>
#include<math.h>
#define PI 3.14
int main()
{
    
    
    float a,b,c;
    int x;
    scanf("%f",&a);
    if(a>1000)
    {
    
       
        printf("invalid data!\n");
    }
    else
    {
    
    
        x=sqrt(a);
        printf("%d\n",x);
    }   
    //printf("%d\n",y);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_43337254/article/details/109543188
今日推荐