一道c语言作业题,不会做,帮帮忙给说说思路也行啊,谢谢
目前人民币共有以下几种面值(不包括角和分):1元,2元,5元,10元,20元,50元,100元编写一个函数计算金额X需要多少张面值为n元的纸币,在主函数中输入一个金额值,...
目前人民币共有以下几种面值(不包括角和分):
1元,2元,5元,10元,20元,50元,100元
编写一个函数计算金额X需要多少张面值为n元的纸币,在主函数中输入一个金额值,调用该函数,计算组成该金额最少需要多少张纸币。
首先谢谢大家的帮助,不过题上说计算金额X需要多少张面值为n元的纸币,老师给我们的要求是要算出n的确切的值,并且计算这个n为几时纸币数量最小,比如150元就是最少需要一张100元一张50元的两张纸币。也不知道我说清楚了没有,谢谢 展开
1元,2元,5元,10元,20元,50元,100元
编写一个函数计算金额X需要多少张面值为n元的纸币,在主函数中输入一个金额值,调用该函数,计算组成该金额最少需要多少张纸币。
首先谢谢大家的帮助,不过题上说计算金额X需要多少张面值为n元的纸币,老师给我们的要求是要算出n的确切的值,并且计算这个n为几时纸币数量最小,比如150元就是最少需要一张100元一张50元的两张纸币。也不知道我说清楚了没有,谢谢 展开
4个回答
展开全部
楼主的意思是不是想输入一个金额,然后找出至少用几张纸币?再算出这几张纸币的是那几张是吧?如果是这样的话,那很简单就可以处理了,拿到金额,然后就先跟100比较,若是比100大,那一定有一张是100的,然后-100,记下100的张数,再比较,这样循环,等到比100小的时候再跟50比较,类似下去.最后比出来的一定是最少的张数.然后再把每种金额的张数给打印出来.就OK了.我给你写段吧,调试通过了:
#include <stdio.h>
#include <math.h>
void RMB(int n)
{
int arr[7]={0};
int m=0;
while(n>=100)
{
n=n-100;
arr[0]++;
m++;
}
while(n>=50)
{
n=n-50;
arr[1]++;
m++;
}
while(n>=20)
{
n=n-20;
arr[2]++;
m++;
}
while(n>=10)
{
n=n-10;
arr[3]++;
m++;
}
while(n>=5)
{
n=n-5;
arr[4]++;
m++;
}
while(n>=2)
{
n=n-2;
arr[5]++;
m++;
}
while(n>=1)
{
n=n-1;
arr[6]++;
m++;
}
if(n!=0)
{
printf("\n输入的金额只能为正整数\n");
}
else
{
printf("\n最少需要%d张纸币,如下所示\n\n",m);
printf("100元:%d张,50元:%d张,20元:%d张,10元:%d张,5元:%d张,2元:%d张,1元:%d张\n",arr[0],arr[1],arr[2],arr[3],arr[4],arr[5],arr[6]);
}
}
void main()
{
int n;
printf("请输入金币金额:");
scanf("%d",&n);
RMB(n);
}
#include <stdio.h>
#include <math.h>
void RMB(int n)
{
int arr[7]={0};
int m=0;
while(n>=100)
{
n=n-100;
arr[0]++;
m++;
}
while(n>=50)
{
n=n-50;
arr[1]++;
m++;
}
while(n>=20)
{
n=n-20;
arr[2]++;
m++;
}
while(n>=10)
{
n=n-10;
arr[3]++;
m++;
}
while(n>=5)
{
n=n-5;
arr[4]++;
m++;
}
while(n>=2)
{
n=n-2;
arr[5]++;
m++;
}
while(n>=1)
{
n=n-1;
arr[6]++;
m++;
}
if(n!=0)
{
printf("\n输入的金额只能为正整数\n");
}
else
{
printf("\n最少需要%d张纸币,如下所示\n\n",m);
printf("100元:%d张,50元:%d张,20元:%d张,10元:%d张,5元:%d张,2元:%d张,1元:%d张\n",arr[0],arr[1],arr[2],arr[3],arr[4],arr[5],arr[6]);
}
}
void main()
{
int n;
printf("请输入金币金额:");
scanf("%d",&n);
RMB(n);
}
展开全部
这题应该是一个整除求余,统计整除次数的题目
void main(int x)
{
int MoneyArray[] = {100, 50, 20, 10, 5, 2, 1};
int MoneyCount[] = {0, 0, 0, 0, 0};
for(int i = 0; i < 7; i ++)
{
MoneyCount[i] = x / MoneyArray[i];
x = x % array[i];
}
for(i = 0; i < 7; i ++)
{
//如果不要显示不找的金额的话在加一个判断 就好了if(MoneyCount[i] != 0)
printf("$%d:%d\n", MoneyArray[i], MoneyCount[i]);
}
}
void main(int x)
{
int MoneyArray[] = {100, 50, 20, 10, 5, 2, 1};
int MoneyCount[] = {0, 0, 0, 0, 0};
for(int i = 0; i < 7; i ++)
{
MoneyCount[i] = x / MoneyArray[i];
x = x % array[i];
}
for(i = 0; i < 7; i ++)
{
//如果不要显示不找的金额的话在加一个判断 就好了if(MoneyCount[i] != 0)
printf("$%d:%d\n", MoneyArray[i], MoneyCount[i]);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用整出,取余数,一级一级的酸不就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上正解
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询