44日目 5分以内に九九の表を出力しなさい
5分でできる頭の体操。初心者向け。
九九の表をつくってみよう。
g:generation1986:id:oldfishはwhileとかでやるといいよ!
#include <stdio.h> main() { int i, j; for(i = 0; i < 9; i++) { for(j = 0; j < 9; j++) { printf("%2d\t", (i+1)*(j+1)); } printf("\n"); } return 0; } 実行結果 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81
あかん。もっと難しいことやんなきゃ。
例えば配列だとこうなる。
#include <stdio.h> main() { int i, j, kuku[9][9]; for(i = 0; i < 9; i++) { for(j = 0; j < 9; j++) { kuku[i][j] = (i+1)*(j+1); printf("%2d\t", kuku[i][j]); } printf("\n"); } return 0; }
せっかく配列を使ってみたのでもっと違うことできないか。
パスカルの三角形とか。
#include <stdio.h> main() { int i, j, pasc[4][4]; pasc[0][0] = pasc[0][1] = pasc[1][0] = pasc[0][2] = pasc[2][0] = pasc[0][3] = pasc[3][0] = 1; for(i = 1; i < 4; i++) { for(j = 1; j < 4; j++) { pasc[i][j] = pasc[i-1][j] + pasc[i][j-1]; printf("%2d\t", pasc[i-1][j-1]); } printf("\n"); } return 0; } 実行結果 1 1 1 1 2 3 1 3 6
初期化が汚い。
そもそも三角形じゃないし4×4領域確保して3×3しか表示できてないし、猛省。
なんかいい方法ないかなぁ。
二項定理自体を格納すればいいような気もしてきた。あとで追加するかも。
私信
こんなのどうだろう。
#include<stdio.h> int main(void){ int dan = 1, gyou; while(dan <= 9){ gyou = 1; while(gyou <= 9) { printf("%3d", gyou * dan); gyou += 1; } dan += 1; printf("\n"); } return 0; }
switchのぐーちょきぱー表示をまとめられないだろか、とかうにうに考えてた。
#include<stdio.h> #include<stdlib.h> #include<time.h> int main(void){ int x,y; srand((unsigned) time(NULL)); printf("じゃん、けん…\n1.ぐー 2.ちょき 3.ぱー\n"); scanf("%d",&y); printf("ぽん!\nあなた:"); y = y-1; switch(y){ //プレイヤの出した手を表示 case 0: printf("ぐー!"); break; case 1: printf("ちょき!"); break; case 2: printf("ぱー!"); break; } printf("\nCPU:"); x = rand() % 3; //1~3の乱数でCPUの手を決定 switch(x){ case 0: printf("ぐー!\n\n"); break; case 1: printf("ちょき!\n\n"); break; case 2: printf("ぱー!\n\n"); break; } if(x == y) printf("あいこ!"); else if ((y+1)%3 == x%3) printf("かち!"); else if ((y+2)%3 == x%3) printf("まけ!"); else printf("1〜3の数を入力してね!"); return 0; }
2008.6.7追記
#include<stdio.h> #include<stdlib.h> #include<time.h> int main(void){ int x, y; char *str[]={"ぐー!", "ちょき!", "ぱー!"}; //「文字列の配列を表すポインタ」 srand((unsigned) time(NULL)); printf("じゃん、けん…\n1.ぐー 2.ちょき 3.ぱー\n"); scanf_s("%d",&y); y = y-1; x = rand() % 3; printf("ぽん!\nあなた:%s", str[y]); //プレイヤの出した手を表示 printf("\nCPU:%s\n\n", str[x]); if(x == y) printf("あいこ!"); else if ((y+1)%3 == x%3) printf("かち!"); else if ((y+2)%3 == x%3) printf("まけ!"); else printf("1〜3の数を入力してね!"); return 0; }