我的任务是从用户那里获取整数,并计算数字1在其中的次数,以下是我的代码:
#include <stdio.h>
int main(){
int choosen_number;
int count = 0;
int onesnumber = 0;
scanf("Please enter an integer %d\n",&choosen_number);
int indicator = choosen_number;
while (indicator > 0){
indicator = indicator/10;
count = count + 1;
}
while (count!=0){
if (choosen_number%10 ==1){
count = count - 1;
onesnumber = onesnumber + 1;
}
choosen_number = choosen_number /10;
}
printf("the number of ones is %d\n",onesnumber );
}当我试图用一个像12312这样的数字来执行它时,每次我尝试这样的操作时,它都会告诉我1的数量是0。
发布于 2018-11-21 01:50:14
更改为:
printf("Please enter an integer ");
scanf(" %d\n",&choosen_number);按照您的方式,choosen_number将读取为0。
发布于 2018-11-21 02:01:56
你的代码有一些问题。
除了在stdin中用于忽略空白的前缀空格之外,
scanf应该只包含您要扫描的格式说明符。printf(“请输入整数:");scanf(”%d\n",&choosen_number);
while循环,当您逐位处理数字时,仅在当前处理的数字等于1时递减count。这意味着对于任何不完全由1组成的数字,您将有一个无限循环。发布于 2018-11-21 02:09:39
1这条线
scanf("Please enter an integer %d\n",&choosen_number);应该是
printf("Please enter an integer: ");
scanf("%d", &choosen_number);2你可以这样做:
#include <stdio.h>
int main(){
int choosen_number;
int count = 0;
printf("Please enter an integer: ");
scanf("%d", &choosen_number);
while (choosen_number != 0) {
if (choosen_number%10 == 1)
++count;
choosen_number /= 10;
}
printf("the number of ones is %d\n", count);
return 0;
}https://stackoverflow.com/questions/53398680
复制相似问题