前提・実現したいこと
atcoder9/11B問題で自分の実行環境ではできたのですが、ACになりません。atcoderの提出では次のようなエラーメッセージがでてしまいました。
https://atcoder.jp/contests/abc218/tasks/abc218_b
問題文
1 以上 26 以下の整数からなる長さ 26 の数列 P=(P1,P2,…,P26) が与えられます。ここで、P の要素は相異なることが保証されます。
以下の条件を満たす長さ26 の文字列S を出力してください。
任意の i(1≤i≤26) について、S の i 文字目は辞書順で小さい方からPi 番目の英小文字である。
制約
1≤Pi≤26
Pi!=Pj
(i!=j)
入力は全て整数である。
入力
入力は以下の形式で標準入力から与えられる。
P1 P2 … P26
出力
文字列S を出力せよ。
入力例 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
出力例 1
abcdefghijklmnopqrstuvwxyz
入力例 2
2 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
出力例 2
bacdefghijklmnopqrstuvwxyz
入力例 3
5 11 12 16 25 17 18 1 7 10 4 23 20 3 2 24 26 19 14 9 6 22 8 13 15 21
出力例 3
eklpyqragjdwtcbxzsnifvhmou
発生している問題・エラーメッセージ
./Main.c: In function ‘main’: ./Main.c:7:9: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result] 7 | scanf("%d", &p[i]);
該当のソースコード
#include <stdio.h> int main(){ int p[26], i; char s[27]; for(i=0;i<26;i++){ scanf("%d", &p[i]); } char zisyo[27]="abcdefghijklmnopqrstuvwxyz"; for(i=0;i<26;i++){ s[i]=zisyo[p[i]-1]; } printf("%s\n", s); return 0; }
###実行結果
oamke@DESKTOP-3PLG0UV ~/kyopuro/20210911 $ gcc b.c oamke@DESKTOP-3PLG0UV ~/kyopuro/2021091 $ ./a.exe 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 abcdefghijklmnopqrstuvwxyz oamke@DESKTOP-3PLG0UV ~/kyopuro/20210911 $ ./a.exe 2 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 bacdefghijklmnopqrstuvwxyz oamke@DESKTOP-3PLG0UV ~/kyopuro/20210911 $ ./a.exe 5 11 12 16 25 17 18 1 7 10 4 23 20 3 2 24 26 19 14 9 6 22 8 13 15 21 eklpyqragjdwtcbxzsnifvhmou
コード作成の際の疑問
一般的には、終端文字も含めた配列の長さを宣言すると思うのですが、intの場合は終端文字は考えなくてもいいのでしょうか。今回はp[26]としてできました。また配列に値を入れていく際にfor文だと終端文字は入れられないと思うのですが、気にしなくてもよいのでしょうか。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。