求助C语言,从键盘输入一指定金额(以元为单位,如345.78),然后显示支付该金额的各种面额人民币数量,要

作者&投稿:莱哈 (若有异议请与网页底部的电邮联系)
c语言,从键盘输入一指定金额(以元为单位,如345.78),然后显示支付~

a,b,c,d,e,f,g,h,i,j应为整型变量;角分处理做了点更改;
改后程序如下:
#include
int main()
{
float num;
int a,b,c,d,e,f,g,h,i,j;
printf("请输入一个金额如345.78
");
scanf("%f",&num);
a=(int)num/100;
b=(int)(num-a*100)/50;
c=(int)(num-a*100-b*50)/10;
d=(int)(num-a*100-b*50-c*10)/5;
e=(int)(num-a*100-b*50-c*10-d*5)/2;
f=(int)(num-a*100-b*50-c*10-d*5-e*2)/1;
g=(int)((num-a*100-b*50-c*10-d*5-e*2-f*1)*10)/5;
h=(int)((num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5)*10);
i=(int)((num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5-h*0.1)*20)/5;
j=(int)((num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5-h*0.1-i*0.05)*100);
printf("100元、50元、10元、5元、2元、1元、5角、1角、5分、1分各有%d,%d,%d,%d,%d,%d,%d,%d,%d,%d张",a,b,c,d,e,f,g,h,i,j);
return 0;
}

(int)作为取整运算的话,要考虑运算符优先级。
按照你的写法,运算过程实际上是先减掉一堆数,接着取整,然后做除法,这不是你要的结果。

对于这个特定问题用定点数运算比较好。

int value[] = {10000,5000,1000,500,200,100,50,10,5,1};
int count[10] = {}, type_count = sizeof(value)/sizeof(*value);

float k;
int unchanged = k * 100;
for (type=0; type<type_count; type++) {
count[type] = unchanged / value[type];
unchanged %= value[type];
}
printf("%.2f", k);
for (type=0; type<type_count; type++)
printf("%c%f*%d", type?'+':'=', value[type]*.01, count[type]);
printf("
");

a,b,c,d,e,f,g,h,i,j应为整型变量;角分处理做了点更改;
改后程序如下:
#include<stdio.h>
int main()
{
float num;
int a,b,c,d,e,f,g,h,i,j;
printf("请输入一个金额如345.78\n");
scanf("%f",&num);
a=(int)num/100;
b=(int)(num-a*100)/50;
c=(int)(num-a*100-b*50)/10;
d=(int)(num-a*100-b*50-c*10)/5;
e=(int)(num-a*100-b*50-c*10-d*5)/2;
f=(int)(num-a*100-b*50-c*10-d*5-e*2)/1;
g=(int)((num-a*100-b*50-c*10-d*5-e*2-f*1)*10)/5;
h=(int)((num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5)*10);
i=(int)((num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5-h*0.1)*20)/5;
j=(int)((num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5-h*0.1-i*0.05)*100);
printf("100元、50元、10元、5元、2元、1元、5角、1角、5分、1分各有%d,%d,%d,%d,%d,%d,%d,%d,%d,%d张",a,b,c,d,e,f,g,h,i,j);
return 0;
}

a,b,c,d,e,f,g,h,i,j应为整型变量;角分处理做了点更改;
改后程序如下:
#include<stdio.h>
int main()
{
float num;
int a,b,c,d,e,f,g,h,i,j;
printf("请输入一个金额如345.78\n");
scanf("%f",&num);
a=(int)num/100;
b=(int)(num-a*100)/50;
c=(int)(num-a*100-b*50)/10;
d=(int)(num-a*100-b*50-c*10)/5;
e=(int)(num-a*100-b*50-c*10-d*5)/2;
f=(int)(num-a*100-b*50-c*10-d*5-e*2)/1;
g=(int)((num-a*100-b*50-c*10-d*5-e*2-f*1)*10)/5;
h=(int)((num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5)*10);
i=(int)((num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5-h*0.1)*20)/5;
j=(int)((num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5-h*0.1-i*0.05)*100);
printf("100元、50元、10元、5元、2元、1元、5角、1角、5分、1分各有%d,%d,%d,%d,%d,%d,%d,%d,%d,%d张",a,b,c,d,e,f,g,h,i,j);
return 0;
}

  a=(int)num/100;

  类型转化符() 优先级大于双目运算符 / ;
  如 num = 345.78
  (int)num 为345,
  因为a 为 float 所以 a = 345/100 = 3.45
  只需修改一下 变量声明即可:
  float num;
  int a,b,c,d,e,f,g,h,i,j;

#include<stdio.h>
int main()
{
float num;
int a,b,c,d,e,f,g,h,i,j;
printf("请输入一个金额如345.78\n");
scanf("%f",&num);
a=num/100;
b=(num-a*100)/50;
c=(num-a*100-b*50)/10;
d=(num-a*100-b*50-c*10)/5;
e=(num-a*100-b*50-c*10-d*5)/2;
f=(num-a*100-b*50-c*10-d*5-e*2)/1;
g=((num-a*100-b*50-c*10-d*5-e*2-f*1)*10)/5;
h=((num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5)*10);
i=((num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5-h*0.1)*20)/5;
j=((num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5-h*0.1-i*0.05)*100);
printf("100元、50元、10元、5元、2元、1元、5角、1角、5分、1分各有%d,%d,%d,%d,%d,%d,%d,%d,%d,%d张",a,b,c,d,e,f,g,h,i,j);
return 0;
}

大家的办法都很好啊,就是稍微局限与所给的数字了,要是里面放个循环来用程序处理这个未知的数据就更完美了


c语言 从键盘上任意输入一个字符(字母大小写,数字,控制字符和其他字符...
include <string.h>#include<stdio.h>#define N 99main(){ char s[N]; int i,sum,num=0,letter=0,space=0,other=0; gets(s); sum=strlen(s); for(i=0;i<sum;i++) { if(s[i]==' ') space++; if((s[i]>=65&&s[i]<=90)||(s[i]>=97&&s[i]<=122)...

C语言:从键盘输入一个4行4列的矩阵,将其行列互换,并输入互换后的矩阵...
行列互换,也就是将 a[i][j]的数据 放到b[j][i]上。对于初学者,用第二个矩阵最简单了。于是 int main(){ int a[4][4],b[4][4]; int i,j; for(i = 0; i < 4; i ++) for(j = 0; j < 4; j ++) scanf("%d",&a[i][j]); for(i = 0; i...

C语言 ,从键盘上输入5个数,求出这5个数中最大与最小
include<stdio.h> void main(){ int max,min,data[5],i;for(i=0;i<5;i++)scanf("%d", &a[i]); \/*输入5个数*\/ max=data[0];min=data[0]; \/*假定data[0]既是最大值也是最小值*\/ for(i=1;i<5;i++) \/*从data[1]开始判断*\/ { if(data[i]<min) \/*若有比...

c语言编程 从键盘输入一个数值,直到该数为正数为止,并求其平方根
1 循环输入整数。2 判断整数值,如为正数,则退出循环,否则继续输入;3 利用sqrt函数求平方根 4 输出。代码如下:int main(){ int n; double r; while(1) { scanf("%d",&n); if(n>0)break; } r = sqrt(n); printf("%lf",r);} ...

C语言 1:从键盘输入10个整数,删除下标为5的元素,输入删除后的剩余的数组...
include <stdio.h>int main(){int i,a[10];for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=5;i<9;i++)a[i]=a[i+1];for(i=0;i<9;i++)printf("%d ",a[i]);return 0;}

1. 用C语言写一段程序:从键盘上输入两数,判断其大小关系,将判断结果显 ...
1.include <stdio.h> include <string.h> int main(void){ int nNum1,nNum2;printf("请输入第一个整数:");scanf("%d",&nNum1);printf("\\n请输入第二个整数:\\n");scanf("%d",&nNum2);printf("\\n输入的两个数为:%d,%d,其大小关系为:",nNum1,nNum2)if(nNum1 < nNum2)...

C语言,编写一个程序,从键盘输入5个数,算出总和及平均值!急!!!_百度知...
include<stdio.h> int main(){ int i,x;int sum=0;for(i=0;i<5;i++){ printf("请输入第%d个数:",i+1);scanf("%d",&x);sum+=x;} printf("和为%d,平均值为%.2f",sum,sum\/5.0);return 0;}

设计一个C语言程序,从键盘输入n,显示一个n阶图像,1,222,33333,4444444...
include <stdio.h>int main(void){ printf("please input a num:\\n"); int n,i,j; scanf("%d",&n); for(i=1;i<=n;i++) { for(j=0;j

大一C语言问题,从键盘输入2个操作数和运算符,用switch语句实现两个...
include<stdio.h>void main() { float x,y,z; char c; scanf("%f%c%f",&x,&c,&y); switch ( c ) { case '+': z=x+y; break; case '-': z=x-y; break; case '*': z=x*y; break; case '\/': z=( y==0 )?(0):(x\/y); break; default:...

C语言当运行以下程序时,从键盘输入:ab<CR> c <CR> def <CR> (<CR>...
不介意的话你的代码应写成 include "stdio.h"define N 6 void main ( ){char c [N];int i=0;for (; i<N;i++)c[i]=getchar();for (i=0;i<N; i++)putchar(c[i]);} 解释如下 getcgar()用来读取单个字符 素以依次输入ab<CR>c<CR>def<CR>时有 c[0]=a、c[1]=b、c...

陵川县17714856132: c语言题目:写出程序 要求从键盘上输入一个十到十万之间的整数,将其最高位数外的数字输出 -
嬴菡盐酸: //一个简单的方法 int num; int i=10; printf("请输入一个10~100000之间的数"); scanf("%d",&num); while(num%ii*=10; } printf("%d",num%(i/10));

陵川县17714856132: C语言:从键盘输入一笔钱(float money;)计算并输出该笔钱最多能拿出几张百元面值的人民币, -
嬴菡盐酸:#include "stdio.h" main() {float money; scanf("%f",&money); printf("%d",(int)money/100); }

陵川县17714856132: 从键盘上输入一个整数然后从个位数开始输出每一位上的数字 C语言 -
嬴菡盐酸: n";if(number==0)printf("%d\scanf(",&number),number);); #include&lt/.h> int main() { int number;stdio;%d"printf("please input the number\n"while(number!=0){printf("%d",number%10);number=number/*这是我写的程序 希望对你有帮助*/

陵川县17714856132: c语言编程超市促销,满200送40,键盘输入客户购买总金额,屏幕输出返送的金额数 -
嬴菡盐酸: #include<stdio.h> void main() { int money,back=0; printf("请输入客户购买总金额:\n"); scanf("%d",&money); if(money>0) back=money/200*40; printf("返送的金额数为:%d\n",back); }

陵川县17714856132: C语言编程题,当你从键盘输入某个同学的分数(含小数),马上输出这个同学赢得的奖学金金额 -
嬴菡盐酸: #include int main(){ float a[8]; int i; printf("请输入8位同学的C语言成绩\n"); for(i=0;i

陵川县17714856132: C语言程序设计题,懂的进 -
嬴菡盐酸: 那我就做 2 4 6 吧2随机产生的数组中最大值为:41,最小值为:10,平均值为:23.650000,个元素之和为:473.Press any key to continue#include#include "time...

陵川县17714856132: C语言编程 从键盘输入一个小于1000的正整数,并读入该值,然后输出用语言描述的该整数值.例如,9 -
嬴菡盐酸: //本示例默认没有非法输入(比如输入了字母、中文或其他符号) //本示例只执行一次,如果希望能重复运行直至主动中止,请自行修改 #include #include int main() {char interger[100];int temp = 0;int result = 0;scanf("%s", interger);if (...

陵川县17714856132: 用c语言写,由键盘输入一个数,然后逆向输出这个数,该怎么写 -
嬴菡盐酸: #include <stdio.h>#include <string.h> int main() { long int n; char ch[20]; int i; scanf("%ld",&n); if(n<0) n=-n; sprintf(ch,"%ld",n); for(i=strlen(ch)-1;i>=0;i--) printf("%c",ch[i]); printf("\n"); return 0; }示例运行结果:123456654321

陵川县17714856132: 在c语言里怎么从键盘输入一个较大数字,如10^100 -
嬴菡盐酸: 用字符串的方法 先用字符串输入一个很大的数 任意然后一个个转换成整型 附上一部分代码int num1[1000],num2[1000];main(){ int i=0,count1=0,count2=0,len=0; char...

陵川县17714856132: C语言 从键盘上输入一个正整数,计算并输出该数的各位数字之和 -
嬴菡盐酸: 思路:定义变量a接受键盘输入和变量sum保存a的各位数字之和,依次对a进行除10操作,并把a除10的余数加到sum中,直到a为0为止,sum最终的值就是a个位数字之和. 参考代码: #include#include int main() { int a,sum=0; scanf("%d",&a); while(a){ sum+=a%10; a/=10; } printf("%d\n",sum); return 0; } /* 输出: 12345 15 */

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网