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]
C駆け出しです。アドバイスお願いします。
Re: C駆け出しです。アドバイスお願いします。
全てのscanfの処理に成功したとしても、num2は初期化されていないので値は不定となり、
それを使用した計算は未定義動作になります。
s1やp1のかわりにnum2に対し整数を読み込むようにするか、
num2のかわりにs1やp1を使用して計算をするようにする (いずれか1つ) といいでしょう。
ちなみに、
・printfで出力するメッセージの中に不自然な「11」や「3」が混ざっている
・printfの引数に無駄なs1やp1が入っている (変換指定が無いのにデータが渡されている)
のは不自然ですが、C言語としては無害です。
それを使用した計算は未定義動作になります。
s1やp1のかわりにnum2に対し整数を読み込むようにするか、
num2のかわりにs1やp1を使用して計算をするようにする (いずれか1つ) といいでしょう。
ちなみに、
・printfで出力するメッセージの中に不自然な「11」や「3」が混ざっている
・printfの引数に無駄なs1やp1が入っている (変換指定が無いのにデータが渡されている)
のは不自然ですが、C言語としては無害です。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: C駆け出しです。アドバイスお願いします。
以下のように解決できました。
アドバイスして頂きありがとうございました!!!
[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/]
アドバイスして頂きありがとうございました!!!
[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/]