C程序设计第四版(谭浩强著)第四章选择结构程序设计习题代码

(1)有3个整数a,b,c,由键盘输入,输出其中最大的数。

//有3个整数a,b,c,由键盘输入,输出其中最大的数。
#include<stdio.h>
int main()
{
    int a,b,c,max;
    scanf("%d %d %d",&a,&b,&c);
    max=a>b?a:b;
    max=max>c?max:c;
    printf("max=%d",max);
    return 0;
}在这里插入代码片

(2)从键盘输入一个小于1000的正数,要求输出它的平方根
(如果平方根不是整数,则要求输出整数部分)
要求在输入数据后先对其检查是否为小于1000的正数。如不是则重新输入。

//从键盘输入一个小于1000的正数,要求输出它的平方根
//(如何平方根不是整数,则要求输出整数部分)
//要求在输入数据后先对其检查是否为小于1000的正数。如不是则重新输出。
#include<stdio.h>
#include<math.h>
int main()
{
    int i,g;
    while (1)
    {
        scanf("%d",&i);
        if(i<1000&&i>0)
        {
            break;
        }
        else
        {
            printf("请重新输入:");
            continue;
        }
    }
    g=sqrt(i); 
    printf("平方根g=%d",g);
    return 0;
}

(3)有一个函数:
y={x (x<1)
2x-1 (1<=x<10)
3x-11 (x>=10)
//写程序,输入x的值,输出y相应的值。

#include<stdio.h>
int main()
{
    int x,y;
    scanf("%d",&x);
    if(x<1)
    {
        y=x;
    }
    else if(x>=1&&x<10)
    {
        y=2*x-1;
    }
    else
    {
        y=3*x-11;
    }
    printf("y=%d",y);  
    return 0;
}

(4)给出一百分制成绩,要求输出成绩等级’A’、‘B’、‘C’、‘D’、‘E’。90分以上为’A’,80-89分为’B’,70-79分为’C’,60~69分为’D’,60分以下为’E’。

#include<stdio.h>
int main()
{
    int x,score;
    scanf("%d",&score);
    x=score/10;
    switch(x)
    {
        case 10:
        case 9: printf("A");break;
        case 8: printf("B");break;
        case 7: printf("C");break;
        case 6: printf("D");break;
        case 5:
        case 4:
        case 3:
        case 2:
        case 1:
        case 0: printf("E");break;
    }
    return 0;
}

(5)给一个不多于5位的正整数,要求:
1.求出它是几位数;
2.分别输出每一位数字;
3.按逆序输出各位数字,例如原数为321,应输出123。

//给一个不多于5位的正整数,要求:
//1.求出它是几位数;
//2.分别输出每一位数字;
//3.按逆序输出各位数字,例如原数为321,应输出123。
#include<stdio.h>
int main()
{
    int shu,n=0,k;
    scanf("%d",&shu);
    printf("分别输出每位数字:%d\n",shu);    
    printf("将数字倒叙输出:");
    for(shu;shu>0;shu=shu/10)
    {
        n+=1;
        k=shu%10;
        printf("%d",k);
    }
    printf("\n这个数是几位数:%d",n);
    return 0;
}

(6)企业发放的奖金根据利润提成。
利润I<=100000,奖金可提10%
100000<I<=200000 低于100000 10% 高于100000 7.5%
200000<I<=400000 低于200000 7.5% 高于200000 5%
400000<I<=600000 低于400000 5% 高于400000 3%
600000<I<=1000000低于600000 3% 高于600000 1.5%
I>1000000 低于1.5% 高于1%
从键盘输入当月利润I,求应发奖金总数。
要求(1)用if(2)用switch

//用if语句
#include<stdio.h>
int main()
{
    int i,m;
    printf("请输入利润:");
    scanf("%d",&i);
    if(i<=100000)
    m=i*0.1;

    else if(100000<i&&i<=200000)
    m=100000*0.1+(i-100000)*0.075;

    else if(200000<i&&i<=400000)
    m=100000*0.1+100000*0.075+(i-200000)*0.05;

    else if(400000<i&&i<=600000)
    m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;

    else if(600000<i&&i<=1000000)
    m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;

    else
    m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;
    
    printf("%d",m);
    return 0;
}
//用switch语句
#include<stdio.h>
int main()
{
    int i,m;
    printf("请输入利润:");
    scanf("%d",&i);
    switch(i/100000)
    {
        case 0:m=i*0.1;break;
        case 1:m=100000*0.1+(i-100000)*0.075;break;
        case 2:
        case 3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;
        case 4:
        case 5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;
        case 6:
        case 7:
        case 8:
        case 9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;
        default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;break;
    }
    printf("%d",m);
    return 0;
}

(6)输入4个整数,要求按由小到大的顺序输出。(不用数组)

#include<stdio.h>
int main()
{
    int a,b,c,d,m;
    printf("请输入四个数:");
    scanf("%d%d%d%d",&a,&b,&c,&d);
    if(a>b)//a<b
    {
        m=b;
        b=a;
        a=m;
    }
    if(b>c)//a<b<c
    {
        m=c;
        c=b;
        b=m;
        if(a>b)
        {
            m=b;
            b=a;
            a=m;
        }
    }
    if(c>d)//a<b<c<d
    {
        m=d;
        d=c;
        c=m;
        if(b>c)
        {
            m=c;
            c=b;
            b=m;
            if(a>b)
            {
                m=b;
                b=a;
                a=m;
            }
        }
    }
    printf("%d %d %d %d",a,b,c,d);
    return 0;
}

(7)有4个圆塔。圆心分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),圆半径为1,见图4.16。
这4个塔的高度为10m,塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)

#include<stdio.h>
#include<math.h>
int main()
{
    float x,y,r,h;
    printf("请输入坐标(x,y)为:");
    scanf("%f %f",&x,&y);
    if(x>=0)
    {
        if(y>=0)
        {
            r=sqrt((x-2)*(x-2)+(y-2)*(y-2));
            if(r<=1)
            h=10-r*10;
            else 
            h=0;
        }
        if(y<0)
        {
            r=sqrt((x-2)*(x-2)+(y+2)*(y+2));
            if(r<=1)
            h=10-r*10;
            else 
            h=0;
        }

    }

    if(x<0)
    {
        if(y>=0)
        {
            r=sqrt((x+2)*(x+2)+(y-2)*(y-2));
            if(r<=1)
            h=10-r*10;
            else 
            h=0;
        }
        if(y<0)
        {
            r=sqrt((x+2)*(x+2)+(y+2)*(y+2));
            if(r<=1)
            h=10-r*10;
            else 
            h=0;
        }

    }
    printf("h=%0.2fm",h);

    return 0;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaowuguiya

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值