不太清楚哪里错了,一直显示错误(๑´0`๑)

m0_57885262 2021-05-08 02:39:00
对于给定的正整数N,求它的位数及其各位数字之和。 输入格式: 输入在一行中给出一个不超过10 ​9 ​​ 的正整数N。 输出格式: 在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。 输入样例: 321 输出样例: 3 6 #include<stdio.h> int main() {int n,i,x=0,y; scanf("%d",&n); if(n<=1000000000&&n!=0) {for(i=1;i<=9;i++) {n=n/10; y=n%10; x+=y; if(n==0) break; else i++; } printf("%d %d",i,x);} return 0; }
...全文
147 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-10
  • 打赏
  • 举报
回复
这里面有,希望对您有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html
aguang 2021-05-08
  • 打赏
  • 举报
回复
方法多
#include <stdio.h>
int main()
{
int n, b=0,s=0;
for (; (n=getchar())&&n!='\n'; b++, s += n-'0')
printf("%d %d\n", b, s);
return 0;
}

#include <stdio.h>
int main (void)
{
int a=0,b=0,c;
scanf("%d",&c);
for(;c>0;a++,b+=c%10,c/=10);
printf("%d %d",a,b);
}
自信男孩 2021-05-08
  • 打赏
  • 举报
回复
引用 4 楼 早打大打打核战争 的回复:
思路决定代码:

#include <stdio.h>

int main()
{
int n, b, s;

for (b = s = 0; ~scanf("%1d", &n); b++, s += n);
printf("%d %d\n", b, s);

return 0;
}

还需要提醒一句吧,怎么输出结果(终止循环)

ctrl+d(linux)或ctrl+z(Windows)
  • 打赏
  • 举报
回复
思路决定代码:

#include <stdio.h>

int main()
{
int n, b, s;

for (b = s = 0; ~scanf("%1d", &n); b++, s += n);
printf("%d %d\n", b, s);

return 0;
}

qzjhjxj 2021-05-08
  • 打赏
  • 举报
回复
修改如下,供参考:
#include<stdio.h>

int main()

{
    int n,i=0,x=0,y;

    scanf("%d",&n);

    if(n<=1000000000&&n!=0)

    {
       while(n)//for(i=1;i<=9;i++)

        {
           y=n%10;
           x+=y;
           n=n/10;
           i++;            //if(n==0)

                        //    break;

                        // else

                        // i++;

       }
    printf("%d %d",i,x);
   }
    
    return 0;
}
自信男孩 2021-05-08
  • 打赏
  • 举报
回复
#include<stdio.h>
#include <ctype.h>
int main(void)
{

#if 1
char digit[128], *pstr;
int cnt = 0, sum = 0;

fgets(digit, sizeof(digit), stdin);

if (digit[0] == '-') {
printf("Error input!\n");
return -1;
}
pstr = digit;
while (*pstr) {
if (isdigit(*pstr)) {
sum += *pstr - '0';
cnt++;
}
pstr++;
}

printf("%d %d\n", cnt, sum);
#else
int n,i,x=0,y;

scanf("%d",&n);

if(n<=1000000000&&n!=0)
{
for(i=1;i<=9;i++)

{
n=n/10;
y=n%10;
x+=y;
if(n==0)
break;
else
i++;
}
printf("%d %d",i,x);
}
#endif
return 0;

}

供参考~

赵4老师 2021-05-08
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

69,373

社区成员

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

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