對于給定的正整數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;
}
uj5u.com熱心網友回復:
代碼功能歸根結底不是別人幫自己看或講解或注釋出來的;而是被自己靜下心來花足夠長的時間和精力親自動手單步或設斷點或對執行到某步獲得的中間結果顯示或寫到日志檔案中一步一步分析出來的。提醒:再牛×的老師也無法代替學生自己領悟和上廁所!
單步除錯和設斷點除錯(VS IDE中編譯連接通過以后,按F10或F11鍵單步執行,按Shift+F11退出當前函式;在某行按F9設斷點后按F5執行停在該斷點處。)是程式員必須掌握的技能之一。
uj5u.com熱心網友回復:
#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;
}
供參考~
uj5u.com熱心網友回復:
修改如下,供參考:#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;
}
uj5u.com熱心網友回復:
思路決定代碼:
#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;
}
uj5u.com熱心網友回復:
還需要提醒一句吧,怎么輸出結果(終止回圈)
ctrl+d(linux)或ctrl+z(Windows)
uj5u.com熱心網友回復:
方法多#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);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/283482.html
標籤:C語言
上一篇:指標與陣列的練習題