大一初学者的C语言问题

萌小奇00 2012-12-14 04:58:48
有一道实验问题就是编一个算法,来求出一个不限位数的整数的位数,并把各个位数相加。关键是,不允许使用循环结构。刚刚开始学习。有木有什么简单的算法?多谢各位了
...全文
170 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
libralibra 2012-12-14
  • 打赏
  • 举报
回复
不用循环结构,不就是让你递归吗?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int compute(char s[],int n)
{
    if (n>0)
    {
        return (s[n-1]-'0')+compute(s,n-1);
    }
    else
    {
        return 0;
    }
}
int main()
{
    int num,len;
    char s[256];
    printf("Please input a number:\n");
    scanf("%d",&num);
    sprintf(s,"%d",num);
    len = strlen(s);
    printf("Sum is %d\n",compute(s,len));
    return 0;
}
测试
Please input a number:
123456789
Sum is 45

Process returned 0 (0x0)   execution time : 2.465 s
Press any key to continue.
萌小奇00 2012-12-14
  • 打赏
  • 举报
回复
谢谢各位咯,,问题的关键是不用循环结构,第一问可以用strlen函数,,关键是第二个问题不可以用循环结构,,不过现在问题解决了。。。用递归法。谢谢咯
萌小奇00 2012-12-14
  • 打赏
  • 举报
回复
任意输入一个整数,求出它是一个几位数,并求出各位数字之和(不允许使用循环结构)
未来狠遥远 2012-12-14
  • 打赏
  • 举报
回复
放到字符串里行不行呢 用函数计算字符串不就行了
图灵狗 2012-12-14
  • 打赏
  • 举报
回复
题目的意思不清楚,可否再详细描述一下?
gou12341234 2012-12-14
  • 打赏
  • 举报
回复
最简单的方法应该是位移了。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧