ページ 11

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

Posted: 2020年6月09日(火) 23:17
by チオビタ
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]

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

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

ちなみに、
・printfで出力するメッセージの中に不自然な「11」や「3」が混ざっている
・printfの引数に無駄なs1やp1が入っている (変換指定が無いのにデータが渡されている)
のは不自然ですが、C言語としては無害です。

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

Posted: 2020年6月10日(水) 16:25
by チオビタ
以下のように解決できました。
アドバイスして頂きありがとうございました!!!

[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/]