(代码有误,待修改)
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。
(代码有误,待修改)
#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<10kg | 2.5元 |
10kg< =weight <30kg | 2元 |
30kg<= weight < 40kg | 1.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;
}