湖南中医药大学OJ—1150到1159

1150: 习题4-6 分段函数求值

题目描述
有一个函数y=f(x)的表达式如下:
当x<1时,y=x
当1<=x<10时,y=2x-1
当x>=10时,y=3x-11
输入x的值,输出y相应的值。
末尾换行。
输入:
一个实数
输出:
y=计算的结果,保留2位小数,注意末尾换行。

样例输入 Copy
5.1
样例输出 Copy
y=9.20

根据规则编写判断条件

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

1151: 习题4-8-1 百分制成绩转换为等级

题目描述
从键盘输入一百分制成绩,要求输出其所对应的等级’A’, ‘B’, ‘C’, ‘D’。85分以上(含)为’A’,7084分之间为’B’,6069分之间为’C’,60分以下为’D’。
请用if语句实现。
输入
百分制成绩,保证成绩在0~100之间。
输出
百分制成绩所对应的等级,末尾输出换行。

样例输入 Copy
73
样例输出 Copy
B

#include<stdio.h>
#include<string.h>
#include<math.h>
#define PI 3.14
int main()
{
    
    
    int x;
    scanf("%d",&x);
    if(x>=85)
        printf("A\n");
    if(x>=70&&x<85)
        printf("B\n");
    if(x>=60&&x<70)
        printf("C\n");
    if(x<60)
        printf("D\n");
    //printf("%d\n",y);
    return 0;
}

1152: 习题4-8-2 百分制成绩转换为等级

题目描述
从键盘输入一百分制成绩,要求输出其所对应的等级’A’, ‘B’, ‘C’, ‘D’。85分以上(含)为’A’,7084分之间为’B’,6069分之间为’C’,60分以下为’D’。
请用switch语句实现。
输入
一百分制成绩
输出
百分制成绩所对应的等级,末尾换行。

样例输入 Copy
73
样例输出 Copy
B

下面的程序是错误示范
没有考虑到84分的条件应该是B等级

#include<stdio.h>
#include<string.h>
#include<math.h>
#define PI 3.14
int main()
{
    
    
    int x,y;
    scanf("%d",&x);
    y=x/10;
    switch(y)
    {
    
    
    case 10:
    case 9:
    case 8:printf("A\n");break;
    case 7:printf("B\n");break;
    case 6:printf("C\n");break;
    default:printf("D\n");
    }
    //printf("%d\n",y);
    return 0;
}

正确操作

#include<stdio.h>
#include<string.h>
#include<math.h>
#define PI 3.14
int main()
{
    
    
    int x,y;
    scanf("%d",&x);
    y=x/10;
    if(x%10<5&&x>80)//仅针对于85这个分数做处理
        y -= 1;
    switch(y)
    {
    
    
    case 10:
    case 9:
    case 8:printf("A\n");break;//85以上
    case 7:printf("B\n");break;//84-70
    case 6:printf("C\n");break;//79-60
    default:printf("D\n");//60以下
    }
    //printf("%d\n",y);
    return 0;
}

1153: 习题4-9-1 判断正整数位数

题目描述
给定一个不多于5位的正整数,判断它是几位数,并将该数字输出。输出结束后换行。
注意:输入的数字要确保是一个不多于5位的正整数。
输入:
一个不多于5位的正整数。
输出:
输入正整数的位数,注意末尾的换行。

样例输入 Copy
1234
样例输出 Copy
4

一个数对10取余就是取得这个数的最后一位数字
一个数除10就是取得去掉这个数的最后一位后,剩下的数字

#include<stdio.h>
#include<string.h>
#include<math.h>
#define PI 3.14
int main()
{
    
    
    int x,y,a=0;
    scanf("%d",&x);
    while(x>0)
    {
    
    
        x/=10;
        a++;
    }
    printf("%d\n",a);     
    //printf("%d\n",y);
    return 0;
}

1154: 习题4-9-2 求正整数各位上的数字

题目描述
输入一个不多于5位的正整数,按高位到低位的顺序输出各位上的数字,末尾换行。
注意:确保输入的正整数的位数不多于5。
输入:
一个不多于5位的正整数
输出:
从高位到低位依次输出各位上的数字,中间以空格分隔的。
注意末尾的换行。

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

就是对上面那道题中提到的对10取余和除10操作的练习

#include<stdio.h> 
int main() 
{
    
     
    int a,g,s,b,q,w; 
    scanf("%d",&a); 
    w=a/10000; 
    q=a/1000%10; 
    b=a/100%10; 
    s=a/10%10; 
    g=a%10; 
    if(w!=0) 
    printf("%d %d %d %d %d\n",w,q,b,s,g) ; 
     else if(q!=0) 
    printf("%d %d %d %d\n",q,b,s,g) ; 
    else if(b!=0) 
    printf("%d %d %d\n",b,s,g) ; 
    else if(s!=0) 
    printf("%d %d\n",s,g) ; 
    else 
    printf("%d\n",g) ; 
}

1155: 习题4-9-3 逆序输出正整数各位上数字

题目描述
输入一个不多于5位的正整数,按逆序输出各位上的数字,末尾换行。
注意:确保输入的正整数的位数不多于5。
输入:
一个不多于5位的正整数。
输出:
逆序输出各位上的数字,中间以空格分隔。
注意末尾的换行。

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

#include<stdio.h> 
int main() 
{
    
     
    int a,g,s,b,q,w; 
    scanf("%d",&a); 
    w=a/10000; 
    q=a/1000%10; 
    b=a/100%10; 
    s=a/10%10; 
    g=a%10; 
    if(w!=0) 
    printf("%d %d %d %d %d\n",g,s,b,q,w) ;
     else if(q!=0) 
    printf("%d %d %d %d\n",g,s,b,q) ; 
    else if(b!=0) 
    printf("%d %d %d\n",g,s,b) ; 
    else if(s!=0) 
    printf("%d %d\n",g,s) ;
    else 
    printf("%d\n",g) ;
 }

1156: 习题4-10-1 奖金计算

题目描述
某企业发放的奖金根据利润提成。利润I低于或等于100000时,奖金可提10%;利润高于100000元,低于200000元(100000<I<=200000)时,低于100000元的部分仍按10%提成,高于100000元的部分提成比例为7.5%;200000<I<=400000时,低于200000元的部分仍按上述方法提成(下同),高于200000元的部分按5%提成;400000<I<=600000元时,高于400000元的部分按3%提成;600000<I<=1000000时,高于600000元的部分按1.5%提成;I>1000000元时,超过1000000元的部分按1%提成。
从键盘输出当月利润I,求应发奖金数,奖金精确到分。
要求用if语句实现。
输入:
企业利润,小数,双精度double类型
输出:
应发奖金数,保留2位小数,末尾换行。

样例输入 Copy
1050
样例输出 Copy
105.00

耐心走完题目,其实不难,主要是繁杂

#include <stdio.h>
 
int main()
{
    
    
    double a,b,c,d,i;
    scanf("%lf",&i);
    if(i<=100000)
        a=i*0.1;
    else if(i>100000&&i<=200000)
        a=(i-100000)*0.075+100000*0.1;
    else if(i>200000&&i<=400000)
        a=(i-200000)*0.05+200000*0.1;
    else if(i>400000&&i<=600000)
        a=(i-400000)*0.03+400000*0.1;
    else if(i>600000&&i<=1000000)
        a=(i-600000)*0.015+600000*0.1;
    else if(i>1000000)
        a=(i-1000000)*0.01+1000000*0.1;
    printf("%.2lf\n",a); 
    return 0;
}

1157: 习题4-10-2 奖金计算

题目描述
某企业发放的奖金根据利润提成。利润I低于或等于100000时,奖金可提10%;利润高于100000元,低于200000元(100000<I<=200000)时,低于100000元的部分仍按10%提成,高于100000元的部分提成比例为7.5%;200000<I<=400000时,低于200000元的部分仍按上述方法提成(下同),高于200000元的部分按5%提成;400000<I<=600000元时,高于400000元的部分按3%提成;600000<I<=1000000时,高于600000元的部分按1.5%提成;I>1000000元时,超过1000000元的部分按1%提成。
从键盘输出当月利润I,求应发奖金数,奖金精确到分。
要求用switch语句实现。
输入:
企业当月利润,小数,双精度double类型
输出:
应发奖金,精确到小数点后2位,末尾换行。

样例输入 Copy
1050
样例输出 Copy
105.00

#include <stdio.h>
 
int main()
{
    
    
    double a,c,d,i;
    int b;
    scanf("%lf",&i);
    b=i/100000;
    switch(b)
    {
    
    
    case 0: a=i*0.1;break;
    case 1: a=(i-100000)*0.075+100000*0.1;break;
    case 2: 
    case 3: a=(i-200000)*0.05+200000*0.1;break;
    case 4: 
    case 5:a=(i-400000)*0.03+400000*0.1;break;
    case 6:
    case 7:
    case 8:
    case 9:a=(i-600000)*0.015+600000*0.1;break;
    default:a=(i-1000000)*0.01+1000000*0.1;break;
    }
    printf("%.2lf\n",a);
    return 0;
}

1158: 习题4-11 4个整数从小到大输出

题目描述
从键盘输入4个整数,要求按照由小到大的顺序输出,末尾换行。
输入
以空格分隔的四个整数。
输出
从小到大输出这4个整数,中间以空格分隔,末尾换行。

样例输入 Copy
10 7 -2 9
样例输出 Copy
-2 7 9 10

循环的嵌套

#include <stdio.h>
 
int main()
{
    
    
    int a[4],i,j,t;
    for(i=0;i<4;i++)
        scanf("%d",&a[i]);
     
    for(j=0;j<4;j++)
    {
    
    
        for(i=0;i<3;i++)
        {
    
    
            if(a[i]>a[i+1])
            {
    
    
                t=a[i];
                a[i]=a[i+1];
                a[i+1]=t;
            }
        }
    }
    for(i=0;i<4;i++)
    {
    
    
        printf("%d ",a[i]);
    }
    printf("\n");
     
    return 0;
}

1159: 习题4-12 求建筑物高度

题目描述
有4个圆塔,圆心分别为(2, 2)、(-2, 2)、(-2, -2)、(2, -2),圆半径为1,如下图所示。这4个塔的高度为10米(m),塔以外无建筑物。
在这里插入图片描述
现输入任一点的坐标,求该点的建筑物高度(塔外的高度为零)。
输入
输入以圆括号括起来的两个数字,两个数字之间以逗号(,)分隔,格式如:(x,y)
如下为正确输入:
(1.5,1.9)
浮点型变量,请定义为float类型。
输出
该建筑物的高度,末尾换行。

样例输入 Copy
(1.8,1.9)
样例输出 Copy
10

简单函数pow和sqrt的使用

include <stdio.h>
#include <math.h>
int main()
{
    
    
    float x,y,a,b,c;
    int h;
    scanf("(%f,%f)",&x,&y);
    a=sqrt(x*x);
    b=sqrt(y*y);
    c=pow((a-2),2)+pow((b-2),2);
    if(sqrt(c)<=1)
        h=10;
    printf("%d",h); 
    printf("\n");   
    return 0;
}

猜你喜欢

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