首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C初学者练习,从用户那里取整数,计算1在其中的次数

C初学者练习,从用户那里取整数,计算1在其中的次数
EN

Stack Overflow用户
提问于 2018-11-21 01:46:38
回答 4查看 43关注 0票数 0

我的任务是从用户那里获取整数,并计算数字1在其中的次数,以下是我的代码:

代码语言:javascript
运行
复制
#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。

EN

回答 4

Stack Overflow用户

发布于 2018-11-21 01:50:14

更改为:

代码语言:javascript
运行
复制
printf("Please enter an integer ");
scanf(" %d\n",&choosen_number);

按照您的方式,choosen_number将读取为0。

票数 1
EN

Stack Overflow用户

发布于 2018-11-21 02:01:56

你的代码有一些问题。

除了在stdin中用于忽略空白的前缀空格之外,

  1. scanf应该只包含您要扫描的格式说明符。

printf(“请输入整数:");scanf(”%d\n",&choosen_number);

  • In您的第二个while循环,当您逐位处理数字时,仅在当前处理的数字等于1时递减count。这意味着对于任何不完全由1组成的数字,您将有一个无限循环。
票数 0
EN

Stack Overflow用户

发布于 2018-11-21 02:09:39

1这条线

代码语言:javascript
运行
复制
scanf("Please enter an integer %d\n",&choosen_number);

应该是

代码语言:javascript
运行
复制
printf("Please enter an integer: ");
scanf("%d", &choosen_number);

2你可以这样做:

代码语言:javascript
运行
复制
#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;  
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53398680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档