• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:break;で、どうしてこのような実行結果になるのかわかりません。どな)

break文の実行結果について

arlquinの回答

  • arlquin
  • ベストアンサー率23% (3/13)
回答No.2

コードはこれで間違い無いですか? ifの後を「{}」で囲ってい無いんですかね? もしそうなら私とは書式が違うコーディングなんで分かりませんが… $jのループを(1)、$iのループを(2)とした場合 if分で変数$iと変数$jの合計が「1」になった場合(2)のループを強制的に抜けるわけですから 変数$iの値が次に進まずループを抜けて変数jの値が次に進みます。 どう言う意図のプログラムか分かりませんが もし$i+$jが「1」の場合は表示しないと言うプログラムならば、 下の様な感じじゃないでしょうか? ※テストしてないので動作の保証は出来ませんが… =========================================== <?php for($j=0; $j<3; $j++){  for($i=0; $i<3; $i++){   if($j+$i!=1){    print "$j + $i = ";    print ($j + $i)."<br>\n";   }  } } ?> ============================================

tentouxx
質問者

お礼

詳しく教えて頂きありがとうございます。 「変数$i」の値まで行かず、「変数j」の値が次に進むんですね。 わかった気がします・・・・・。 ありがとうございました!

関連するQ&A

  • for文の実行結果について

    public class Trace3 { public static void main(String[] args) { for (int i = 1; i < 4; i++) { for (int j = 1; j <= i; j++) { System.out.print(" " + (i * j)); } System.out.println(); } } } 実行結果は 1 2 4 3 6 9 になります。 i < 4でiは4より小さいで123は解るのですが、 j <= iでjはiより小さくjを含むで何故469になるのですか?

    • ベストアンサー
    • Java
  • printfするのとしないのとで実行結果が異なる

    現在、ようやくC言語にも慣れてきてソースが自力で書けるようになってきた者です。ところが、ちょっとした問題に悩んでいます。 当該ソースは以下のとおりです。 #include<stdio.h> int main(void){ #define NINZU 5 int i,j,k,temp,va[NINZU]; for(i=0;i<NINZU;i++){ printf("va[%d]=",i); scanf("%d",&va[i]); } for(j=0;j<NINZU;j++){ for(k=0;k<NINZU;k++){ if(va[k]<va[(k+1)]){ printf("比較材料 %d\n",va[k]); printf("比較相手 %d\n",va[(k+1)]); temp=va[k]; va[k]=va[(k+1)]; va[(k+1)]=temp; } } } printf("1番の人 : %d\n",va[0]); printf("2番の人 : %d\n",va[1]); return 0; } 簡単なソースで、入力された5個の数値を並び替え1位と2位を表示するというものなのですが、実行結果が、「比較材料・比較相手」というprintfを外すと、「1番の人」の表示がどんな値を入力しても1245056になってしまいます。 printfが入っていれば正常に表示されるのですが… 大至急、知りたいです!!!

  • phpで次の場合なぜ3が表示されず、2までなんでし

    phpで次の場合なぜ3が表示されず、2までなんでしょうか? <?php for($i = 0; $i <= 4; $i ++){ if($i == 3) { break; } echo $i."\n"; } ?>

    • ベストアンサー
    • PHP
  • perlからphpを実行して結果を得る方法

    perlのプログラムから同一サーバー内のphpを実行してその結果を取得したいのですが、うまくいきません。 print.phpというファイルの中身が <? echo "<div>1234567890</div>"; ?> だとして、これをブラウザで見た場合のソースは <div>1234567890</div> となるわけで、この1234567890をperlのプログラム内で表示するために main.cgiというプログラム内で $data = '/***/www/print.php'; open(FH,$data); @list = <FH>; foreach $data_line ( @list ) { if ($data_line =~/<div>/ ){ $data_line =~ s/<div>//i; $data_line =~ s/<\/div>//i; print = $data_line; } } close(FH); のような処理をすると echo "1234567890"; という実行前のphpの中身が表示されてしまいます。 表示したい結果はこの場合ブラウザでphpを実行した時のソースからdivタグをperl側で抜き取った 1234567890 なのですが、同じ事をperlの書き換えで実現する上手い方法があればご教授いただけますと助かります。

    • ベストアンサー
    • CGI
  • phpで5で割って余りを表示させない方法

    phpで5で割って余りを表示させない方法を探しています。 例えば <?php for ($i = 1; $i < 15; $i++) { echo $i; if ($i % 5 == 0) { echo "<br />"; }} ?> を実行させた場合 12345<br/> 678910<br/> 11121314 となりますが、この場合11から14までを表示させないようにすればどうすればできますか?

    • 締切済み
    • PHP
  • for文が全然ループしていない

     下のようなfor文を作って回してみましたが、チェックのために一番最後に書いたPRINT文で「0」が表示され、その下に下線表示だけです。  一体どこが悪いのでしょうか。全く分かりません。  また「$i==9」を「$i=<9」と書いていましたら、エラー表示になりました、何が原因でしょうか。  エディター(TeraPad)の認識に原因があるのでしょうか。  文法のエラー表示は出ていません。  9*9の表を表示させるだけの簡単なコードなのですが。 <html><head><title>make_matrix_html</title></head> <body> <table border="1"> <?php for($i=1;$i==9;$i++){ print ("<tr><br />"); for($j=1;$j==9;$j++){ print ("<td>".($i*$j)."</td>"); } print ("</tr>"); } print ($i*$j); ?> </table></body></html>

    • ベストアンサー
    • PHP
  • エラーは出ませんが、実行結果ができません。

    このプログラムなんですが、エラーは出ませんが結果が 0群の項目1の正解率は0.000000です 1群の項目1の正解率は0.000000です 2群の項目1の正解率は0.000000です… この様になり、正解率がでません… 初心者で、わからないので困っています。 お願いします。 #include <stdio.h> #include <process.h> #define S 256 #define I 100 #define J 100 #define K 3 //グループの数 //#define M 50//サブコンテンツの数 void sum(int u[][J],int N,int n); void sort(int y[],int N,int u[][J],int n); void gunwake(int y[],int start,int N,int gunnum); void passege(int y[],int div[],int N,int num[],int u[][J],int n); static int y[I]; int div[K-1]; int divyouso=0; void main (void) { FILE *fp; int N=0,i=0,j=1,kou=0,n; //N:人数 n:問題数 static int u[I][J]; static int num[I]; char buf[S]; //ファイルオープン if ((fp=fopen("data_i2_1.csv","r"))==NULL){ printf("Can't open File\n"); exit(1); } // 問題数のカウント fgets(buf,S,fp); N+=1; while(buf[i]!='\n'){ kou=kou++; i+=1; } for(i=0;i<=kou;i=i+2){ u[N][j]=buf[i]-'0'; j=j++; } n=kou/2+1; // レコードの読み込み while (fgets(buf,256,fp)!=NULL){ N+=1; // 文字型から数値型へ変換 j=1; for(i=0;i<=kou;i=i+2){ u[N][j]=buf[i]-'0'; j=j++; } } sum(u,N,n); gunwake(y,0,N,K); passege(y,div,N,num,u,n); fclose(fp); } void sum(int u[][J],int N,int n) { //static int y[I]; int i,ii; //学習者iの得点の初期化 for(i=0;i<=I;i++) y[i]=0; //学習者iの得点の計算 for(i=1;i<=N;i++){ for(ii=1;ii<=n;ii++){ y[i]+=u[i][ii]; } } sort(y,N,u,n); } void sort(int y[],int N,int u[][J],int n) { int left,right,i,shift,t,v; static int num[I]; //学習者の番号記憶用変数numの初期化 for(i=0;i<=I;i++) num[i]=0; for(i=1;i<=N;i++) num[i]=i; //シェーカーソート left=0; right=N; while (left<right){ for(i=left;i<right;i++){ if(y[i]>y[i+1]){ t=y[i]; v=num[i]; y[i]=y[i+1]; num[i]=num[i+1]; y[i+1]=t; num[i+1]=v; shift=i; } } right=shift; for(i=right;i>left;i--){ if(y[i]<y[i-1]){ t=y[i]; v=num[i]; y[i]=y[i-1]; num[i]=num[i-1]; y[i-1]=t; num[i-1]=v; shift=i; } } left=shift; } } void gunwake(int y[],int start,int N,int gunnum){ int tmp; int i,up,down,real; if(gunnum>1){ tmp=N/gunnum+start; //printf("tmp:%d\n",tmp); for(i=tmp;y[tmp]==y[i];i--){ } down = i + 1; //printf("down:%d\n",down); for(i=tmp;y[tmp]==y[i];i++){ } up =i; //printf("up:%d/n",up); if(tmp-down > up-tmp) real=up; else real=down; div[divyouso]=real; divyouso++; printf("%d\n",real); gunwake(y,real,N-real,gunnum-1); } } void passege(int y[],int div[],int N,int num[],int u[][J],int n){ int div2[K+1]; int k=0,j,i; int pp[I][J]; div2[0]=0; div2[K]=n; for(i=0;i<K-1;i++){ div2[i+1]=div[i]; } for(k=0;k<K;k++){ for(j=0;j<n;j++){ pp[k][j]=0; for(i=div2[k];i<div2[k+1];i++){ pp[k][j]=pp[k][j]+u[num[i]][j]; } } } //確認 putchar('\n'); for(j=1;j<=n;j++){ for(k=0;k<K;k++){ printf("%d群の項目%dの正解率は%fです\n",k,j,pp[k][j]); } } }

  • フォームを使った配列変数の受け渡し

    PHP初心者です、よろしくお願いします。 フォームからPHPで配列変数を受け渡すことを考えています。 一次元配列はうまく渡せましたので、これを二次元にしましたところ、 うまく渡せません。基本的なPHPの文法がわかってないので、つまづい ています。多分、配列変数の記述方法がおかしいのだと思うのですが・・。 ご教授よろしくお願いします。 <html> <body> <form method = "POST" action ="test2.php" > <?php //データ渡し側 for ($i = 0 ;$i < 2 ;$i ++){ for ($j=0 ;$j <2;$j ++ ){ echo ("<input type ='text' name = 'data[$i][$j]' size ='10'>\n"); echo ("<br>\n"); } echo ("</tr>\n"); } ?> <input type="submit" name ="sbmit" value="data_input" > </form> </body> </html> <?php //データ受け側 for ($i = 0 ;$i < 2 ;$i ++){ for ($j=0 ;$j < 2;$j ++ ){ $tmp_data[$i][$j] = $_POST["data"][$i][$j]; echo ("$tmp_data[$i][$j] <br>\n"); } } ?> <html> <body> <form method = "POST" action ="test2.php" > <?php for ($i = 0 ;$i < 2 ;$i ++){ for ($j=0 ;$j <2;$j ++ ){ echo ("<input type ='text' name = 'data[$i][$j]' size ='10' value='$tmp_data[$i][$j]'>\n"); echo ("<br>\n"); } } ?> </table> <input type="submit" name ="sbmit" value="in" > </form> </body> </html> 実行結果は、 Array[0] Array[1] Array[0] Array[1] と表示されて、実際の入力した値が反映されません。

    • ベストアンサー
    • PHP
  • 連番を書き出すなどの単純処理をするこのコードを採点願えませんか

    Excel-VBAについて下記のような質問をしたのですが http://oshiete1.goo.ne.jp/kotaeru.php3?q=2285679 この質問で実現したい処理をPHPで例示してみて、もっとシンプルに かけるに違いない!と思っています。 実際、いかがなものでしょうか。 <?php  for($i=20001;$i<=24000;$i++){   for ($j=1; $j<=12;$j++){    if ($j==1){     $body .= $i . "&nbsp;200412&nbsp;" . $i . "200412<br>\n";    } elseif ( $j == 2 ) {     $body .= $i . "&nbsp;200501&nbsp;" . $i . "200501<br>\n";    } elseif ( $j == 3 ) {     $body .= $i . "&nbsp;200502&nbsp;" . $i . "200502<br>\n";    } elseif ( $j == 4 ) {     $body .= $i . "&nbsp;200503&nbsp;" . $i . "200503<br>\n";    } elseif ( $j == 5 ) {     $body .= $i . "&nbsp;200504&nbsp;" . $i . "200504<br>\n";    } elseif ( $j == 6 ) {     $body .= $i . "&nbsp;200505&nbsp;" . $i . "200505<br>\n";    } elseif ( $j == 7 ) {     $body .= $i . "&nbsp;200506&nbsp;" . $i . "200506<br>\n";    } elseif ( $j == 8 ) {     $body .= $i . "&nbsp;200507&nbsp;" . $i . "200507<br>\n";    } elseif ( $j == 9 ) {     $body .= $i . "&nbsp;200508&nbsp;" . $i . "200508<br>\n";    } elseif ( $j == 10 ) {     $body .= $i . "&nbsp;200509&nbsp;" . $i . "200509<br>\n";    } elseif ( $j == 11 ) {     $body .= $i . "&nbsp;200510&nbsp;" . $i . "200510<br>\n";    } else {     $body .= $i . "&nbsp;200511&nbsp;" . $i . "200511<br>\n";    }   } } ?> <html> <body> <?= $body ?> </body> </html>

    • ベストアンサー
    • PHP
  • C言語の配列を利用した問題が分からないんです

    学校でC言語を習っているのですが、配列を利用した問題が解けません。 問題は「一致する文字列が、最初に出てくる位置を求める」というもので、穴埋め問題なのですが、どんなに考えても分かりません。 しかも、答えは教えないので自分で調べましょうと言われて困っています。 誰か分かる方、教えて下さい。 (抜かれているところをどう表現していいか分からなかったので、★マークにしています。分かりにくくてスミマセン) --------------------問題----------------------- #include<stdio.h> int main() {   char a[]="abcdefg";   char b[]="cde";   int i,j;   for(i=0; i<★; i++){     if( ★ ){       for(j=1; j<★; j++){         if(  ★  ){            break;         }       }       if(  ★  ){         break /*一致*/       }     }   }   printf("%d\n",i);   return 0; } ---------------------------------------------- 上の実行結果は、「2」と表示されるとの事でした。 どこか1つでもいいので、よろしくお願いします。