请高手帮忙做一道C语言题

来源:百度知道 编辑:UC知道 时间:2024/07/06 12:15:41
设有double num=你的11位学号(20071803089)编程输出num中数字0,1,……9出现的次数(调用函数)。
编程详细点最好。

谢谢各位。
设有double num=你的11位学号(后加 ., num只能是double类型,其他类型算错),编程输出num中数字0,1,……9出现的次数(函数形式,main中只是调用一次)

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

void translate()
{
int i,a[10]={0};char *ptr=(char *)malloc(sizeof(char)*11);
double d=20071803089;
gcvt(d,11,ptr);
for(i=0;i<11;i++)
a[*(ptr+i)-'0']++;
for(i=0;i<10;i++)
{
printf("%d:%d\n",i,a[i]);
}
}

int main()
{
translate();
return 0;
}

不知道你想要什么方法,就写了2种,你可以都参考一下
已经在DEVCPP中测试通过

#include <stdio.h>
#include <stdlib.h>

int fun1( double num, int* count )
{
char sNum[12];//存储num的字符串形式
snprintf( sNum, 11, "%.0lf", num );//把

for ( int i=0; i<11; i++ )
{
int j = sNum[i]-'0';//sNum[i]中存的是字符型,把这个字符的ASCII码减0的ASCII码得出实际值
count[j]++;
}
return 0;
}

int fun2( double num, int* count )
{<