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

设有doublenum=你的11位学号(20071803089)编程输出num中数字0,1,……9出现的次数(调用函数)。编程详细点最好。谢谢各位。设有doublenum... 设有double num=你的11位学号(20071803089)编程输出num中数字0,1,……9出现的次数(调用函数)。
编程详细点最好。

谢谢各位。
设有double num=你的11位学号(后加 ., num只能是double类型,其他类型算错),编程输出num中数字0,1,……9出现的次数(函数形式,main中只是调用一次)
展开
 我来答
无大智有大勇
2008-04-28 · TA获得超过441个赞
知道小有建树答主
回答量:502
采纳率:0%
帮助的人:331万
展开全部
不知道你想要什么方法,就写了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 )
{
double s = num;
double v = 10000000000.0;
int nr = 0;
for ( int i=0; i<11; i++ )
{
nr = (int)(s/v);//除以v得出当前第一个数字
s = s-(double)nr*v;//把第一位减去
count[nr]++;
v/=10;//v尾去除一个0
}
}

int main(int argc, char *argv[])
{
double num = 20071803089.0;
int count[10];
for ( int i=0; i<10; i++ )
{
count[i] = 0;
}//清0
fun1( num, count );
for ( int i=0; i<10; i++ )
{
printf("%d出现了%d次\n",i,count[i]);
}
printf("\n\n");
for ( int i=0; i<10; i++ )
{
count[i] = 0;
}//清0
fun2( num, count );
for ( int i=0; i<10; i++ )
{
printf("%d出现了%d次\n",i,count[i]);
}
system("PAUSE");
return EXIT_SUCCESS;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fly_fire
2008-04-28 · TA获得超过616个赞
知道小有建树答主
回答量:579
采纳率:0%
帮助的人:298万
展开全部
#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;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Nick_Jiang
2008-04-28 · TA获得超过293个赞
知道答主
回答量:144
采纳率:0%
帮助的人:45.1万
展开全部
不懂你们写的是啥`````
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式