無題

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
リョウ

無題

#1

投稿記事 by リョウ » 15年前

始めまして プログラム初心者のリョウといいます。
質問したいのは下の問題です。
キーボードから入力した整数を n とする。アルファベット順で英小文字 'a' から 数えて n 番目の文字を印字するプログラムを作成せよ。
% ./NthChar
Input integer: 9
The charater away from 'a' by 9 is 'j'.
%
この問題をとけと言われているのですが、ヒントや説明もなくてまずどうすればいいかわかりません。
教科書を見ても分からないので、どういう方法でプログラムすればいいか教えてくれないでしょうか?
osはlinuxです。

ookami

Re:無題

#2

投稿記事 by ookami » 15年前

こんにちは。作りかけのソースがあれば貼ってもらえると助言が集まりやすいと思いますよ。

無ければ以下の順でお答えください。

まず、コンパイラは何ですか?
次に、お約束の"Hello, World!" は印字できますか?
文字コードについて理解していますか?(printf("%c\n",65); の出力結果は分かりますか?)

リョウ

Re:無題

#3

投稿記事 by リョウ » 15年前

コンパイラはちょっとわからないんですが、emacsを使っていてコンパイルするときは gcc -o を使っています。
印字するというのは、printf("Hello,World!")
これでいいですか?
文字コードは'e'が出力されると思います。

ookami

Re:無題

#4

投稿記事 by ookami » 15年前

それです。「gcc」がコンパイラの名前です。

Hello, World! はそれでOKです。

以下は惜しい。
printf("%c\n",0x65);なら 'e' が出力されます。
printf("%c\n",65);では 'A' です。
http://e-words.jp/p/r-ascii.html

上記のページにもある通り、ASCII文字コードの処理系ならば、

文字 文字コード
'a' 97
'b' 98
:
:
'j' 106
:
:

と並んでいます。例題では 9 を入力しており、'a'(97)に 9 足した 'j'(106) が印字されている、ということになります。

で、作りかけのものがあったら貼ってもらったほうが、回答が集まりやすいと思いますよ。

たかぎ

Re:無題

#5

投稿記事 by たかぎ » 15年前

一応作ってみました。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
fputs("Input integer:", stdout); fflush(stdout);
char s[2+1], c;
scanf("%2[0-9]%c", s, &c);
int i;
if (c != '\n' || (i = atoi(s)) >= 26)
return EXIT_FAILURE;

printf("The character away from 'a' by %d is '%c'.\n",
i, "abcdefghijklmnopqrstuvwxyz");
}

例によって、コメントなし、解説なしです。
自力で理解してください。

リョウ

Re:無題

#6

投稿記事 by リョウ » 15年前

みなさん返信ありがとうございます。
おかげさまで理解できました!
どうもありがとうございます。
またわからないことがあれば質問すると思いますので
よろしければまたお願いいたします。

閉鎖

“C言語何でも質問掲示板” へ戻る