求整數的位數以及各位數之和
阿新 • • 發佈:2019-02-14
輸入一個正整數 repeat (0<repeat<10),做repeat 次下列運算:
輸入一個整數n(n<10^100),輸出它的位數以及各位數之和。
#include <stdio.h>
#include <string.h> //標頭檔案,對應程式碼下的函式strlen.int main()
{
int repeat,i;
char s[200];//陣列要在for迴圈外定義,[]中的數字可以不受限制。
scanf("%d",&repeat);
for(i=0;i<repeat;i++)
{
scanf("%s",s);
int len =strlen(s);//數的個數等於陣列所佔的位數(無負號的情況下,要由if進行判斷)
int sum,ans1;
sum=0
if(s[0]!='-')//判斷有無負號,若有,所佔的位數減一才等於數的個數
ans1=len;
elseans1=len-1;
for(int j=0;j<len;j++)//計算數的加和
{
if(s[j]!='-')//各個位數之和不包括‘-’號
sum=sum+s[j]-48;//因為s[j]為字元陣列,多以s[j]代表的是一個字元,字元是可以轉換為數字的用的ASCII碼,0的ASCII碼是48,減去48,由字元變為數字,可以進行計算。
}
printf("number=%d,sum=%d",ans1,sum);
}
return 0;
}
解題思路:
輸入一個正整數 repeat (0<repeat<10),做repeat 次//用repeat,i,for迴圈進行下列運算
輸入一個整數n(n<10^100)//括號內的東西意味10的100次方,int,longlong的取值範圍都不夠,所以只能用字串進行讀取,輸出它的位數//位數可以用函式進行計算,不算‘-’,陣列所佔的位數即為輸入數字的位數,之後再對有無‘-’進行判斷;若不用新的函式,可以利用字串最後會自動加上''\0'的特點利用for迴圈進行判斷位數以及各位數之和//各位數之和由for迴圈完成,其中要排除負號的影響,因為s[j]為字元,所以用來加和時要減去48使字元變成對應的數字。