0 c
只是故意重复 if 语句程序来进行备用更改,但由于未知原因,它会拍摄应该为 0 的数字到某个最大值?我真的很想得到一些帮助来解释为什么
#include <stdio.h>
int main(void) {
int a;
int b;
int c;
int d;
int e;
int cha;
scanf("%d", &cha);
if(cha == 0){
printf("No change\n");
return 0;
}
if(cha >= 100){
a = cha / 100;
cha = cha % 100;
}
if(100> cha && cha >= 25){
b = cha / 25;
cha = cha % 25;
}
if(25 > cha && cha >= 10){
c = cha / 10;
cha = cha % 10;
}
if(10 > cha && cha >= 5){
d = cha / 5;
cha = cha % 5;
}
if(5 > cha && cha >= 1){
e = cha;
}
if(a == 1){
printf("%d Dollar\n",a);
}
if(a > 1){
printf("%d Dollars\n",a);
}
if(b == 1){
printf("%d Quarter\n",b);
}
if(b > 1){
printf("%d Quarters\n",b);
}
if(c == 1){
printf("%d Dime\n",c);
}
if(c > 1){
printf("%d Dimes\n",c);
}
if(d == 1){
printf("%d Nickle\n",d);
}
if(d > 1){
printf("%d Nickles\n",d);
}
if(e == 1){
printf("%d Penny\n",e);
}
if(e > 1){
printf("%d Pennies\n",e);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
以下是产生的示例
输入
45
Run Code Online (Sandbox Code Playgroud)
你的输出
1 Quarter
2 Dimes
****875483616** Nickles**
**32766 Pennies**
Run Code Online (Sandbox Code Playgroud)
预期产出
1 Quarter
2 Dimes
Run Code Online (Sandbox Code Playgroud)
为了合并注释,您的变量未初始化,并且您的条件不会导致它们在打印之前全部初始化。您只需将这些变量初始化为 即可避免这种情况0。
int main(void) {
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int e = 0;
int cha = 0;
// ...
Run Code Online (Sandbox Code Playgroud)
但您还应该使用更具描述性的名称。
int main(void) {
int dollars = 0;
int quarters = 0;
int dimes = 0;
int nickels = 0;
int pennies = 0;
int change = 0;
Run Code Online (Sandbox Code Playgroud)
并检查返回值scanf以确保它读取了一个值并且该值大于或等于零。
int main(void) {
int dollars = 0;
int quarters = 0;
int dimes = 0;
int nickels = 0;
int pennies = 0;
int change = 0;
if (scanf("%d", &change) != 1 || change < 0) {
printf("Invalid input.\n");
return 1;
}
Run Code Online (Sandbox Code Playgroud)
编写程序时不要重复自己,这一点很重要,这样您就可以循环数组。
#define NUM_COINS 5
int main(void) {
char *singular_coin_names[] = {
"dollar", "quarter", "dime",
"nickel", "penny"
};
char *plural_coin_names[] = {
"dollars", "quarters", "dimes",
"nickels", "pennies"
};
int coin_values[] = { 100, 25, 10, 5, 1 };
int change_amounts[NUM_COINS] = {0};
int change;
if (scanf("%d", &change) != 1 || change < 0) {
printf("Invalid input.\n");
return 1;
}
for (size_t i = 0; i < NUM_COINS; i++) {
if (change == 0) {
change_amounts[0] = 0;
}
else {
change_amounts[i] = change / coin_values[i];
change %= coin_values[i];
}
}
for (size_t i = 0; i < NUM_COINS; i++) {
printf(
"%d %s\n",
change_amounts[i],
change_amounts[i] == 1
? singular_coin_names[i]
: plural_coin_names[i]
);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |