ここから本文です

#include<stdio.h> #include<math.h> int gcd(int a,int b); void print_cd(int...

ich********さん

2017/8/2222:02:52

#include<stdio.h>
#include<math.h>
int gcd(int a,int b);
void print_cd(int a ,int b);
int g;
int main (void)
{
int c,d;
printf("整数を入力してください");
scanf("%d",&c);

printf("整数を入力してください");
scanf("%d",&d);
print_cd(c,d);
g=gcd(c,d);
printf("gcd=%d\tcd=",g);
return 0;
}
int gcd (int a,int b)
{
int z;
while((z=a%b)!=0)
{
a=b;
b=z;
}
return b;
}


void print_cd(int a,int b)
{
int i,c;
for(i=1;i<=g;i++)
{
c=g%i;
if(c==0)
{
printf("%d",i);
}
}
}

このプログラミングを実行すると
printf("%d",i);
の部分が反映されません。
理由(原因)を教えてください!

閲覧数:
61
回答数:
2

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tre********さん

2017/8/2222:12:46

print_cd()が呼び出される時点ではgはまだ0ですので、forが1回も回りません。


#include<stdio.h>
#include<math.h>
int gcd(int a, int b);
void print_cd(int a, int b);
int g;//★初期化時は0

int main(void) {
int c, d;
printf("整数を入力してください");
scanf("%d", &c);
printf("整数を入力してください");
scanf("%d", &d);
print_cd(c, d);//★ここの時点ではgは0
g = gcd(c, d);
printf("gcd=%d\tcd=", g);
return 0;
}

int gcd(int a, int b) {
int z;
while ((z = a % b) != 0) {
a = b;
b = z;
}
return b;
}

void print_cd(int a, int b) {
int i, c;
for (i = 1; i <= g; i++) {//★gが0なので1回も回らない
c = g % i;
if (c == 0) {
printf("%d", i);
}
}
}

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

yuk********さん

2017/8/2222:18:16

起動直後に変数gがどうなってるか考えてみて

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる