掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

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

No.28278

オリンピックイヤーを確かめるプログラム
投稿者---staff(2006/09/29 12:28:24)


プログラムを作成して、コンパイルできましたが、
数字を入力しても何の反応もありません。

何が間違っているんでしょうか?

教えてください。



#include<stdio.h>

int math(int a);

int main(void)
{
    int year;
    
    printf("西暦を入力してください。\n");
    scanf("%d\n",&year);
    
    int math(year);
    
    
    
    return 0;
}

int math(int a)
{
    if(a%2==0){
        printf("冬季オリンピック");
    }
    if(a%4==0 && a%2==0)
    {
        printf("夏季オリンピック");
    }
    
    if(!(a%2==0)){
        
          printf("開かれません");

    }
    return 0;
}    



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:オリンピックイヤーを確かめるプログラム 28279 Blue 2006/09/29 12:31:25
<子記事> Re:オリンピックイヤーを確かめるプログラム 28282 かずま 2006/09/29 19:42:14


No.28279

Re:オリンピックイヤーを確かめるプログラム
投稿者---Blue(2006/09/29 12:31:25)


> int math(year);
math(year);

もしくは、戻り値を受けるように

int ret = math(year);


この投稿にコメントする

削除パスワード

No.28280

Re:オリンピックイヤーを確かめるプログラム
投稿者---Blue(2006/09/29 12:40:19)


ちなみにmath関数は間違っています。

たとえば、2000年は夏季オリンピック(シドニー)ですが、
2で割り切れるため

冬季オリンピック夏季オリンピック

と表示されます。
冬季も夏季もどちらも4年ごと行われますので判定としては

  1. 2で割り切れるかを確認
  2. 1. が 真 の場合 4で割り切れるかを確認
  3. 2. が 真 の場合 夏季オリンピック
  4. 2. が 偽 の場合 冬季オリンピック
  5. 1. が 偽 の場合 オリンピック開催年ではない


というチェックになるかと思います。

また、
>if(a%4==0 && a%2==0)
は 4 で割り切れるものを 2 で割り切れるのかというのをチェックしています。

>if(!(a%2==0)){
は else 文を使えばいいですね。


この投稿にコメントする

削除パスワード

No.28281

Re:オリンピックイヤーを確かめるプログラム
投稿者---staff(2006/09/29 12:54:58)


回答ありがとうございます。

main関数で、関数を呼び出すには、

intがいらないんですね。

変更したら入力に反応がありしました。
 
math関数の部分は、難しそうですね。

じっくり考えてみます。

ありがとうございました。


この投稿にコメントする

削除パスワード

No.28282

Re:オリンピックイヤーを確かめるプログラム
投稿者---かずま(2006/09/29 19:42:14)


>    scanf("%d\n",&year);

どういうつもりで書式の中に \n を書いたのかを説明してください。



この投稿にコメントする

削除パスワード

No.28283

Re:オリンピックイヤーを確かめるプログラム
投稿者---staff(2006/09/29 20:36:55)


初心者なので、癖ですね。

\nは、改行のいみですよね。

よく見たら、不要でしたね。


この投稿にコメントする

削除パスワード

No.28284

Re:オリンピックイヤーを確かめるプログラム
投稿者---かずま(2006/09/29 23:57:07)


> \nは、改行のいみですよね。

printf ではそうですが、scanf では全く意味が違います。
調べてみてください。


この投稿にコメントする

削除パスワード

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