C语言难题 求大神帮忙!!!(

刚学C语言不是很在行求各路大神解答感激不尽问题是:要求计算出N!的每个数位上数字的和,N的要求是你自己生日数字的和,比如你的生日为19930101,所以N=1+9+9+3... 刚学C语言 不是很在行 求各路大神解答 感激不尽
问题是:要求计算出 N!的每个数位上数字的和,N的要求是你自己生日数字的和,比如你的生日为19930101,所以N=1+9+9+3+0+1+0+1=24,然后N!=xxxxxxxxxxxxxxxx 比如等于123xxxxx789,然后最终要算出1+2+3+x........+7+8+9的和是多少。
我知道要用到数组的知识,但具体不知道怎么去编啊 求各位帮忙 感激不尽!谢谢
展开
 我来答
ahulxh
2013-11-24 · 知道合伙人软件行家
ahulxh
知道合伙人软件行家
采纳数:267 获赞数:805
研究生教学:数据结构与算法、计算机图形学…… 本科生教学:C语言程序设计、多媒体创作……

向TA提问 私信TA
展开全部

  

如果N较大,s不能定义成整型,要定义成double:

与子如初见
2013-11-24 · TA获得超过1638个赞
知道小有建树答主
回答量:1117
采纳率:100%
帮助的人:784万
展开全部
你好。代码如下

#include<stdio.h>
int main(void)
{
char ca[30] = "";
char cb[20] = "";
printf("input a string:\n");
scanf("%s",ca);
char *p = ca;
int sum = 0,s = 1;
while(*p != '\0')
{
sum += *p - '0';
p++;
}
//printf("sum === %d\n",sum);
int i = 0;
for(i = 1 ; i <=sum; i++)
{
s *= i;
}
sprintf(cb, "%d", s);
//printf("s ==== %d\n",s);
p = cb;
sum = 0;
while(*p != '\0')
{
sum += *p - '0';
p++;
}
printf("%d\n",sum);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不爱宵冷
2013-11-24 · TA获得超过177个赞
知道小有建树答主
回答量:168
采纳率:0%
帮助的人:64.6万
展开全部
这个N的数值比较大啊采用double类型
double N;
N = GetN_FromUrBirthday();

//不防设N都是两位数
a1 = N%10;//十位
a2 = N - 10*a1;//个位
然后会了吧?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天使之守护手环
2013-11-24 · TA获得超过152个赞
知道小有建树答主
回答量:279
采纳率:50%
帮助的人:51.7万
展开全部
#include<stdio.h>

main(){

int i,sum=0,result,cout,temp=0;

printf("输入出生日期,以#结束!");

while(i!='#'){

scanf("%d",&i);

sum = sum + i;

}//得到日期和各个数相加的和

while(sum!=0){
sum *= sum--;

}//得到阶乘
result = sum;
for(i = 0;result!=0; i++)
{
result = result/10;

}
result = sum;
for(i = i - 1; i > 0; i--)
{

for(cout = i-1 ;cout>0;cout--)
{
result = result/10;

}

temp += result;
result = result - (int)pow(10,i-1);
}

printf("最后结果为%d",temp);

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式