在创建C货币计算器时遇到一些问题
我正在尝试创建一个用C语言编程的货币计算器。该计算器从stdin获取数据。这是我想要的预期结果:在创建C货币计算器时遇到一些问题,c,C,我正在尝试创建一个用C语言编程的货币计算器。该计算器从stdin获取数据。这是我想要的预期结果: $ ./alkansiya Welcome to the Alkansiya Calculator! How many 1000 pesos? 3 How many 500 pesos? 7 How many 200 pesos? 0 How many 100 pesos? 15 How many 50 pesos? 23 How many 20 pesos? 46 How many 10 peso
$ ./alkansiya
Welcome to the Alkansiya Calculator!
How many 1000 pesos?
3
How many 500 pesos?
7
How many 200 pesos?
0
How many 100 pesos?
15
How many 50 pesos?
23
How many 20 pesos?
46
How many 10 pesos?
162
How many 5 pesos?
279
How many 1 pesos?
73
How many 50 cents?
4
How many 25 cents?
1
How many 10 cents?
0
How many 5 cents?
0
How many 1 cents?
0
Your balance is 13158 pesos and 225 centavos
但是,我下面的代码与预期结果不一样,最终导致分段错误:
#include <stdio.h>
int main(void)
{
int onethousandpesos = 0;
int fivehundredpesos = 0;
int twohundredpesos = 0;
int onehundredpesos = 0;
int fiftypesos = 0;
int twentypesos = 0;
int tenpesos = 0;
int fivepesos = 0;
int onepeso = 0;
int fiftycentavos = 0;
int twentyfivecentavos = 0;
int tencentavos = 0;
int fivecentavos = 0;
int onecentavo = 0;
printf("Welcome to the Alkansiya Calculator!\n");
printf("How many 1000 pesos?\n");
scanf("%i", onethousandpesos);
printf("How many 500 pesos?\n");
scanf("%i", fivehundredpesos);
printf("How many 200 pesos?\n");
scanf("%i", twohundredpesos);
printf("How many 100 pesos?\n");
scanf("%i", onehundredpesos);
printf("How many 50 pesos?\n");
scanf("%i", fiftypesos);
printf("How many 20 pesos?\n");
scanf("%i", twentypesos);
printf("How many 10 pesos?\n");
scanf("%i", tenpesos);
printf("How many 5 pesos?\n");
scanf("%i", fivepesos);
printf("How many 1 pesos?\n");
scanf("%i", onepeso);
printf("How many 50 cents?\n");
scanf("%i", fiftycentavos);
printf("How many 25 cents?\n");
scanf("%i", twentyfivecentavos);
printf("How many 10 cents?\n");
scanf("%i", tencentavos);
printf("How many 5 cents?\n");
scanf("%i", fivecentavos);
printf("How many 1 cents?\n");
scanf("%i", onecentavo);
printf("Your balance is %i pesos ", (1000*onethousandpesos)+(500*fivehundredpesos)+(200*twohundredpesos)+(100*onehundredpesos)+(50*fiftypesos)+(20*twentypesos)+(10*tenpesos)+(5*fivepesos)+onepeso);
printf("and '''%d''' centavos.\n", fiftycentavos+twentyfivecentavos+tencentavos+fivecentavos+onecentavo);
return 0;
}
我不明白这些警告。我想把它修好,但还是不走运。我是C语言的初学者。有人能帮我修复此代码吗?错误:
scanf
函数的任何变量中,因此这是一个导致分段错误的错误%d
代替%i
这是一个导致警告的错误#include <stdio.h>
int main(void) {
int onethousandpesos = 0;
int fivehundredpesos = 0;
int twohundredpesos = 0;
int onehundredpesos = 0;
int fiftypesos = 0;
int twentypesos = 0;
int tenpesos = 0;
int fivepesos = 0;
int onepeso = 0;
int fiftycentavos = 0;
int twentyfivecentavos = 0;
int tencentavos = 0;
int fivecentavos = 0;
int onecentavo = 0;
printf("Welcome to the Alkansiya Calculator!\n");
printf("How many 1000 pesos?\n"); scanf("%d", &onethousandpesos);
printf("How many 500 pesos?\n"); scanf("%d", &fivehundredpesos);
printf("How many 200 pesos?\n"); scanf("%d", &twohundredpesos);
printf("How many 100 pesos?\n"); scanf("%d", &onehundredpesos);
printf("How many 50 pesos?\n"); scanf("%d", &fiftypesos);
printf("How many 20 pesos?\n"); scanf("%d", &twentypesos);
printf("How many 10 pesos?\n"); scanf("%d", &tenpesos);
printf("How many 5 pesos?\n"); scanf("%d", &fivepesos);
printf("How many 1 pesos?\n"); scanf("%d", &onepeso);
printf("How many 50 cents?\n"); scanf("%d", &fiftycentavos);
printf("How many 25 cents?\n"); scanf("%d", &twentyfivecentavos);
printf("How many 10 cents?\n"); scanf("%d", &tencentavos);
printf("How many 5 cents?\n"); scanf("%d", &fivecentavos);
printf("How many 1 cents?\n"); scanf("%d", &onecentavo);
printf("Your balance is %d pesos ", (1000*onethousandpesos)+(500*fivehundredpesos)+(200*twohundredpesos)+(100*onehundredpesos)+(50*fiftypesos)+(20*twentypesos)+(10*tenpesos)+(5*fivepesos)+onepeso);
printf("and '''%d''' centavos.\n", fiftycentavos+twentyfivecentavos+tencentavos+fivecentavos+onecentavo);
return 0;
}
#包括
内部主(空){
整数一小时和比索=0;
int fivehundpesos=0;
int Twondredpesos=0;
int ONEDPESOS=0;
int-fiftypesos=0;
整数二十比索=0;
整数十比索=0;
整数五比索=0;
int onepeso=0;
int fiftycentavos=0;
int twentyfivecentavos=0;
int tencentavos=0;
int fivecentavos=0;
int-onecentavo=0;
printf(“欢迎使用Alkansiya计算器!\n”);
printf(“多少1000比索?\n”);scanf(“%d”和1/100比索);
printf(“多少500比索?\n”);scanf(“%d”和500比索);
printf(“多少200比索?\n”);scanf(“%d”和两百比索);
printf(“多少100比索?\n”);scanf(“%d”和100比索);
printf(“多少50比索?\n”);scanf(“%d”和fiftypeso);
printf(“多少20比索?\n”);scanf(“d”和20比索);
printf(“多少10比索?\n”);scanf(“%d”和十比索);
printf(“多少5比索?\n”);scanf(“%d”和“5比索”);
printf(“多少1比索?\n”);scanf(“%d”和一比索);
printf(“多少50美分?\n”);scanf(“%d”和“fiftycentavos”);
printf(“多少25美分?\n”);scanf(“%d”和二十五美分);
printf(“多少10美分?\n”);scanf(“d”)和tencentavos;
printf(“多少5美分?\n”);scanf(“%d”)和fivecentavos);
printf(“多少1美分?\n”);scanf(“%d”&onecentavo);
printf(“您的余额为%d比索”,(1000*千分之一比索)+(500*百分之五比索)+(200*百分之二比索)+(100*百分之一比索)+(50*百分之五比索)+(20*二十比索)+(10*十比索)+(5*百分之五比索)+一比索);
printf(“和''%d''centavos.\n',fiftycentavos+twentycentavos+tencentavos+fivecentavos+onecentavo);
返回0;
}
scanf(“%i”,foo)
->scanf(“%i”,foo)
阅读这些警告,它们会准确地告诉您出了什么问题。回到你的课本,从头开始。@PaulR完美!我的计算器工作正常。请将其作为答案发布,以便我可以接受:)scanf
%I
不推荐使用。我建议改为%d
(实际上,我建议根本不要使用scanf
进行用户输入)。@Someprogrammerdude学习C时,我会一直记住这一点。至少我从中学到了一些重要的东西:)
#include <stdio.h>
int main(void) {
int onethousandpesos = 0;
int fivehundredpesos = 0;
int twohundredpesos = 0;
int onehundredpesos = 0;
int fiftypesos = 0;
int twentypesos = 0;
int tenpesos = 0;
int fivepesos = 0;
int onepeso = 0;
int fiftycentavos = 0;
int twentyfivecentavos = 0;
int tencentavos = 0;
int fivecentavos = 0;
int onecentavo = 0;
printf("Welcome to the Alkansiya Calculator!\n");
printf("How many 1000 pesos?\n"); scanf("%d", &onethousandpesos);
printf("How many 500 pesos?\n"); scanf("%d", &fivehundredpesos);
printf("How many 200 pesos?\n"); scanf("%d", &twohundredpesos);
printf("How many 100 pesos?\n"); scanf("%d", &onehundredpesos);
printf("How many 50 pesos?\n"); scanf("%d", &fiftypesos);
printf("How many 20 pesos?\n"); scanf("%d", &twentypesos);
printf("How many 10 pesos?\n"); scanf("%d", &tenpesos);
printf("How many 5 pesos?\n"); scanf("%d", &fivepesos);
printf("How many 1 pesos?\n"); scanf("%d", &onepeso);
printf("How many 50 cents?\n"); scanf("%d", &fiftycentavos);
printf("How many 25 cents?\n"); scanf("%d", &twentyfivecentavos);
printf("How many 10 cents?\n"); scanf("%d", &tencentavos);
printf("How many 5 cents?\n"); scanf("%d", &fivecentavos);
printf("How many 1 cents?\n"); scanf("%d", &onecentavo);
printf("Your balance is %d pesos ", (1000*onethousandpesos)+(500*fivehundredpesos)+(200*twohundredpesos)+(100*onehundredpesos)+(50*fiftypesos)+(20*twentypesos)+(10*tenpesos)+(5*fivepesos)+onepeso);
printf("and '''%d''' centavos.\n", fiftycentavos+twentyfivecentavos+tencentavos+fivecentavos+onecentavo);
return 0;
}