• ベストアンサー

プログラミング C言語

shino719の回答

  • ベストアンサー
  • shino719
  • ベストアンサー率50% (11/22)
回答No.4

実際に数値を入力しながら順を追ってみたら分かりやすいと思います。 ■1ループ目 for(i = 0; i < 6; i++) {    ←この時点でiの値は0 printf("No.%d:",i+1);     ↓数値に置き換えると printf("No.%d:",0+1);     ←しかしこの時点でi自身が+1されるわけではない ■2ループ目 for(i = 0; i < 6; i++) {    ←この時点で「i++」によりiは+1されて、iの値は1 printf("No.%d:",i+1);     ↓数値に置き換えると printf("No.%d:",1+1); ■3ループ目 for(i = 0; i < 6; i++) {    ←この時点で「i++」によりiは+1されて、iの値は2 printf("No.%d:",i+1);     ↓数値に置き換えると printf("No.%d:",2+1); 以下繰り返し。。。 つまりprintf関数にある「i+1」はiのそのときの数値に1加えたものを 設定するという意味ですが、i自身の値を1増やすという意味ではないと いうことです。ご理解いただけたでしょうか。

CooLNight
質問者

お礼

わかりました。ありがとうございますm(_ _ )m

関連するQ&A

  • プログラミングC

    次のプログラムは、キーボードから5個の整数データを入力し、すべてのデータ入力が終わった後で、実行例に示すように、それらのデータを入力順とは逆の順序で表示するプログラムである。このプログラムが正しく動作するように下線部を埋め、プログラムを完成させなさい。 int ______,i; for(i=0;i<______;i++) { printf("NO.%d:",i++) scanf("%d", &a[i]); } for(i=4;_____;i++) printf("%d,",a[i]); printf("%d\n",a[0]); [実行例] No.1:5 No.2:3 No.3:8 No.4:2 No.5:2 2,2,8,3,5

  • C言語プログラミングについて

    皆さんのお力をお貸しください 問題 1~20番のナンバーの車が200週の耐久レースをする。ENTERKEYを押すたびにコースを一周するものとし、一周するごとに20台のうち一台がランダムに選ばれ、選ばれた車は1~6のランダムに選ばれた数字の数だけ順位を上げるプログラムをかいてください。 ※ただしグローバル変数、ポインタは使わずif,for,while,配列のみで書くこと。 実行結果は #(選ばれた車のナンバー)   over(抜いた台数) 現在の周回数( ) 順位 1   (車のナンバー)     2   (車のナンバー)     3   (車のナンバー)        ・        ・          ・                    ()の中身はenterを押すたびに変化する となるようにしてください ポインタありのサンプルプログラムは組めたのですが、※の条件が付けられて、戸惑っています。 恥を忍んで皆さんにお願い申し上げます。 以下、サンプル(インデントの狂いやコメントに関してはご容赦ください) #include <stdio.h> #include <stdlib.h> #include <time.h> #define my_rand(n) (int)((n) * (rand() / (RAND_MAX + 1.0))) void swap(int *a, int *b) { int c = *a; *a = *b; *b = c; } void up_rank(int a[], int m, int n) { while(n --){ if(!m --) break; swap(&a[m], &a[m + 1]); } } void print(int car[], int n) { int i; int j = 0; for(i = 0; i < n; ++ i) { j++; printf("[%2d] %d\n",j, car[i]); } /*putchar('\n');*/ } int main(void) { int car[] = {95,43,86,8,52,28,64,58,76,70,4,34,63,92,35,33,56,80,54,74},i;               //各車のナンバー。皆さんは1~20でかまいません srand((unsigned)time(NULL)); printf("Start\n"); print(car, 20); system("pause"); system("cls"); for(i = 0; i < 201; ++ i) { int c, m = my_rand(20), n = my_rand(6) + 1; if(i<200) { printf("#%d, Overtake +%d\n",car[m] , n); printf("raps = %d\n",i+1); } else { printf("Finishing Positions\n"); } up_rank(car, m, n); print(car, 20); system("pause"); system("cls"); } return 0; }

  • C言語プログラミングで・・・

    つい最近、C言語プログラミングのお勉強をはじめた中学生です。 ある程度かけるようになってきて、こちらのサイトに掲載されている練習問題を解いていました。 http://akabas.net/lib/CExercise.aspx いろいろといていく中で、配列の章にはいりました。 配列の章の中の6問目と7問目の九九についてのコードを書いていたところ、どちらも問題なく実行を終了した後 「○○.exeは動作を停止しました。」というメッセージが現れました。 これはコードに何か問題があるのでしょうか? _____________________________________________________________________ //6問目 #include <stdio.h> void line (void){ int cnt; for (cnt = 0; cnt < 30; cnt++) printf("_"); printf("\n"); } int main() { int kuku[9][9], i, j; printf("九九を表示します\n"); for (i = 1; i <= 9; i++){ for (j = 1; j <= 9; j++){ kuku[i][j] = i * j; printf("%d * %d = %d\n", i, j, kuku[i][j]); } line(); } return 0; } ____________________________________________________________________ //7問目 #include <stdio.h> int main() { int kuku[9][9]; int i, j; for (i = 1; i <= 9; i++){ for (j = 1; j <= 9; j++) kuku[i][j] = i * j; } printf("1桁の数値(1 ~ 9に限定)を入力してください 1回目---"); scanf("%d", &i); printf("1桁の数値(1 ~ 9に限定)を入力してください 2回目---"); scanf("%d", &j); printf("\n"); printf("%d * %d = %d", i, j, kuku[i][j]); return 0; } ________________________________________________________________________________ まだ初心者のレベルなので、回答はできたらきつい言葉をつかってほしくないです^^; よろしくおねがいします ※こちらでは、Tabをうっているのですが、表示されてないみたいです。見づらいかと思いますが、よろしくおねがいします

  • C言語のプログラミングについてですが・・・

    初期値a を9 とし、a←3*a+4 で更新されるaを50 回分順に出力するプログラムをfor 文を利用して作成して下さい。 (漸化式a(i+1)=3*a(i)+4、初期値a(0)=9 で表される数列のa(0)~a(49)の値を順に求め、出力する) という問題がわかりません><; 実行結果が count=0 a=             9 count=1 a=            31    ・    ・    ・ count=49 a= 2632292621536793592856576 となるように作成するらしいのですが・・・。 一応私なりに #include<stdio.h> void main( ) { double a=9; int i; for(i=0; i<50; i++){ a=+3*a+4; printf("count=%d a=%.0lf\n",i,a); } } とやってみたのですが最初がa=31となってしまいます。 どなたか詳しい方教えてください。 よろしくお願いしますm( _ _ )m

  • C言語 プログラミング 行列演算

    下記のプログラムのおかしい点と解決法を教えてください。 コンパイルは通りますがうまく動きません。。 #include<stdio.h> #define MAX 500 int main(void){ int matrA[MAX][MAX],matrB[MAX][MAX],matrC[MAX][MAX],l,m,n,i,j,k; printf("lとmを入力してください:"); scanf("%d",&l); scanf("%d",&m); printf("行列Aを入力してください"); for(i=0;i<l;i++){ printf(">"); for(j=0;l<m;j++){ scanf("%d",&matrA[i][j]); } printf("\n"); } printf("nを入力してください(m = %d):",m); scanf("%d",&n); printf("行列Bを入力してください"); for(i=0;i<m;i++){ printf(">"); for(j=0;j<n;j++){ scanf("%d",&matrB[i][j]); } printf("\n"); } printf("C=\n"); for(i=0;i<l;i++){ for(j=0;j<n;j++){ for(k=0;k<m;k++){ matrC[i][j]+=matrA[i][k]*matrB[k][j]; } printf("%d",matrC[i][j]); } printf("\n"); } }

  • C言語 プログラミングで行詰まりました…

    標準入力(キーボード)からi,jk,nの値を入力し、次の漸化式を計算し、X_0からX_nまで求めるプログラムを作成したいのですが、うまく表示されません。どかがおかしいのかご指摘お願いします。 <漸化式> X_n=(a+b)/X_(n-1) , X_0=c(n=0) ================================================================== #include<stdio.h> float f_X(int a,int b,float c) { float y; y=(a+b)/c; return y; } int main (void) { int number,i,j; float k,l,n,X; printf("i:"); scanf("%d", &i); printf("j:"); scanf("%d", &j); printf("k:"); scanf("%f", &k); printf("n:"); scanf("%f", &n); X=k; printf("X_0= %.6f\n",X); for(number=1;number<=n;number++) { l=f_X(i,j,X); printf("X_%d= %.6f \n",number,l); X=l; } return 0; } ===================================================================

  • C言語で困っています

    C言語で 100:1 99:2 98:3 .......ループ 1:100とやりたいんですが このやりかたがわかりません goto文などを使うのでしょうか? 一応コードは #include <stdio.h> int main(void) { int i,a; for(i=100; i>=1; i--){ for(a=1; a<=100; a++){ printf("%d:\n",i); break; printf("%d",a); } } return 0; } です まったくこれだと右側が出力されなくてだめみたいです どなたかお知恵をください お願いします

  • C言語プログラミングの問題がわかりません・・・。

    ただいまC言語を勉強している者です。 【入力するデータ数と各データ(整数)を入力していき,0 以下の整数の数,正の整数の数,0 以下の整数の合計,正の整数の合計を求めるプログラムを作成せよ。】 という問題があり、とりあえず #include "stdio.h" void main() { int i,j,k,l=0,m=0,goukeisei=0,goukeifu=0; printf("入力するデータ数:"); scanf("%d",&i); for(j=1;j<=i;j++); { printf("データを入力してください(整数):"); scanf("%d",&k); if(k>0){ l++; goukeisei+=k; }else{ m++; goukeifu+=k; } } printf("正の整数の数%d\n",l); printf("0以下の整数の数%d\n",m); printf("正の整数の合計%d\n",goukeisei); printf("0以下の整数の合計%d\n",goukeifu); } と作ってみたのですが、入力するデータ数の繰り返しがされません(1回入力して終わりになってしまいます);; for文の使い方が間違っているのでしょうか・・・ 詳しい方教えてくださいm( _ _ )m 尚環境はXPでVC++2008を使っています。よろしくお願いします。

  • C言語で分からないところがあるのですが……

    C言語で分からないところがあるのですが…… すみません。C言語の課題で分からないところがあり、質問しに来ました。 ユーザから数を受けて、そこまでのフィボナッチ数列を表示させるというプログラムです。 下のソースコード(でいいんですよね?)は正しいやつです。 for文を使って、繰り返しの作業を行うことに成功しましたが、doとwhileに書き換える作業がうまくできません。 どなたか助けてください。 #include<stdio.h> fib(int n) { if(n == 1)return(1); else{ if(n == 2) return (1); else return fib(n-1) + fib(n-2); } } main() { int n, i ; printf("INPUT the number. : "); scanf("%d",&n); for(i=1; i<=n; i++){ printf("F%d = %d\n",i, fib(i)); } }

  • c言語のプログラミングについて聞きたいのですが

    自分は課題で「10人分の名前と点数を入力して降順に並び替える」というプログラムを作ろうとしているのですが、なかなかうまくいきません。一応↓の形までできたのですがなぜか数字が変になります。 どうしてか教えていただけないでしょうか。 #include<stdio.h> int main(void) {     int i,j;     int tensu[10][3];     char namae[10][6]; for(i=0;i<10;i++){ printf("名前の入力>>"); scanf("%s",&namae[i]); printf("点数の入力>>"); scanf("%d",tensu[i]); } printf("名前   点数\n"); for(j=0;j<10;j++) { printf("%s ",&namae[j]); printf("%10d\n",tensu[j]); } return 0; } それとポインタ?みたいなのもよく理解できず、点数で降順にしたあとに点数を使って名前を並び替えるのかなと思うのですがそれもよくわかりません。 どなたか教えてください