- ベストアンサー
C言語 配列について
for(j=0;j<=maxpop;j++){ d[200][j]=d[200][j]/1000; printf("%5d\n",d[200][j]); } のd[200][j]だけの値が 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 1 1 3 8 6 7 10 16 10 19 25 32 50 42 72 85 98 126 157 182 210 264 237 288 321 363 374 385 370 446 425 401 383 351 373 292 296 279 199 204 159 116 84 69 57 49 22 16 5 3 5 1 0 0 0 0 0 0 0 0 0 0 0 0 となり、これをそれぞれ1000で割った値(d[200][j]/1000)を出したいのですが、うまくいきません。 すべて値が0.000となってしまいます。 どうすればよいでしょうか? 何が間違っていますか? 教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (2)
![noname#15691](https://gazo.okwave.jp/okwave/images/contents/av_nophoto_100_3.gif)
- yasuch
- ベストアンサー率41% (27/65)
関連するQ&A
- C言語、putcharについて
C言語で、 int i,j; for (i=1;i<=9;i++) { for (j=1;j<=9;j++) printf("%d",i*j); putchar('¥n'); を実行すると 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 となります。 しかし、4行目をprintf("%d",i*j); にかえてputchar('¥n')をなくすと、すべての値が同じ列になってしまいます これはどういうことでしょうか??
- 締切済み
- C・C++・C#
- 2次元配列を使ったC言語の九九表を作りたいんですが、方法がわかりません。
C言語で、九九の表を作っているのですが2次配列を使わないでの方法なら出来るんですが、 2次配列を使うと出来なくなってします。 下記のように途中まで組んだのですが、どうしてもエラーがでてしまいます。 #include <stdio.h> int main(void) { int i,j,a[9][9]; printf(" "); for(i=1; i<=9; i++) printf("%3d", i); printf("\n"); for(i=0; i<9; i++){ for(j=0; j<9; j++) a[i][j]= {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} }; for(i=0; i<9; i++){ printf("%3d", i+1); for(j=0; j<9; j++) printf("%3d",a[9][9]); printf("\n"); } return 0; } とやったのですが…以下に書く部分が間違っているようで。 #include <stdio.h> int main(void) { int i,j,a[9][9]; printf(" "); for(i=1; i<=9; i++) printf("%3d", i); printf("\n"); for(i=0; i<9; i++){ for(j=0; j<9; j++) a[i][j]=□ } for(i=0; i<9; i++){ printf("%3d", i+1); for(j=0; j<9; j++) printf("%3d", □); printf("\n"); } return 0; } 色々調べたり、少しずつ変えながら試しているのですが、できません。 どなたかわかるかたいらっしゃいますか。間違いがわかりません… 配列を使用しなくても出来ることは、わかるのですが、配列を使うバージョンでもできるようになりたいんです。 私がしようとおもっているのは、81個分の値を先に計算し、9×9の2次元配列に格納し、次に81個の配列要素の値を出力したいのですが、 間違いと方法がわかる方いらっしゃいませんか。
- ベストアンサー
- その他(学問・教育)
- c言語です
c言語初心者です。今大学の課題でc言語のプログラムをかいているのですが、うまくいかないので助けて欲しいです。以下のようなプログラムで調和平均の値を出したいのですがなぜか表示されません。infと表示されてしまいます。あと調和平均とはn/(1/d1+1/d2+1/d3+.........+1/dn)の値です。ここでd1~dnは入力された数のことです。なので0が入力された場合は値を返さないようにしたいです。 どこをどのように直せばいいのか教えてください。よろしくお願いします。 #include <stdio.h> #include<math.h> #define M 1000 int main (int argc, const char * argv[]) { // insert code here... float d[M]; double e[M]; double wa=0.0,av,bun=0,kika=1,tyowa=0; /*avはaverageを,bunは分散を意味します*/ int i=0,j=0; printf("複数の数字を入力してください\n"); printf("数字入力を終了するときはnull文字を入力してください\n"); printf("数字以外が入力されたら\n"); printf("それまでの数字の計算結果を表します\n"); /*数字を入力、和を求める*/ while (scanf("%f",&d[i])!='\0') { wa=wa+d[i]; i++; } if (i!=0) { printf("算術平均は%fです\n",wa/i); av=wa/i; for (j=0; j<i; j++) { kika=kika*d[j]; } printf("幾何平均は%fです\n",pow(kika,1./i)); for (j=0; j<i; j++) { if (d[j]=0) { printf("調和平均は出せません\n"); } else e[j]=1/d[j]; } for (j=0; j<i; j++) { tyowa=tyowa+e[j]; } printf("調和平均は%fです\n",e[1]); for (j=0; j<i; j++) { bun=bun+(d[j]-av)*(d[j]-av); } printf("分散の値は%fです\n",bun/i); } else { printf("数字を入力してください\n"); } return 0; }
- ベストアンサー
- C・C++・C#
- C言語の2次配列
4行5列の配列を用意し、その配列の要素をtij(i=1~4, j=1~5)とするとき、tij=i×j となるように配列に値を入れ、 それを表の形で画面に表示するプログラムを作りなさい。 という問題なんですが、自分は下の様に組みましたがうまく動きません。どこが悪いのか教えてください。よろしくお願いします。あまりC言語を理解していないので申し訳ないですが、なるべく簡単に教えて頂ければ幸いです。 #include<stdio.h> int main(void) { int i,j; int t[4][5]; for(i=0;i<=3;i++) { for(j=0;j<=4;j++) t=i*j; printf("%5d",t); printf("\n"); } return 0; }
- ベストアンサー
- C・C++・C#
- C言語 2次元配列の積について
<演習> 4行3列の行列と3行4列の行列の積を求めるプログラムを作成 せよ。各構成要素の値はキーボードから読み込むこと。 ここに出てくる「行列」とは、数学で出てくるあの「行列」のこと でしょうか。 そうなると私が作成したプログラムは意味が違ってきます。 4回同じ事をする様になっていて1回分の計算結果だけにしたいのですが、方法が分かりません。 入門レベルの知識しかありません。ご指導の程、お願いしたいで す。 下記、プログラムを送付します。 <プログラム> #include <stdio.h> int main(void) { int i,j=0; int o,p; int a[4][3]; int b[3][4]; int m[4][4]; for (i = 0;i < 4; i++){ for (j = 0; j < 3 ; j++) { printf("a[%d][%d] = ",i,j); scanf("%d",&a[i][j]); } } printf("\n"); for (i= 0; i < 3; i++){ for (j = 0; j < 4; j++){ printf("b[%d][%d] = ",i,j); scanf("%d",&b[i][j]); } } printf("\n"); for (o = 0; o < 4; o++){ for (p = 0; p < 4; p++){ for (j = 0; j < 4; j++){ for ( i=0 ; i < 4 ;i++ ) { m[o][p] = a[i][j] * b[i][j]; printf ("a[%d][%d] = %d ," ,i, j, a[i][j]); printf ("b[%d][%d] = %d ," ,i, j, b[i][j]); printf("m[%d][%d] = %d \n",o,p,m[o][p]); } } } } return 0; }
- ベストアンサー
- C・C++・C#
- C言語の配列について
配列を20 定義し値を入力して合計値を出したいのですがどうすればよいのでしょうか 下のソースでエラーはおこりませんでした 何がちがうのでしょうか #include <stdio.h> int main() { int a[20]={}; int i, sum; printf("整数を入力してください:"); scanf("%d",&a); printf("\n"); for (i = 0; i < 10; i++) { sum += a[i]; } printf("sum= %d\n", sum); return 0; }
- 締切済み
- C・C++・C#
- C言語の配列の使い方について質問です。
以下のプログラムを配列を使って見やすくしたいのですが、どのように作ったら良いでしょうか? 宜しくお願いします。 #include<stdio.h> int main(void) { int a, b, c, d, e, f, g, h, i, j, k, l, m ,n, o; /*5段目の処理*/ for(a = 1; a <= 15; a++) { for(b = 1; b <= 15; b++) { if(a == b) continue; for(c = 1; c <= 15; c++) { if(a == c || b == c) continue; for(d = 1; d <= 15; d++) { if(a == d || b == d || c == d) continue; for(e = 1; e <= 15; e++) { if(a == e || b == e || c == e || d == e) continue; // printf("%d %d %d %d %d\n", a, b, c, d, e); ////4段目//// if(a>b){ f=a-b; } else if(a<b){ f=b-a; } if(b>c){ g=b-c; } else if(b<c){ g=c-b; } if(c>d){ h=c-d; } else if(c<d){ h=d-c; } if(d>e){ i=d-e; } else if(e<d){ i=e-d; } // printf(" %d %d %d %d \n", f, g, h, i); /////3段目//// if(f>g){ j=f-g; } else if(f<g){ j=g-f; } if(g>h){ k=g-h; } else if(g<h){ k=h-g; } if(h>i){ l=h-i; } else if(h<i){ l=i-h; } // printf(" %d %d %d \n", j, k, l); /////2段目//// if(j>k){ m=j-k; } else if(j<k){ m=k-j; } if(k>l){ n=k-l; } else if(k<l){ n=l-k; } // printf(" %d %d \n", m, n); /////三段目///// if(m>n){ o=m-n; } else if(m<n){ o=n-m; } // printf(" %d \n", o); if(a != b != c != d != e != f != g != h != i != j != k != l != m != n != o){ printf("%d %d %d %d %d\n", a, b, c, d, e); printf(" %d %d %d %d \n", f, g, h, i); printf(" %d %d %d \n", j, k, l); printf(" %d %d \n", m, n); printf(" %d \n", o); } } } } } } }
- ベストアンサー
- C・C++・C#
- C言語 多重配列に関して
以下のプログラムについての質問です。 10行目 for i = 0 の時、13行目 for j = 0 で scanf("%lf", &a[0][0])に10と代入します。 この時のドス画面は input 1-th line element:10 です。ここまではいいのですが、この次がよくわかりません。私の考えでは、10行目 i = 0 の時 13行目 j = 1 となって j がNMAXまでやったら、10行目のiが1になってまた同じように動いて、10行目の i がNMAXになったら、for文が終わると考えたのですが、このプログラムの実行結果(一番下にあります)を見てみると自分の考えが間違っていることに気がつきました。 3行3列のプログラムなので、a[0][0] a[0][1] a[0][2] a[1][0].......となると考え、scanfでドス画面に9回数字を打ち込むかと思ったのですが実際は3回でした。このプログラムはどのように読んだら良いのでしょうか?? 回答宜しくお願い致します。 1 #include <stdio.h> 2 #define NMAX 3 3 4 main() 5 { 6 double a[NMAX] [NMAX], b[NMAX] [NMAX], c[NMAX] [NMAX]; 7 int i,j,k; 8 9 printf("matrix 1:\n"); 10 for(i=0; i< NMAX; i++) 11 { 12 printf("input %d-th line element:", i+1); 13 for(j=0; j< NMAX; j++); 14 { 15 scanf("%lf", &a[i][j]); 16 } 17 } 18 printf("matrix 2:\n"); 19 for(i=0; i<NMAX; i++) 20 { 21 printf("input %d-th line element:", i+1); 22 for(j=0; j< NMAX; j++); 23 { 24 scanf("%lf", &b[i] [j]); 25 } 26 } 27 for(i=0; i<NMAX; i++) 28 { 29 for(j=0; j<NMAX; j++) 30 { 31 c[i][j] = 0; 32 for(k=0; k <NMAX; k++) 33 { 34 c[i][j] += a[i][k] * b[k][j]; 35 } 36 } 37 } 38 39 printf("matrix 1 * matrix2 = :\n"); 40 for(i=0; i<NMAX; i++) 41 { 42 printf("["); 43 for(j=0;j<NMAX; j++) 44 { 45 printf("%f", c[i][j]); 46 } 47 printf("]\n"); 48 } 49 }
- ベストアンサー
- その他(学問・教育)
- C言語について
C言語の問題なのですか、作成したのですが内容がわからないです。テキストを読んでも解説が書いていないので、出来ればどなたか簡単な解説でも教えて頂けるとありがたい。 〈7-3〉 #include <stdio.h> int main(void) { int i, j; long kuku[9][9]; // 九九の値の代入処理を記述 for (i = 0; i < 9; i++) { for (j = 0; j < 9; j++) { kuku[i][j] = (i + 1) * (j + 1); } } ///////////////////////////////////// // 九九の表示部(ここは変更しないこと) for (i = 0; i < 9; i++) { for (j = 0; j < 9; j++) { printf(" %2d", kuku[i][j]); } printf("\n"); } return 0; }
- 締切済み
- C・C++・C#
- C言語 九九表
九九表を作ろうとしたのですが、うまくいきません、解説お願いします。 #include<stdio.h> main() { int i ; int j ; for( i=1 ; i<=10 ; i++){ for( j = 1 ; j<=10 ; j++) { printf("%4d\n") , i*j ; } printf("\n") ; } } 結果 10 -748408832 -748408832 -748408832 -748408832 -748408832 -748408832 -748408832 -748408832 -748408832 が10個続いてました・・・・
- ベストアンサー
- C・C++・C#