前提・実現したいこと
0 ~ 9 の数字が 4 つ並んだ文字列 S を一つずつ分解して、1番目と4番目の文字を数値に変えて足し算し、2番目と3番目の文字を数値に変えて足し算したいです。
発生している問題・エラーメッセージ
エラーメッセージはないのですが期待する出力とは違った出力になってしまいます。 例)入力例が「2134」だったら 正しい出力)64 私の間違った出力)102100
該当のソースコード
C
1 2#include <stdio.h> 3#include <string.h> 4#include <stdlib.h> 5 6int main(void) 7{ 8 char s[100]; 9 scanf("%s", s); 10 11 int n1, n2 ,n3, n4; 12 n1 = s[0]; 13 n2 = s[1]; 14 n3 = s[2]; 15 n4 = s[3]; 16 17 printf("%d%d", n1 + n4, n2 + n3); 18 19 return 0; 20 21}
試したこと
atoi関数を使ったり、strtokを使ったりしたのですが、atoi関数は「n1 = atoi(s[0]);」としてエラーが出たので「n1 = atoi(&s[0]);」に直したら全く違う結果が出てしまい、strtok関数は入力文字に区切り文字がないため分割することができませんでした。
補足情報(FW/ツールのバージョンなど)
paiza.ioを使いました。
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/03 10:28