• ベストアンサー

改行について パート2

h_hikitaの回答

  • h_hikita
  • ベストアンサー率40% (104/257)
回答No.2

こんな感じにでもなるかと思います。 #include <stdio.h> main() { int i,n; int j; //追加 j=0; //追加 //for (n == 2 ; n <= 100 ; n++){ ←nに初期値入ってないので一回も実行されない... for (n = 2 ; n <= 100 ; n++){ for (i=2; i<n ;i++){ if(n%i == 0){ break; } } if(i == n){ printf("%d ",i); /* 追加部分始 */ j= (j+1) %3; if(j==0) printf("\n"); /* 追加部分終 */ } } } }

noname#1519
質問者

お礼

改行のやり方にしてもif(j%3==0)というやり方以外にも h hikitaさんのやり方もあるのですね。早速返事を(しかもご丁寧にコメント付きで)書いて下さりありがとうございます!!

関連するQ&A

  • 10個出力で改行したいのですが・・・

    #include <stdio.h> main() { int i, n; for( i = 1, n = 0; n < i; i++ )    { if(i%3 == 2 && i%4 == 1 && i<1000 ) {  printf("%4d,",i);   if(i%10==0)        printf("\n");    n++;       }    } printf("\n"); } このプログラムは、3で割ると2余り、4で割ると1余る自然数で1000より小さいものを小さい順に表示するもので、 一行に10個ずつ表示して改行したいのですが、どうすればいいでしょうか? if文が間違っていると思うのですが・・・

  • 変わらない・・・。

    ↓のプログラムについて (1)break文をexit(0)とreturn(0)にするとどうなるか? (2)13行目と14行目にif(i>=n){break;}を入れるとどうなるか? *プログラムは書き換えてよい。 という問題なんですが私にはさっぱりです・・・。 #include<stdio.h> int main() { int i,n,total; while(1){ printf("整数n?");   scanf("%d",&n);     if(i>=n){break;} total=1; for(i=n;1<=i;i++){ printf("i=%d ",i); total*=i; } printf("total=%d\n",total); } printf("Thanks\n"); return(0) } できたら理由も教えてください。 よろしくおねがいします。

  • 改行について 1行に何個かづつ表示するとき

    よく画面に回数を入力した分だけhello!worldと表示しましょうとありますよね? そのプログラミングはこうなると思うのですが #include<stdio.h> main() { int i,a; printf("回数を入力 → "); scanf("%d",&a); for(i=1;i<=a;i++){ printf(" hello! world "); } }  改行をする場合worldのあとに\nをいれますよね。では例えば 10回表示して1行に3個づつ表示する場合はどうしたらいいですか。 考えてみたのはif(a%3==0) printf("/n");か、if(a<=3) printf("\n"); の2つが思い浮かびました。上の画面のprintf命令のあとに入れてみましたが うまくいきません。こんなことを気にしないほうがいいのかもしれませんが 気になります。どこが間違っているのでしょうか。位置ですか。それとも 2つの案がはじめから違いますか。

  • C言語 エラー表示 break の位置が誤っている(関数 main ) 

    #include<stdio.h> int main(void){ int n,i,j,k; char c='*'; printf("正の整数:"); scanf("%d",&n); if(n>0){ for(i=1;i<=n;i++){ printf("%d",i); for(j=1;j<=n+1-i;j++){ if(j==1){ if(i-1>0){ for(k=i-1;k>0;k--){ printf(" "); } } } printf("%c",c); } printf("\n"); } } break; return 0; } これをコンパイルすると「break の位置が誤っている(関数 main )」と表示されるのですが何でですか? 困ってます↓

  • Cプログラミング 

    素数を判定するプログラミングの作成で以下のプログラミングを作成したのですが、すべて 素数でないとでてしまいます。どなたか間違いをおしえていただけませんでしょうか。 #include<stdio.h> int main(void) { int num,i; printf("Please input a number:"); scanf("%d",&num); for (i=2; i < num ; i++){num % i; if (num % i == 0) break; } if (num % i == 0) printf("%d is not prime. \n" ,num); else printf("%d is prime. \n" ,num); return 0; }

  • 2から120以下の素数を求める

    2以上120以下の素数を全て求めて表示するプログラムを書きなさい。 素数か否かの判定には以下のアルゴリズム[処理手順] (2 <= n <= 120のときのみ有効)を用いなさい。 i) nが2, 3, 5, 7, 11のうちのどれかと等しければNは素数 ii) nが2, 3, 5, 7, 11の全てに対して割切れなければNは素数 iii) それ以外(iもiiも不成立)のとき、Nは素数ではない。 *) 2, 3, 5, 7, 11は最初に出力してしまい、 n=12から120までをfor文のなかで判定すればよい。 というC言語の課題です。 自分でプログラムを作ったのですが、うまくできません・・。 if文が働いてないようなのですが、どこが間違っているのでしょうか? #include <stdio.h> int main(void) { int i; printf("2\n"); printf("3\n"); printf("5\n"); printf("7\n"); printf("11\n"); for (i=12;i<=120;i++){ if (i%2!=0 || i%3!=0 || i%5!=0 || i%7!=0 || i%11!=0){ printf("%d\n",i); } else{ printf(""); } } printf( "\n" ); return 0; }

  • for文~break

    break文に達した時、for文から抜けますか?それとも、if { }から抜けるんですか? for文はどこまで影響下にありますか? if ( i==5 ) printf ("サーバーが見つかりません"); まででしょうか? また  if ( i == 5 ) で5なら、実行としていますが、 6,や,8など5 以外でも、サーバーが見つかりません と if文が実行される見たいですが、なぜですか? 教えてください。 #include<stdio.h> int main(void) { int array[5][2]={ {1,14}, {2,28}, {3,19}, {4,8}, {5,15}, }; int sever; int i; printf("番号を入力してください"); scanf("%d",&sever); for( i=0 ; i<5 ; i++ ) if ( sever == array[i][0] ){ printf ( "%d 番には, %d 人います。\n",sever,array[i][1]); break; } if (i==5) printf("サーバーが見つかりません"); return 0; }

  • プログラミングCの質問です

    現在10×10の市松模様を表示させるというプログラムを作成しています。 #define文、IF文、for文の使用、printfを使って■と□を表示させることが条件です。 間違っているところの指摘をお願いします。 #include <stdio.h> #define N 10 int main(void) { for( i=1 ; i<=N ; ++i ) { for( j=1 ; j<=N ; ++j ) } if( (i+j) % 2 ){ printf("■"); }else printf("□"); } printf("\n"); i++; } return 0; }

  • 素数 再帰関数

    メイン #include<stdio.h> extern void count_primes(void); extern void print_primes(void); int max; int count; int primes[1000] int main(void) { printf("Uper limit: "); scanf("%d",&max); count_primes(); print_primes(); } 素数を求める(関数呼び出し) extern int nextprime(int n); extern int max; extern int count; extern int primes[]; void count_primes(void) { int i; count=0; for(i=2;i<=max;i=nextprime(i)){ primes[count++]=i; } リカーバシブ(次の素数) int nextprime[int n] { int i; for(;;){ n++; for(i=2;i*i<=n;i=nextprime(i)){ if(n%i==0) break; } if(i*i>n) break; } return n; } 素数プリント #include<stdio.h> extern int count; extern int primes[]; void print_primes(void) { int i for(i=0;i<count;i++){ if((i>0)&&(i%10==0) printf("\n"); printf(" %6d",primes[i]); } printf("\n素数の数 %d\n",count); } これら4つのモジュールで素数 nが求められますがアルゴリズム理解できません。この2つの関数のアルゴリズムについて、ご教授ください。め

  • 簡単なfor文

    #include <stdio.h> int main(void) { int n; int i; for(n=0 ;n<10;n++){ for(i=0; i<=n ;i++){ printf("*"); } printf("\n"); } return(0); } こういったプログラムを実行すると、以下のように表示されるのですがなんででしょうか? * ** *** 以下略 自分の考えですと、*は毎回一つしか表示されずに改行されると思うのですが・・・ * * * * 以下略 i個分の*を表示するなどという指示をプログラムはなされていないと思うのですがなぜなんでしょうか? 一つ目のfor文では10回ループが繰り返され改行 二つ目のfor文で*を永遠に表示 といった僕の解釈ではおかしいですよね。 当方C言語初心者で、周りに聞く人がいないため教えていただけると非常に助かりますm(__)m