###前提・実現したいこと
入力した数の各桁の和を求めるプログラムを作りたいです
###発生している問題・エラーメッセージ
桁を分離する関数がうまく機能しません
###該当のソースコード
c
1#include<stdio.h> 2#include<math.h> 3int Darksouls(int,int); 4int main() { 5 int N = 0; 6 int i, Moralk=0, j = 0; 7 int Demons[10]; 8 printf("1から2147483647までの整数を入力してください:"); 9 scanf_s("%d", &N); 10 /*桁数の取り出し*/ 11 while (N != 0) { 12 N = N / 10; 13 j++; 14 } 15 16 /*抽出足し算、抽出は関数にやらせる*/ 17 for (i = 0; i < j; i++) { 18 Demons[i] = Darksouls(N, i); 19 printf("%d\n", Darksouls(N, i)); 20 } 21 for (i = 0; i < j; i++) { 22 Moralk += Demons[i]; 23 } 24 printf("%d\n", Moralk); 25 return 0; 26} 27 28int Darksouls(int x, int y) { 29 return (int)(x / pow(10, y)) % 10; 30}
1から2147483647までの整数を入力してください:12345
0
0
0
0
0
0
続行するには何かキーを押してください . . .
###試したこと
c
1#include<stdio.h> 2#include<math.h> 3int main() { 4 int X=0, i, n; 5 int mat[5]; 6 7 printf("入力"); 8 scanf_s("%d", &n); 9 10 mat[0]=(int)(n/pow(10,0))%10; 11 mat[1]=(int)(n/pow(10,1))%10; 12 mat[2]=(int)(n/pow(10,2))%10; 13 mat[3]=(int)(n/pow(10,3))%10; 14 mat[4]=(int)(n/pow(10,4))%10; 15 16 for (i = 0; i < 5; i++) { 17 X += mat[i]; 18 } 19 printf("%d", X); 20 return 0; 21}
入力12345
15続行するには何かキーを押してください . . .
こっちだと5桁でうまくいきました。
###補足情報(言語/FW/ツール等のバージョンなど)
VS2017を使っています
より詳細な情報
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。