dポイントプレゼントキャンペーン実施中!

掛け算の九九、和の九九、差の九九を表示するプログラムを組むという問題ですが、コメント文の所のプログラムが分からないので教えてください。プログラムは以下の通りに与えられています。
#include<stdio.h>
main(){
int x,y,z;
int yn,op;
do{
do{
printf("[*(1),+(2),-(3)]");
scanf("%d",&op);
}while( 1 > op || op > 3 );
//ここに、九九を計算し表示するプログラムを入れる
//変数opの値が1なら、掛け算の九九
//変数opの値が2なら、和の九九
//変数opの値が3なら、差の九九 を計算し表示
do{
printf("Continue[1/0]?");
scanf("%d",&yn);
}while( 0 > yn || 1 < yn );
}while( yn == 1 );
}

A 回答 (2件)

チョー汚い書き方ですがこういうことかな??


----------------------------------
#include<stdio.h>
void main(){
 int x,y,z;
 int yn,op;
 int i,j;
 do{
  do{
   printf("[*(1),+(2),-(3)]");
   scanf("%d",&op);
  }while( 1 > op || op > 3 );

  for (i=-1; i<10; i++) {
   if (i==-1) {
    printf("%2s|", "");
   } else if (i==0) {
    printf("%3s", "--");
   } else {
    printf("%2d|", i);
   }
   for (j=1; j<10; j++) {
    if (i==-1) {
     printf("%3d", j);
    } else if (i==0) {
     printf("%3s", "---");
    } else {
     if (op==1) printf("%3d", i*j);
     if (op==2) printf("%3d", i+j);
     if (op==3) printf("%3d", i-j);
    }
   }
   printf("\n");
  }

  do{
   printf("Continue[1/0]?");
   scanf("%d",&yn);
  }while( 0 > yn || 1 < yn );
 }while( yn == 1 );
}
----------------------------------
    • good
    • 0
この回答へのお礼

参考になりました。ありがとうございました。

お礼日時:2010/01/24 23:50

和の九九や差の九九がいまいち把握できませんでしたので


処理を分ける方法のみ提案させていただこうと思います。

とりあえず、Switch文を使えば良いかと思います。
かなり大雑把な説明ですが、Switch文とはifを少し便利にしたようなものとお考えください。状況により処理を分岐させることができます。

switch (op){//変数opを判断する
case 1;//変数opが1なら
//掛け算の九九の処理
break;

case 2;
//和の九九
break;

case 3;
//差の九九
break;
}

また、掛け算を1x1から9x9までを全て羅列するというのなら
for文を持ちいれば作成できるかと思います。デバッグしてないので怪しいですが下記のようなものでも動くかなと思います。もっと綺麗にできるとは思いますが。

int a,b;
for(a=1;a<10;++a){
for(b=1;b<10;++b){
printf ("%d * %d = %d\n",a,b,a*b);
}
}
    • good
    • 0
この回答へのお礼

ありがとうございます。参考にプログラムを考えてみます。

お礼日時:2009/11/10 22:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!