• 締切済み

C言語のプログラムについて

大学のテストの確認をしているのですが、この問題の回答がどうしても分かりません。どなたか教えてください。 9桁以内の整数を入力し、int型の変数に格納し表示するプログラムを作成しなさい。 ただし、先頭は、数字か「+」か「-」とし、それ以外はすべて数字とする。この条件に合わないものおよび10桁以上のものは、「入力エラー」として表示後、再入力を行うこと。 例えば「-123456」や「45678989」は、整数としてint型の変数に格納し、「abcd」や「123-234」は、「入力エラー 」を表示し、再入力を行う。 ---------------------------------------------------------------- また、自動判定の都合上、表示は以下の表示例に準拠すること。 【 23-234 *12345 -123456 を入力した例】 入力エラー 入力エラー 整数は、-123456 です。 お願いします

みんなの回答

  • yama5140
  • ベストアンサー率54% (136/250)
回答No.4

《確認》 この「質問」と*を見た・読んだ人の多くは、  ・質問者様のパソコンに、「エディタ・コンパイラ」が整備されている。  ・少なくとも4月から4ケ月弱、C言語を学んだ大学生(「テスト」を受ける有資格者)。 と、言わずもがな的に認識?していると思いますが、この認識に間違いはありませんか。 * http://okwave.jp/qa5146943.html   http://okwave.jp/qa5146953.html --------------------------------------- >【 23-234 *12345 -123456 を入力した例】  【 23-234[ENTER] と *12345[ENTER] と -123456[ENTER] の「3ケの文字列」を入力した例】ですよね。 ☆そうでなく、あくまで【 23-234 *12345 -123456 の「1行」を入力した例】でしたら以降、無視して下さい。 --------------------------------------- >大学のテストの確認をしているのですが、この問題の回答がどうしても分かりません。  キーボード入力、判定、繰り返し、表示などの基本的なC言語記述を覚えていますか。  使ったこと(←★重要)はありますか。  使ったことがあるなら、処理手順を「考える」ことで、「テストの確認」は簡単にできると思います。 ☆と書いたけど、「テスト」を受ける有資格者なら「簡単にできる」はずのことを「質問」したんだよね、う~ん、「回答」ムズイね。 --------------------------------------- 《無理栗のアドバイス》 「使えそうな標準関数をパラパラと確認」してから、「テストの確認」ってのが早道かなと思います。 そしてからのヒント: ・入力した文字列を、各条件で判定(◆)し、残ったもの(条件に合うもの)を表示する。  (って当たり前すぎて「ヒント」になりませんね・・)   プログラム骨格の例     do{       (条件提示)        文字列入力        条件Aに合わないもの continue; ◆          B  〃 ◆          C  〃 ◆        int型の変数に格納し表示 break; 終了     }while( 1 );     (◆各判定に、else 不要) ---------------------------------------- 《蛇足》 今年の3月に「丸投げ」が解禁となりました。 今回の「質問」は、授業料を払って、プログラミングの本流を学んでいる?人からの「丸投げ」質問です。 「丸投げ」が解禁となったからといって、「考えても判らないから質問した」ではなく「考えれば判るはずなのに、少しも考えずに・・」は如何なものでしょう。 3つの質問に対する「回答」に対し「補足」で真摯に対応すれば、それぞれの質問に、全ソース掲載の「回答」がつくかもしれませんよ。 今回のだって、高々20ステップ程に収まりそうだし・・(てか、そういう問題じゃあない(笑)ことは、他の回答からも伝わったはず)。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.3

どこが分からないのか明確にしたほうがいいですね 全然分からないから回答だけが欲しいなんてのは論外です。 inputとかscanfとかで調べたら道が開けるかもしれません。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

すみませんが, その入力と出力の関係が分かりません. どの単位で「入力」とするのかを教えてください. あと, 例えば「-123456789」はエラーになるんでしょうかならないんでしょうか?

  • prophetok
  • ベストアンサー率44% (13/29)
回答No.1

教科書のそのまま載っているレベルでしょ。 教科書も持っていないの?

関連するQ&A

  • c言語プログラム

    加減乗除および剰余の演算記号(+-* / %)と2つの整数を入力し、入力した2つの整数に対して入力した演算を施して表示するプログラムをif文ではなくswitch文を用いて作成しなさいなお、演算記号入力の際に間違った記号(+ - * / % 以外)を入力した場合は+を入力したものとして計算するものとしなさい。 ヒントで 変数としては入力演算記号に対応する変数op、入力する2つの整数に対応する変数m,n、答えに対応する変数ansを使うとよいでしょう宣言についてはopは記号なのでcharで宣言しますが、あとはすべて整数ですのでintで宣言 まずやることは演算記号以外の場合に+であることを表示するプログラムを組むと思うんですけど どうしたらいいのかわかりません力を御貸しください

  • C言語の変数の型がわかりません

    C言語の変数の型がわかりません [int]は4バイトを使って整数(-2147483648~2147483648)を格納できる. [long int]は4バイトを使って整数(-2147483648~2147483648)を格納できる. のようなことが書いてあります. [int]と[long int]の違いは何ですか?

  • c言語のプログラムです

    2つの生の整数の割り算a÷bはaからbを繰り返し引いていき、引くことが出来なくなるまでの回数を商、その時の残りを剰余をすることで、引き算だけを用いて実現することができる。このことを考慮して、while文と引き算だけを用いて割り算を実現しなさい。という問題なんですけどどのようにプログラムを作っていいやらわかりません 一様ヒントはあります ・変数としては、入力する二つの整数に対応する変数m,n、商に対応する変数q、剰余に対応する変数rを使うとよいでしょう。すべて整数ですのでintで宣言する。 皆さんのご協力お願いします

  • C言語で四則演算を使って結果が10になる数式

    C言語のプログラミングについて質問です。 四つの一桁の数字を入力して四則演算を使って結果が10になる数式を作りたいのですが、イメージが湧きません。 教えていただけますか? 例:1234enterkey 答え2*3+1*4 数値の変数はint型でお願いします。int型ですので小数点以下を使って10になる結果は出さなくて宜しいです。お願いします。

  • linux RedHatでC言語

    整数、単精度(float)、倍精度(double)の変数変換、各種書式付出力について教えてください。 また、よろしければ、40桁の整数、有効数字20桁の実数、小数点以下15桁の実数を表示する方法について教えてください。 本当にC言語の初歩だとは思いますが教えてください。

  • C言語

    毎度毎度お世話になります<(_ _)> 今回は関数のところで躓いています(;´Д`) 問題は二つなんですけど、 「二つの整数変数の引数の和を計算して結果を戻す関数plusを作成し、 それを利用して以下の実行結果になるようにしなさい。」 ■ 実行例 ■ Input two integer numbers 4 5 4+5=9 (数字は1例です) 「会場を求める関数factとべき乗を求める関数powintを利用して、 n!/xのn乗を求める関数pow_factを作成しなさい。 ただし、pow_fact関数は因数に整数値をとるが、戻り値は実数になることに注意しなさい。」 ■ 実行例 ■ Input number 5    1    1.000000000    2    0.500000000    3    0.222222224    4    0.093750000    5    0.038400002 ( 数字は1例です ) といった感じです。 最初の問題は int plus( int a, int b){ int y = 1; ココがわからない return y; } この先もわからない といった感じです。 二問目に関してはさっぱりわかってません(;´Д`) 回答、アドバイスなど沢山の回答お待ちしています。 ちなみにLinuxのGNOME端末をつかっています。

  • C言語について教えてください。

    初心者です。宜しくお願いいたします。 /* yuki */ #include <stdio.h> int main() { int hako; char *p[3] = { "kkkkk","oooo","llll" }; for (hako=0;hako<3;hako++){ printf("ポインタ表示%s\n",p[hako]); } return 0; } 整数でポインタの中身を配列出力しているのですが、これをインクリだけで表示することってできないでしょうか??本当はポインタにアドレス入れて入力をインクリしてどんどん入力したいとおもってます。 表示は配列で出したいとおもいます。(他に方法があるのかわからないです^^;) それと、入力なのですが、scanfですと入力待ちになるのですが、getsですとスルーされてしまうことがあるのです。玄人の方々は、これにはいろいろ問題があるみたいに聞いた事があります。それってなぜなのでしょう?? 私の素人感覚では上の二つの使いかたは、変数とキャラ型での使いかたっておぼえました。両方とも数字なのは承知してます。できるときと出来ないときがあるので、そのときになぜ??っておもうことがあるのです。 どうかご指導お願いいたします。

  • C言語!教えてください!

    /* キーボードから4桁の数字を読み込み、3で割った余りが0ならばそのまま  表示する。1ならば数字と並びを逆に表示する。  2ならばその数字と逆に並べた数字の差の絶対値を表示。その際に差が0  であるなら入力した数字をそのまま表示するプログラム。 */ #include <stdio.h> int main(void) { int no; printf("4桁の数字を入力してください:"); scanf("%d",&no); if(no % 3 ==0) printf("%d \n" , no); else if(no % 3 ==1) do{ printf("%d",no%10); no = no / 10; }while (no > 0 ); else ここから絶対値を考えようとしたのですが 逆にした値が文字で置かれていないのでやりようがありません。 逆にした値は文字で置けるものなんですか? それともこの文ではできませんか? よろしくお願いします。

  • DBに半角数字10桁入力すると別数字になります

    phpとphpmyadminを連携しており、フィールドはid(AUTO_INCREMENT)を含め、11項目作成しています。 phpでは9つのフォームがあり、入力された値が2~10つ目のフィールド(すべてint(10))に格納され、11こ目のフィールドはdateで取得した値が入ります。 php上で、生成されたsql文をechoで表示させると、入力したとおりになっているのですが、phpmuadminの中身を見てみると、10桁フルで入力した値が、決まって「2147483647」となっており、困っています。 変数もechoで細かく見てみましたが、どこもおかしなところはありません。 DBに格納された数字のみがおかしなことになっています。 さらに、いろいろ試してみたところ、 1234564757はそのまま 2222222222は2147483647 2222222229は2147483647 4545454545は2147483647 1111111112はそのまま 1111111111はそのまま 2222はそのまま(9桁までの数字の連続なら正常) のような感じで、1の場合は10桁でも変な数字にならず、ほかの数字が連続するときまって2147483647になるようです。 11桁からはプログラムによりエラーが出て再入力を求めるようにしており、11桁以上の場合は正常にエラーが出るので、おかしくなるのは、10桁のときのみです。 格納寸前の変数も直後の変数や$sqlもおかしなところは全くないので、何が狂わせているのかがわからずにいます。 php:5.3.8 mysql:5.5.16 phpmyadmin:3.4.5 Apache:2.2.21 (Win32) つたない説明で分かりづらいかもしれませんが、大変困っておりますので、 何かアドバイス等があれば是非ご教授いただければ幸いです。

    • ベストアンサー
    • MySQL
  • C言語のプログラム作成の課題の事なんですが

    小数とアルファベットを入力したとき、例えば “123.45a” と入力したとき、 プログラムの中で整数型の変数で “123.45” を一つの数字(double型)として認識し、その 数字を出力せよ。 というプログラムを組む課題なんですがさっぱり?わかりません。どなたか教えて戴けないでしょうか?