需要统计一个整数中不同字数出现的个数,运行结果有时候正确有时候不正确,求指教
#include
void f1(long num);
int main()
{
long num;
printf("please input a number:");
scanf("%d",&num);
f1(num);
return 0;
}
void f1(long num)
{
int a[10]={0};
for(int i=0;i<10;i++)
{
a[i]=0;
}
while(num>0)
{
int b,t;
b=num/10;
t=num-b*10;
a[t]++;
num=b;
}
printf("数字 0 1 2 3 4 5 6 7 8 9\n出现次数");
for(int i=0;i<10;i++)
printf("%d ",a[i]);
}
运行结果如下
输入数值的位数,超过了long int 的范围了,建议用字符串输入,修改如下,供参考:
#include <stdio.h>
void f1(char*); //(long num);
int main()
{
char num[32];//long num;
printf("please input a number:");
scanf("%s", num); //scanf("%d", &num);
f1(num);
return 0;
}
void f1(char* num) //(long num)修改
{
int a[10] = { 0 };
//for (int i = 0; i < 10; i++)
//{
// a[i] = 0;
//}
while (*num)//(num > 0)
{
a[*num -'0']++;
num++;
//int b, t;
//b = num / 10;
//t = num - b * 10;
//a[t]++;
//num = b;
}
printf("数字: 0 1 2 3 4 5 6 7 8 9\n出现次数:");
for (int i = 0; i < 10; i++)
printf("%d ", a[i]);
}
scanf 用%ld,定义的int b改成long