こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

c言語プログラミングHELP!

c言語でプログラムを組んでるんですが、どうしてもわからないものがありまして、
まず一つ目がキーボードから英小文字を一つ入力し、その文字を大文字に変換して出力するプログラミングです。結果がまずひとつの英小文字を入力して、入力した文字と、大文字に変換した文字を出力するプログラミングです。
ちなみにヒントは'a'=97,'A'=65です
二つ目が二桁の16進数('41'から'49','50'から'59')を入力すると対応する文字を表示するプログラミングです。また、%xは使用しないこと。なお、入力に間違いはないものとする。(ヒントは入力は一つの数値か、二つの文字か?だそうです。)
結果は二桁の16進数('41'から'49','50'から'59')を入力して、文字コードの二桁の数字と文字を出力するプログラミングです。
お願いします。

投稿日時 - 2011-05-01 18:13:25

QNo.6707147

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.6

難しく考えず、単純に。
http://e-words.jp/p/r-ascii.html



/* 回答一つ目 */
#include <stdio.h>
int main(void)
{
char a;
printf("? ");
scanf("%c", &a);
printf("%c => %c\n", a, a - 0x20); //味噌->(0x41-0x61)
return 0;
}



/* 回答二つ目 */
#include <stdio.h>
int main(void)
{
int a;
printf("Input 40-49 & 50-59: 0x");
scanf("%d", &a);
printf("a= %c\n", a + 24); //味噌->(65-41)
return 0;
}

投稿日時 - 2011-05-14 00:15:38

ANo.5

一番、謎なのは、'41'と'49','50','59'だと思うんですが・・・

投稿日時 - 2011-05-02 20:39:29

ANo.4

実現はしてるけど問題の「意図」には確実に沿わないコード。
#こんなひねくれた回答が欲しくなければもちっと自力で努力しよう、ということ。

……まぁなんだ、#3でも言われてるけど変なヒントを出すよりも「ASCIIコード表に沿って」とか言っとけば良かっただけじゃないかとは思うんですがね。

1)
char *p;
const char lower[] = "abcdefghijklmnopqrstuvwxyz";
const char upper[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char c = getchar();

if((p = strchr(lower, c)) != NULL)
{
printf("upper case is %c\n", upper[p - lower]);
}else{
printf("input character is not lower case alphabet.\n");
}

2)
char input[3];
int result;
scanf("%s", input);
result = strtol(input, NULL, 16);
printf("%d, %c", result, result);

投稿日時 - 2011-05-02 17:12:19

ANo.3

ど~でもいいけど
「'a'=97,'A'=65」
がどうして「ヒント」なんだろう. こんなのを「ヒント」に出すような奴は捨ててもいいと思う.

投稿日時 - 2011-05-02 10:43:29

ANo.2

課題自体はわかりましたけど

あなたの「わからないところ」が記述されていません。

わからないところを補足してください。

投稿日時 - 2011-05-01 21:46:30

ANo.1

いやこれでは、宿題が分からないから代わりにやってくれというレベルの質問です。

1~10まで全て回答に頼るというのは宿題という性質から宜しくないと考えます。

基本的な部分は自分で挑戦した上で

例えば、16進の値を文字に置き換える方法が分からないとか
小文字大文字変換の部分が思いつかないとか

ポイントに対するヒントが欲しいという程度までは自力で頑張ってください。

投稿日時 - 2011-05-01 19:41:02

あなたにオススメの質問