标题:一道对大神来说的简单c程序题。
只看楼主
黑色幽默sws
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-10-21
结帖率:50%
 问题点数:0 回复次数:11 
一道对大神来说的简单c程序题。
商场促销,凡购买数量为50件或以上的顾客优惠5%,
凡购买数量为100件或以上的顾客优惠7.5%,凡购买数量为300件或以上的顾客优惠10%,凡购买数量为500件或以上的顾客优惠15%。用if语句编程,输入单价、数量,输出应付款和优惠折扣。
#include<stdio.h>
main()
{
    int n;//n代表数量
    float x,y;//x代表单价
    printf("请输入单价和数量:");
    scanf("%d,%d",&x,&n);
    if(n<100)
    {if(n>=50)
    y=(0.95)*x*n;
    else
        y=x*n;}
    else(n>=100);
    {if(n>=300)
    y=(0.85)*x*n;
    else
        y=0.925*x*n;}
    printf("应付款%d\n");
}
我是一位刚学c程序的人,上面是我的编码,如果错的地方少,希望帮我修正过,错的多的话能不能编出来我参考一下,谢谢您。
搜索更多相关主题的帖子: 数量 if 输入 代表 printf 
2017-10-21 15:25
Myloop
Rank: 2
来 自:湖北随州
等 级:论坛游民
威 望:2
帖 子:18
专家分:27
注 册:2017-10-21
得分:0 
编码规范你还需要学习,下面是我修正了你的代码的demo:
#include <studio.h>
int main(){
   int n;//n是数量
   int x,y;//x是单价,y是总价
   
   printf(“请输入单价和数量 :”);
   scanf(“%d,%d”,&x,&n);
   while(n >= 0){
   if(n >= 500){
       y = 0.85*n*x;
   }
   else
   {
      if(n >= 300){
         y = 0.9*n*x;
      }
      else if(n >= 100){
           y = 0.925*n*x;
      }
      else if(n >= 50){
           y = 0.95*n*x;
       }
       else
       {
           y = n*x;
       }
   }
   printf(“应付款¥%d”,y);
   puts(“谢谢惠顾,欢迎下次光临!”); //puts()函数会自动换行,更人性化的设计
   return 0;
}
/*
**信息安全/orz/ISC-hgdCS_01-1710300120
**Author:Myloop(李亮星)
**Redhats
*/

Myloop
Speak is cheap,show me the code.
2017-10-21 16:23
zbjzbj
Rank: 12Rank: 12Rank: 12
来 自:郑州
等 级:贵宾
威 望:52
帖 子:620
专家分:3020
注 册:2011-4-22
得分:0 
#include<stdio.h>
main()
{
    int n;//n代表数量
    float x,y;//x代表单价
    printf("请输入单价和数量:");
    scanf("%d,%d",&x,&n);
       y = x * n;
    if(n>=50)
       y = 0.95 * x * n;
    if(n>=100)
       y = 0.925 * x * n;
    if(n>=300)
       y = 0.90 * x * n;
    if(n>=500)
       y = 0.85 * x * n;
    printf("应付款%d\n",y);
}
以上不用if...else嵌套。
注意,没有输出折扣,不符合题意要求。

[此贴子已经被作者于2017-10-21 16:47编辑过]

2017-10-21 16:44
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 

scanf("%f,%d",&x,&n);

     y = x * n;
    if (n >= 500)
        y *= 0.85;
    else if (n >= 300)
        y *= 0.90;
    else if (n>=100)
        y *= 0.925;
    else if (n >= 50)
        y *= 0.95;
    printf("应付款%.2f\n",y);

或:
    y = x * n * (n>=500?0.85: (n>=300?0.90: (n>=100?0.925: (n>=50?0.95: 1))));
    printf("应付款%.2f\n",y);
2017-10-21 16:48
黑色幽默sws
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-10-21
得分:0 
回复 2楼 Myloop
首先感谢你的回复,为什么单价和价钱也是用int?不是应该用float吗?
2017-10-21 19:44
黑色幽默sws
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-10-21
得分:0 
回复 4楼 吹水佬
#include<stdio.h>
main()
{
    float x,y;
    int n;
    printf("请输入单价和数量:");
    scanf("%f,%d",&x,&n);
    y = x * n;
    if (n >= 500)
    y *= 0.85;
    else if (n >= 300)
    y *= 0.90;
    else if (n>=100)
    y *= 0.925;
    else if (n >= 50)
    y *= 0.95;
    printf("应付款%2.f\n",y);

}

谢谢你的回复,但为什么会这样?
2017-10-21 20:11
黑色幽默sws
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-10-21
得分:0 
回复 2楼 Myloop
你的头文件打错了,还有其它地方也错了
2017-10-21 20:20
黑色幽默sws
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-10-21
得分:0 
回复 3楼 zbjzbj
为什么输出都是0?
2017-10-21 20:23
愤怒的鸟儿
Rank: 1
等 级:新手上路
帖 子:12
专家分:4
注 册:2016-11-4
得分:0 
你少输入了一个逗号
2017-10-21 20:28
code_man_x
Rank: 1
等 级:新手上路
威 望:1
帖 子:6
专家分:5
注 册:2017-10-2
得分:0 
scanf写错了,应该写成scanf("%f %d",&x,&n);
在scanf的格式输入之间不要使用逗号,因为使用逗号的话,scanf会把其解释成你将输入一个数字,一个逗号,然后再输入一个数字.
也就是说,你必须40,200这样输入才行.
犹豫scanf输入,除了%c转换说明以外都会默认跳过空白.
所以scanf("%f%d",&x,&n);是一样的.
你可以把程序改了试试
2017-10-21 20:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-481628-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.084092 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved