C駆け出しです。アドバイスお願いします。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
チオビタ

C駆け出しです。アドバイスお願いします。

#1

投稿記事 by チオビタ » 3年前

C言語初心者の者です。
教科書で調べながら取り組んでいるのですが、デバックまで上手くいきません。
Vstadioを使用しています。
問題の内容は、二つの整数をキーボードから入力,和を整数型変数s1に代入、また、積を整数型変数p1に代入し,それぞれ出力するプログラムを作成せよ。といったものです。
アドバイスいただけたら幸いです。

[code]
#include <stdio.h>

int main(void)
{
int num1, num2;
int s1 = 0;
int p1 = 0;

printf("s1=%d p1=%d", s1, p1);

printf("整数11を入力してください。\n");
scanf("%d", &num1);

printf("3を入力してください。", s1);
scanf("%d", &s1);

s1 = num1 + num2;

printf("和は%dです。\n",s1);


printf("整数11を入力してください。\n");
scanf("%d", &num1);

printf("整数を3入力してください。",p1);
scanf("%d", &p1);

p1 = num1 * num2;

printf("積は%dです。\n",p1);
return 0;
}

[/code]

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: C駆け出しです。アドバイスお願いします。

#2

投稿記事 by みけCAT » 3年前

全てのscanfの処理に成功したとしても、num2は初期化されていないので値は不定となり、
それを使用した計算は未定義動作になります。
s1やp1のかわりにnum2に対し整数を読み込むようにするか、
num2のかわりにs1やp1を使用して計算をするようにする (いずれか1つ) といいでしょう。

ちなみに、
・printfで出力するメッセージの中に不自然な「11」や「3」が混ざっている
・printfの引数に無駄なs1やp1が入っている (変換指定が無いのにデータが渡されている)
のは不自然ですが、C言語としては無害です。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

チオビタ

Re: C駆け出しです。アドバイスお願いします。

#3

投稿記事 by チオビタ » 3年前

以下のように解決できました。
アドバイスして頂きありがとうございました!!!

[code]

#include <stdio.h>

int main(void)
{
int num1, num2;
int s1;
int p1;

printf("整数11を入力してください。\n");
scanf("%d", &num1);

printf("整数3を入力してください。\n");
scanf("%d", &num2);

s1 = num1 + num2;

printf("和は%dです。\n", s1);

p1 = num1 * num2;

printf("積は%dです。\n",p1);
return 0;
[code/]

返信

“C言語何でも質問掲示板” へ戻る