c语言中统计重复数字次数
2022-11-27阅读(670)
问:请问c语言当中,如何统计数字各自出现的次数
- 答:#include<stdio.h>
int main(void)
{ int num[10]={0} ; //定义数组,里面的元素全部为0,用来统计0--9出现的次数
int b[]={1,2,3,4,4,1,3}; //定义数组B,里面存放你要输入的数字串
int i ;
for(i=0;i<sizeof(b);i++)
num[ b[i] ] ++;
for(i=0;i<10;i++)
printf( "%d",num[i]);
return 0;
} - 答:确定算法思路。
在C语言中,判断一个正整数中某个数字出现的次数可以利用整型变量之间的求模运算和除法的特性来解决。求模运算相当于求余数。比如11%10的结果为1,123%10的结果为2,利用这种特性,在十进制中,求除以10的余数就可以得到末尾的数字。
在C语言中,整型变量的除法中,商为不保留小数部分的结果,比如:3/2=1,102/10=10。因此可以不断除以10,就能去掉末尾数字。再结合求模运算,就可以从末尾到开头,依次得到每一位数字。
数据类型:
C的数据类型包括:整型(short、int、long、long long)、字符型(char)、实型或浮点型(单精度float和双精度double)、枚举类型(enum)、数组类型、结构体类型(struct)、共用体类型(union)、指针类型和空类型(void)。
变量是以某标识符为名字,其值可以改变的量。
标识符是以字母或下划线开头的一串由字母、数字或下划线构成的序列,请注意第一个字符必须为字母或下划线,否则为不合法的变量名。变量在编译时为其分配相应存储单元。 - 答:你可以定义几个变量用来统计各个数字出现的个数啊,它出现一次,变量就加1
- 答:定义
b[] ={1, 2 ,3 ,4 ,4 ,1 ,3}
a[10] = {0}
遍历b数组
a[b[i]]++;
最后输出a数组就行了。 - 答:那非常复杂的问题,究竟要怎么解决?你可以请教那些有编程经验的老的程序员
- 答:实现代码:
#include <stdio.h>
int main() {
int num = 0, i = 0;
printf("请输入一个整数:");
scanf("%d", &num);
int array[10] = {};
while(num) {
array[num % 10]++; //让数组下标代表所判断的数字
num /= 10;
}
for (i = 0; i < 10; i++) {
if (array[i] != 0)
printf ("%d有%d个\n", i, array[i]);
return 0;
}
扩展资料:
printf用法:
printf()函数的调用格式为:printf("&lt;格式化字符串&gt;",&lt;参量表&gt;)。
其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。
参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。
比如:
inta=1234;
printf("a=%d\n",a);
输出结果为a=1234。
问:请问怎么用C语言统计一个数组中不同元素它们重复的个数啊?
- 答:先排序,再相减就可以啦!
int a[100];//假设有100个元素
tint b,t=0;
for(int i=1;i<100;i++)
{
if(t<a[i])
{
t =a[i];
a[i] = a[i+1];
a[i+1] = a[i];//先用冒泡法排序;
}
}
for(int i=1;i<100;i++)
{
if(a[i+1]-a[i]==0)
{
b++;//用相邻元素相减,假设等于0他们就相等。
}
} - 答:用链表实现比较好。链表第一个元素是key,用以存储数组a中的不同的元素,第二个元素用以存储该元素在数组a中出现的次数。
- 答:so easy
该程序还顺便统计了除数字之外的,空白符(空格、制表符、换行符)以及其他所有字符出现的次数
#include <stdio.h>
/* count digits, white space, others */
main()
{
int c, i, nwhite, nother;
int ndigit[10];
nwhite = nother = 0;
for (i = 0; i < 10; ++i)
ndigit[i] = 0;
while ((c = getchar()) != EOF)
if (c >= '0' && c <= '9')
++ndigit[c'
0'];
else if (c == ' ' || c == '\n' || c == '\t')
++nwhite;
else
++nother;
printf("digits =");
for (i = 0; i < 10; ++i)
printf(" %d", ndigit[i]);
printf(", white space = %d, other = %d\n",
nwhite, nother);
}