【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.21094

define文
投稿者---???(2005/05/19 12:48:53)


"0と1の文字列を入力して下さい"と表示して、0と1を入力して、
0に女って代入して、1に男って代入する。
0と1を入力して、男か女かを表示するプログラムを作りたいのですが、
分かりません。
誰か教えてください!


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:define文 21095 Blue 2005/05/19 12:57:28
<子記事> Re:define文 21096 とおり 2005/05/19 13:08:26
<子記事> Re:define文 21097 nop 2005/05/19 13:24:45
<子記事> Re:define文 21098 takeda 2005/05/19 13:55:21
<子記事> Re:define文 21099 επιστημη 2005/05/19 14:06:36
<子記事> Re:define文 21107 hiro 2005/05/19 23:53:29


No.21095

Re:define文
投稿者---Blue(2005/05/19 12:57:28)


>"0と1の文字列を入力して下さい"と表示して、0と1を入力して、
>0に女って代入して、1に男って代入する。
>0と1を入力して、男か女かを表示するプログラムを作りたいのですが、
>分かりません。
>誰か教えてください!
こりゃひどいな。。。

とりあえず 掲示板ご利用上の注意をお読みください。

で、実際にどこまでできてどこが具体的にわからないかを再度質問してください。
# define文と本文の関係が書かれていませんけどね。



この投稿にコメントする

削除パスワード

No.21096

Re:define文
投稿者---とおり(2005/05/19 13:08:26)


#include <stdio.h>

int main(void)
{
  printf("\"0と1の文字列を入力して下さい\"と表示して、0と1を入力して、\n");
  printf("0に女って代入して、1に男って代入する。\n");
  printf("0と1を入力して、男か女かを\n");

  return(0);
}

なんちて。



>"0と1の文字列を入力して下さい"と表示して、0と1を入力して、
>0に女って代入して、1に男って代入する。
>0と1を入力して、男か女かを表示するプログラムを作りたいのですが、
>分かりません。
>誰か教えてください!



この投稿にコメントする

削除パスワード

No.21097

Re:define文
投稿者---nop(2005/05/19 13:24:45)


まず、きちんとした日本語で書いて下さい。
行うべき処理を順番に箇条書きなどで書いてみると、
何がやりたいのか、あなたの中で整理がつくと思います。

そして、箇条書きにした項目一つ一つについて、
どの様にプログラムをすればよいか考えてみて下さい。



この投稿にコメントする

削除パスワード

No.21098

Re:define文
投稿者---takeda(2005/05/19 13:55:21)


>"0と1の文字列を入力して下さい"と表示して、0と1を入力して、
>0に女って代入して、1に男って代入する。
>0と1を入力して、男か女かを表示するプログラムを作りたいのですが、
>分かりません。
>誰か教えてください!


#include <stdio.h>

main ()
{
   int a;

       printf("0と1の文字列を入力して下さい==>");
       scanf("%d",&a);

       switch(a){
        case 1 : printf("男");
         break;
        case 2 : printf("女");
}
}


こんな感じでいいんじゃないですか?



この投稿にコメントする

削除パスワード

No.21099

Re:define文
投稿者---επιστημη(2005/05/19 14:06:36)


なに言ってんだろ。タイトルの"define文"が何か?

>"0と1の文字列を入力して下さい"と表示して、
printf("0と1の文字列を入力して下さい");

>0と1を入力して、
int first_input;
scanf("%d",&first_input);

>0に女って代入して、1に男って代入する。
const char* table[] = { "女", "男" };

>0と1を入力して、
int second_input;
scanf("%d", &second_input);

> 男か女かを表示する
何が男/女なのですか?



この投稿にコメントする

削除パスワード

No.21107

Re:define文
投稿者---hiro(2005/05/19 23:53:29)


まず最初に、人の課題をやってしまうのはどうかと思いますが、自分がまだまだ経験不足なので人のプログラムを書いて、もっとこうした方がいい!と言うのを聞いて勉強しようと思ってます。

こんなんどうでしょう?
bolandのbcc32でコンパイルすると9行目が移植性のないポインタ変換。と警告が出ますが、無視しました。宣言の中身が1文字(男、女)なので'でくくればいいのかなぁ。
それと初期設定でchar型で定義されてる方がいましたが、表示はどうすればうまく表示されるのですか?

#include<stdio.h>
/* 無理やりdefine定義 */
#define man 0
#define woman 1

int main(void)
{
    /* 初期設定 */
    char seibetsu;              /* 0か1が入る。 */
    const int table[] = {"男", "女"};

    /* 主処理 */
    printf("0(男)か1(女)を入力して下さい。\n");
    scanf("%d", &seibetsu);     /* 0か1を受け取る */
    
    switch (seibetsu) {      /* 0か1の分岐。0:男, 1:女 */
        case man:                     /* 0の処理 */
            printf("%s\n", *table);
            break;
        case woman:       /* 1の処理 */
            printf("%s\n", *(table+1) );
            break;
        default:
            printf("0か1を入力して下さい。\n");
            break;
    }
    
    return 0;
}



この投稿にコメントする

削除パスワード

No.21108

Re:define文
投稿者---あかま(2005/05/20 00:49:14)


>bolandのbcc32でコンパイルすると9行目が移植性のないポインタ変換。と警告が出ますが、無視しました。
const char *table[] = {"男", "女"};

宣言の中身が1文字(男、女)なので'でくくればいいのかなぁ。
漢字は2バイトなので文字ではなく文字列扱いです。
""でくくらないといけないのでこのままが正解です。


この投稿にコメントする

削除パスワード

No.21109

Re:define文
投稿者---nop(2005/05/20 09:44:42)


> char seibetsu; /* 0か1が入る。 */
> scanf("%d", &seibetsu); /* 0か1を受け取る */

「%d」の書式が想定している型は「int」型です。
「%d」書式を使うなら「seibetsu」は「int」型でなければなりません。


この投稿にコメントする

削除パスワード

No.21110

Re:define文
投稿者---あかま(2005/05/20 16:40:35)


>「%d」の書式が想定している型は「int」型です。
>「%d」書式を使うなら「seibetsu」は「int」型でなければなりません。
可変個引数のときは引数の格上げがあるので大丈夫だと思います。

http://www.kouno.jp/home/c_faq/c15.html
15.2を参照のこと。



この投稿にコメントする

削除パスワード

No.21111

Re:define文
投稿者---nop(2005/05/20 16:46:22)


>可変個引数のときは引数の格上げがあるので大丈夫だと思います。

printf() ならば問題ないですが、
scanf() の場合、引数で渡されたポインタをintオブジェクトへのポインタと解釈し、
sizeof(int)分の領域に書き込みを行います。

しかし、「&seibetsu」で示される領域は「char」オブジェクトなので、
sizeof(int)>sizeof(char)の環境では、
確保されている領域を超えて書き込みを行うはずです。


この投稿にコメントする

削除パスワード

No.21112

Re:define文
投稿者---あかま(2005/05/20 22:34:43)


失礼しました。scanfでは問題でした。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧