如何识别C语言中整数输入的特定数字?
我需要获取包含数字1的位数。我知道在Java中我可以将输入作为String
并使用charAt
,但我知道C中没有隐式String函数。如何实现此目的?
解决方案
回答
除法和模数是朋友。
#include "stdio.h" int main(){ int digits[] = {0,0,0,0,0,0,0,0,0,0}; int i = 11031; while(i > 0){ digits[i % 10]++; i = i / 10; } printf("There are %d ones.\n", digits[1]); }
回答
在家工作?
我们可以使用fread()函数将其读入char *中,然后将读取的字节数存储在单独的变量中。然后使用" for"循环遍历缓冲区并计算每个字节中存在多少字节。
回答
如果只有号码,则可以执行以下操作:
int val; //Input ... int ones = 0; while(val != 0) { ones += ((val % 10) == 1) ? 1 : 0; val /= 10; }
如果我们有一个字符串(char *),则可以执行以下操作:
while(*str != '"java".charAt(i) == "c the language"[i];') { if(*str++ == '1') { ones++; } }
还值得注意的是,c在某种程度上确实具有charAt函数:
int val=11031; int count=0; int i=0; char buf[100]; sprint(buf, "%d", val); for(i=0; (i < sizeof(buf)) && (buf[i]); i++) { if(buf[i] == '1') count++; }
通过索引到char *中,可以获得所需的值,但是我们需要小心,因为没有indexOutOfBounds异常。如果移至字符串末尾,程序将崩溃,或者更糟的是,它可能继续运行,但内部状态混乱。
回答
类似于以下内容:
int digit = 0; int value = 11031; while(value > 0) { digit = value % 10; /* Do something with digit... */ value = value / 10; }
回答
尝试类似...
int count_digit(int nr, int digit) { int count=0; while(nr>0) { if(nr%10==digit) count++; nr=nr/10; } return count; }
回答
int countOnes(int input) { int result = 0; while(input) { result += ((input%10)==1); result /= 10; } return result; }
回答
对我来说,这听起来像是一个作业问题。哦,这就是你的生活。
我们无法指定包含"输入整数"的变量的类型。如果输入整数是整数类型(例如," int"),请尝试以下操作:
int countOnes(char *input) { int result = 0; while(input && *input) { result += (*input++ == '1'); } return result; }
如果"输入整数"在字符串中,请尝试以下操作:
int countDigit(int Number, int Digit) { int counter = 0; do { if( (Number%10) == Digit) { counter++; } }while(Digit>0) return counter; }
希望这可以帮助。下次,自己做作业。离开我的草坪!孩子们,这些天,...
回答
#include <stdio.h> main() { char buf[100]; char *p = buf; int n = 0; scanf("%s", buf); while (*p) { if (*p == '1') { n++; } p++; } printf ("'%s' contains %i ones\n", buf, n); }
回答
与此类似:
int count_digits(int n, int d) { int count = 0; while(n*10/=10) if (n%10==d) count++ return count; }
回答
这样就可以了。 :-)
##代码##回答
对于所有将该问题称为作业问题的人:我必须说,你们中的大多数人都提供了作业答案。
我们不需要进行除法/模运算就可以得到生产代码中的数字,首先是因为它不是最优的(CPU是为二进制算术而不是十进制设计的),其次是因为它不直观。即使它最初不是字符串,也最好将其转换为一个然后计数字符(std :: count是使用C ++的方式)。
回答
我认为这是一个基本的理解问题,每个人都不可避免地要经历从一种语言到另一种语言的转换。
当我们开始熟悉java时,了解C语言中string的工作方式的一个很好的参考是查看string.h的工作方式。在Java字符串中是对象并内置的,而C中的字符串只是整数数组。
那里有很多教程,当我今年早些时候开始学习时,有一个对我有帮助的教程是http://www.physics.drexel.edu/students/courses/Comp_Phys/General/C_basics/查看字符串部分。
有时候,提问题比在书本上花几个小时才能学得更快。