C程序设计习题 - 选择结构

(代码有误,待修改)

4.15 编程题

1.输出一个正整数,判断其为是否为3和7的整数倍,若是则输出“yes”,否则输出“no”。

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

int main()
{
    int x;
    printf("请输入一个正整数\n");
    scanf("%d",&x);
    if(x%7==0||x%3==0)
    {
        printf("YES");
    }
    else
    {
        printf("NO");
    }
    return 0;
}

2.输入x的值,用switch语句编写程序,计算y的值并输出,当x<0成立为1,则y=-1;若y=-1;若不成立为0;继续下一个switch语句,判断x是否为0。

(代码有误,待修改)

y=\begin{Bmatrix} -1 \, \, \, \, \, \, \, \, \, \, \, x<0 & & \\ 0 \, \, \, \, \, \, \, \, \, \, \, \, x=0& & \\ 1 \, \, \, \, \, \, \, \, \, \, \, \, x>0& & \end{Bmatrix}

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

int main()
{
    int x;
    float y;
    scanf("%d",&x);
    switch(x<0)
    {
        case1:y=-1;
        break;
        case0:switch(x==0)
                 {
                     case2:y=0;
                     break;
                     default:y=1;
                 }
    }
    printf("y=%d",y);
    return 0;
}

3.某邮局对邮寄包裹有如下规定:若包裹的长、宽、高任一尺寸超过 1m 或重量超过 40kg,则不予邮寄;对可以邮寄的包裹每件收手续费 5 元,再加上根据下表 按重量计算的邮资。

重量/kg邮资
weight<10kg2.5元
10kg< =weight <30kg2元
30kg<= weight < 40kg1.5元

编写程序输入包裹的长,宽,高和重量,计算邮资

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

int main()
{
    float l,k,h,w;
    float fee;
    printf("请输入包裹的长: m\n");
    scanf("%f",&l);
    printf("请输入包裹的宽: m\n");
    scanf("%f",&k);
    printf("请输入包裹的长: m\n");
    scanf("%f",&h);
    printf("请输入包裹的重量: kg\n");
    scanf("%f",&w);
    if(l>1||k>1||h>1||w>40)
    {
        printf("太重了太大了,不给邮递\n");
        return 1;
    }
    else
    {
        if(w<10)
        {
            fee=w*2.5;
        }
        if(w>=10&&w<30)
        {
            fee=w*2;
        }
        if(w>=30&&w<40)
        {
            fee=w*1.5;
        }
    }
    printf("%f元",fee);
    return 0;
}

4.由键盘输入4个整数,输出其中最小值。

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

int main()
{
    int a,b,c,d;             //输入的正整数
    int tmp;                 //缓存变量值
    scanf("%d%d%d%d",&a,&b,&c,&d);
    if(a>b)
    {
        tmp=a;
    }
    else
    {
        tmp=b;
    }
    if(tmp<c)
    {
        tmp=c;
    }
    if(tmp<d)
    {
        tmp=d;
    }
    printf("%d\n",tmp);
    return 0;
}

利用条件运算符

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

int main()
{
    int a,b,c,d;             //输入的正整数
    int tmp;                 //缓存变量值
    scanf("%d%d%d%d",&a,&b,&c,&d);
    tmp = a;
     tmp = tmp>b?tmp:b;
     tmp = tmp>c?tmp:c;
     tmp = tmp>d?tmp:d;
    printf("%d\n",tmp);
    return 0;
}

5.某超市进行啤酒促销活动,每瓶啤酒的单价为20元。买5瓶以上(包括5瓶) 10瓶以下打9折;10瓶以上(包括10瓶) 20 瓶以下打85折;20瓶以上(包括20瓶) 30 瓶以下打8折;30瓶以上打75折。
编写程序,根据顾客的购买数量计算所要付款的数额(保留2位小数)。

思路:将输入的购买啤酒数量除以5得到一个正整数,用switch语句做比较,获得相应的折扣,最后计算出所要付的金额。

#include<stdio.h>
int main() {
int n,t;
double d=1;
scanf("%d",&n);
t=n/5;
switch(t)
{
case 1:d=0.9;break;
case 2:
case 3:d=0.85;break;
case 4:
case 5:d=0.8;break;
case 6:d=0.75;break;
}
printf("%.2f",n*d*20);
}

(代码有误,待修改) 

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

#define peer_fee 20
int main()
{
    int num;    //数量
    int c;
    float price;
    scanf("%d",&num);
    c = num/5;
    switch(c)
    {
        case0:price=peer_fee*num;
             break;
        case1:price=num*peer_fee*0.9;
             break;
        case2:price=num*peer_fee*0.85;
             break;
        case3:price=num*peer_fee*0.85;
             break;
        case4:price=num*peer_fee*0.8;
             break;
        case5:price=num*peer_fee*0.8;
             break;
        default:price=num*peer_fee*0.75;
            break;
     }
    printf("酒的价格:%0.2f\n",price);
    return 0;
}

6.从键盘输入一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

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

#define peer_fee 20
int main()
{
    int num;
    int a,b,c,d;   //分别是
    printf("请输入一个五位数:");
    scanf("%d",&num);
    a=num/10000;
    b=(num/1000)%(a*10);
    c=num%100/10);               //左结合!!!
    d=num%10;
    if(a==d&&b==c)
    {
         printf("回文数\n");
    }
    printf("不是回文数\n");
    printf("万位:%d千位:%d十位:%d个位:%d",a,b,c,d);
    return 0;
}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值