68user's page 掲示板

Prev< No. 1911〜1916> Next  [最新発言に戻る] [過去ログ一覧]
No. 1911 # HELP [E-mail] 2001/04/25 (水) 13:40:30
fgetsとsscanfの使いかたがまったくわかりません。
誰か教えて下さい。
下のような問題をといています。
誰でもいいのでできれば解いてもらえませんか??

問題
1.ユーザーに1つの数の入力を求め、入力された数字を8進数表示、16進数表示するプログラムを作りなさい。

条件:main関数1つで作成する。
            gets(),scanf()は利用しないこと。
            扱う数字のさいだいは、int型で良い。
            printf()は用いてもよい。

No. 1912 # 68user 2001/04/25 (水) 15:42:38
>>1911 HELP
宿題なのでしょうから、自分でやりましょう。

「ここまで自分でやりましたが、〜がわかりません」なら
ともかく、「全くわかりません」では問題外です。

# 2ch に行けば、お姉さんやギコ猫が答えてくれますけどね。

No. 1913 # HELP [E-mail] 2001/04/25 (水) 23:27:14
確かに宿題みたいなものなんですが、ほんとに全然さっぱりなんです。
fgetsとsscanfがどういうものなのかだけでも教えてもらえませんか?
参考書など読んだのですが、どのように使えばいいのかわからないんです。
問題のプログラムは一応できたんですが、あっているのかもわからないし、
自分で作ったプログラムなのに理解できないんです^^;
誰かお願いしますm(_ _)m

No. 1914 # 68user 2001/04/26 (木) 18:51:33
>>1913 HELP
では、自分の書いたプログラムを見せて、「こことここがわからん」
「ここは、こういう意味だろうか?」と質問してみてはどうでしょうか。

課題のプログラムについて、知るべきポイントや勉強すべきポイントは
たくさんあります。だから世の中にはたくさん C の参考書が出回って
いる。それら全てを回答者に解説させようとせず、自分がどこまで
理解しているかを明らかにした上で、ポイントをしぼって質問する
のが「うまい質問の仕方」というものです。

No. 1915 # HELP 2001/04/27 (金) 01:07:37
次の問題のプログラムを作ってみましたが、コンパイルできません。
どこが間違っているのか教えて下さい。

入力された数字を2進数表示するプログラムを作成しなさい。
条件:main関数、2進数の文字列を返す関数の2つの関数で作成する。
            扱う数の最大は、int型でよい。

#include <stdio.h>

int sinnkeisann(int k);

main ()
{
    char buff[32+1];
    int k ,kotae;

    printf("整数値を入力して下さい>>>");
    fgets(buff,sizeof(buff),stdin);
    sscanf(buff,"%d",&k);
    
    kotae = sinnkeisann( k );
        
        printf("2進数表記>>>%d",kotae);

}

int sinnkeisann(int k)
{
    int a,i,answer;
    char retu[32+1];

    a=k;
        retu[32] = '\0';
    
    for(i = 0; i < 32; i++){
        if(i != 0 && a == 0){
            break;
        }

        if(a %2 == 0){
            retu[(32-1) - i] = '0';
        }
        else{
            retu[(32-1) - i] = '1';
        }
        a = a / 2 ;
    }
    answer = retu[0]+(32-1)-i+1 ;

    return answer ;
    
}
    

No. 1916 # 68user 2001/04/27 (金) 03:38:19
>>1915 HELP
FreeBSD 4.2-RELEASE ではコンパイルできましたよ。コンパイル
できない場合は、どういうエラーメッセージが出たかを書きましょう。

ところで、条件では「文字列を返す関数」となっているので、
    char *sinnkeisann(int k)
とすべきですね。

ただし、インデントだけはきっちりつけましょう。そのソースを
見る他人のためでもあり、3日後にソースを見直すかもしれない
自分のためでもあります。

Prev< No. 1911〜1916> Next  [最新発言に戻る] [過去ログ一覧]