• 締切済み

c言語が分かりません。

表示イメージ 1 12 123 1234 12345 以上五桁を表示するようにする。条件はfor文を用いて、表示は一文字づつprintf文を用いて表示する。

みんなの回答

  • alice_44
  • ベストアンサー率44% (2109/4759)
回答No.4

カテゴリー違いです。 C言語は、数学の一分野ではありません。 それにしても、謎の多い出題です。 そのように出力するためには、 puts("1\n12\n123\n1234\12345"); とするのが普通だろうし、 一文字づつ出力するのに printf を使う理由も 全く解せない。 for ループは一重にしたいんですか、 二重にしたいんですか? また、標準ライブラリの文字列関数は 使ってよいのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

普通のCですよね? >表示は一文字づつprintf文 なので%cを使って char *s = "12345"; int i,j; for(i=1;i<=5;i++){  for(j=0;j<i;j++){   printf("%c", s[j]);  }  printf("\n"); }

全文を見る
すると、全ての回答が全文表示されます。
  • ok-kaneto
  • ベストアンサー率39% (1798/4531)
回答No.2

#include <stdio.h> int main(void) { int i; for(i=0;i==0;i++){ printf("1"); printf("\n"); printf("1"); printf("2"); printf("\n"); printf("1"); printf("2"); printf("3"); printf("\n"); printf("1"); printf("2"); printf("3"); printf("4"); printf("\n"); printf("1"); printf("2"); printf("3"); printf("4"); printf("5"); printf("\n"); } return(0); }

全文を見る
すると、全ての回答が全文表示されます。
  • morchin
  • ベストアンサー率16% (212/1281)
回答No.1

import sys for i in range(1, 6): sys.stdout.write(str(i))

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C言語!教えてください!

    /* キーボードから4桁の数字を読み込み、3で割った余りが0ならばそのまま  表示する。1ならば数字と並びを逆に表示する。  2ならばその数字と逆に並べた数字の差の絶対値を表示。その際に差が0  であるなら入力した数字をそのまま表示するプログラム。 */ #include <stdio.h> int main(void) { int no; printf("4桁の数字を入力してください:"); scanf("%d",&no); if(no % 3 ==0) printf("%d \n" , no); else if(no % 3 ==1) do{ printf("%d",no%10); no = no / 10; }while (no > 0 ); else ここから絶対値を考えようとしたのですが 逆にした値が文字で置かれていないのでやりようがありません。 逆にした値は文字で置けるものなんですか? それともこの文ではできませんか? よろしくお願いします。

  • C言語

    入力した数の高さと幅の長方形を*で表示するプログラミング 縦4、横4のとき (例) **** **** **** **** この長方形を表示するプログラミングを 縁の太さ2 の「中が空白の長方形」になるようにするにはどのようなプログラミングにしたらいいのでしょうか? (例) 縦6 横7 ******* ******* **   ** **   ** ******* ******* 普通に長方形を表示するのはわかったのですが、中を空白にする方法がわかりません。 たぶんif文を使って空白と*を書き分けるのですよね? どのようなif文の条件にするのかが分かりません、どなたか教えてくださいお願いします。 長方形を表示する途中までやったのプログラミング #include <stdio.h> int main (void) {   int i, j, width, height;   scanf("%d %d", &width, &height);   for(j = 1; j <= height; j ++ ) {    for(i = 1; i <= width; i ++ ) {      printf("*");   }    printf("\n");  } return(0); }

  • C言語 初期化について

    はじめまして。 C言語を学習しております。 【初期化】の意味について混乱しております。 今まで、【初期化】とは下記のような繰り返しのある文に初期値(数え始めの値、下記の例では1)を代入することだと思っていました。 for (i = 1;i <= 10;i++) { printf("メッセージ\n"); } しかし、勉強が進むにつれ、下記のように様々な場面で【初期化】という言葉が出てきたことで、【初期化】の意味がわからなくなりました。 ●【文字変数の配列の初期化】の例 char str[6] = {'M','A','R','I','O'}; ●文字列リテラルを用いた【文字列の初期化】の例。 #include <stdio.h> int main(void) { char str[] = "MARIO"; printf("%s\n",str); return 0; } ●【配列の初期化】の説明 型名 配列名[要素数]={0番の数値,1番の数値,2番の数値,・・・}; ●【配列を初期化】して表示する例 #include <stdio.h> #include <stdio.h> int main(void) { int array[10] = {42,79,13}; printf("array[0] = %d\n",array[0]); printf("array[1] = %d\n",array[1]); printf("array[2] = %d\n",array[2]); printf("array[3] = %d\n",array[3]); printf("array[4] = %d\n",array[4]); return 0; } ●for文の説明 for (初期化;条件式;更新) { 繰り返す文; } 初期化とは、カウント変数の初期化を行うための文です。 ここに書かれた式は、最初に1回だけ実行されます。 【初期化】とは、場面場面で意味が変わるのでしょうか。 どの場面に通じる【初期化】の本来の意味を教えてください。 よろしくお願い致します。

  • C言語のプログラミングですが、

    C言語のプログラミングですが、 255文字以内の文字列をキーボードから入力して、下記の各処理を行うプログラム(※入力した文字データは配列に入力)はどのようにしたらいいでしょうか?(入力例:acFNkeexFFg) ・入力した文字列の最後の文字を出力 ・入力した文字列⇒逆に並べ替えて出力 ・入力した文字列⇒縦に出力(1文字ずつ) ・入力した文字列の中に「F」が何個あるか ただし、使えるのはfor文・配列・if文ぐらいでそれ以上レベルの高いものは使わないで下さい。 … char str[255]; int i,n,na,nb,nc; printf("Input Strings= "); scanf("%s",str); for(i=0;str[i]!='¥0';i++){ n=i; } printf("The last character= %c",str[n]); くらいまでしか分かりません…

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

    すみません。C言語のポインタで分からないことがあって来ました。 ポインタの理屈は理解してはいるのですが、いざソースコードを書いてみようということになると全く手がつけられずにいます。 以下のソースコードですが、strlen()と同じ働きをする関数mystrlen()と、strcmp()と同じ働きをする関数mystrcmpを、ポインタを使って作成するものです。どこをどうすればいいのか教えてくださいませんか。 #include <stdio.h> int main(void) { char str1[80], str2[80]; int i, j; int len1, len2; printf("第1の文字列を入力してください: "); gets(str1); printf("第2の文字列を入力してください: "); gets(str2); /* * 文字列の長さを確認する */ /* NULL文字(文字列の最後)まで読み飛ばす */ for (len1 = 0; len1 < 80 && str1[len1] != '\0'; len1++) ; /* ループ終了後、len1 に文字列の長さが入っている */ if (len1 < 80) { printf("%s は %d 文字の長さです\n", str1, len1); } else { printf ("第1の文字列が80字以上あります\n"); } /* str2 についても同様 */ for (len2 = 0; len2 < 80 && str2[len2] != '\0'; len2++) ; if (len2 < 80) { printf("%s は %d 文字の長さです\n", str2, len2); } else { printf ("第2の文字列が80字以上あります\n"); } if (len1 < 80 && len2 < 80) { for (i = 0; i < 80 && str1[i] != '\0' && str2[i] != '\0' && str1[i] == str2[i]; i++) ; if (str1[i] == str2[i]) { /* 両者同時に == '\0' のはず*/ printf("文字列は等しい\n"); } else if (str1[i] < str2[i]) { /* str1[i] == '\0' のはず*/ printf("%s は %s より小さい\n", str1, str2); } else { /* str2[i] == '\0' のはず*/ printf("%s は %s より大きい\n", str1, str2); } } /* * 十分なスペースがあれば、str2をstr1の最後に連結する */ if (len1 + len2 < 80) { /* str1 の末尾を探す */ for (i = 0; str1[i] != '\0'; i++) ; /* ループを抜けた段階では i は len1 と同じはずなので、 上記のループを作らず、i の代わりに len1 を用いるのも可 */ /* それ以降に str2 の中身をコピーする */ for (j = 0; str2[j] != '\0'; j++) { str1[i+j] = str2[j]; } str1[i+j] = '\0'; printf("%s\n", str1); } else { printf ("文字列をつなげた長さが80字以上あります\n"); } /* * str2をstr1にコピーする */ if (len1 + len2 < 80) { for (i = 0; str1[i] != '\0'; i++) { str1[i] = str2[i]; } str1[i] = '\0'; printf("%s %s\n", str1, str2); } return 0; }

  • C言語について。

    今、C言語に関する問題をやっているんですが、いまいちわかりません。 その問題というのは↓ ≪問題5 (繰り返し) 例題をもとに、次のような九九の表を出力するプログラムを作成しなさい。  1 2 3 4  5  6  7  8  9  2 4 6 8 10 12 14 16 18  ~(略)                                               ≫ という問題です。それで、その例題というのは↓ ≪例題4 (for文、do while文)  次のプログラムは、入力された整数を一辺とする正方形を出力するプログラムである。動作確認をしなさい。  4       (←入力)  ****  (←出力)  ****  ****  **** /* 正方形 */ #include <stdio.h> void main() {     int hen, i, j;     do{        printf("数字(2~9)を入力してください : ");        scanf("%d", &hen);        if( hen < 2 || hen > 9 )           printf("入力エラーです!\n");     }while( hen < 2 || hen > 9);     for( i = 1 ; i <= hen ; i++)     {         for( j = 1 ; j <= hen ; j++)           printf("*");         putchar('\n');    } }  ≫ ≪例題5 (for文、do while文) 次のプログラムは、入力された整数を一辺とする二等辺三角形を出力するプログラムである。動作確認しなさい。  4      (←入力)  *     (←出力)  **  ***  **** /* 二等辺三角形 */ #include <stdio.h> void main() {     int hen, i, j;     do{        printf("数字(2~9)を入力してください : ");        scanf("%d", &hen);        if( hen < 2 || hen > 9 )           printf("入力エラーです!\n");     }while( hen < 2 || hen > 9 );     for( i = 1 ; i <= hen ; i++ )     {            for( j = 1 ; j <= i ; j++ )              printf("*");          putchar('\n');     } }  ≫ 以上の二つが例題です。 わかりづらかったらすみませんm(_ _)m わかる方(問題5を)教えてくださるとありがたいです。

  • C言語のプログラムみてください(isdigit)

    質問は2つあります。 (1) scanf関数を使って、 時給: と表示されたところに一文字打ち込み、数字以外ならばもう一度 時給: と表示されるプログラムを作りたいです。 以下のプログラムなら、 isdigit関数は数字を渡せば0以外の数を返す(真)から、 while文の条件式(偽)のようにすれば、 ・数字を一文字うちこめばwhile文の条件式にあてはまらない、すなわち下のプログラムではisdigit(payment) != 0 となり、return 0; が実行され、プログラムが終わる ・数字以外を一文字打ち込めばwhile文の条件式が真となり、printf関数とscanf関数が実行されて入力待ち状態になる と思ったのですが、どうやら違うようです。実際には ・数字一文字打てばまた入力待ちになる ・数字以外を一文字打てば永遠にprintf関数とscanf関数が実行される のはなぜでしょうか。 #include <stdio.h> #include <ctype.h> int main(void){ int payment; do{ printf("時給[円]:"); scanf("%d",&payment); } while (isdigit(payment) ==0) ; return 0; } (2) 実際には、一文字の制限なく、数字以外の何かを入力したら、再び入力待ちになるプログラムを作りたいのですが、これはどうしたらいいのでしょうか。 つまり 時給: のところに数字以外ならまた 時給: となるようにしたいのです。お願いします。

  • C言語 ポインターと文字列

    C言語の勉強をしており、その途中でよく分からない挙動に出くわしたので 原因を知りたく、投稿しました。 よく分からない挙動と言うのは ポインターで作った文字列表示の際に for(i=0; *(str+i) != '\0'; i++) としてfor文を抜ける様にしたのですが、最後まで表示した後に セグメントエラーになってしまいます。 真ん中の文がおかしいのかと思い、単体で printf("%c", *(str+1)) や printf("%c", *(str+i)) (iには適当な数字を入れて) 表示したのですがセグメントエラーにはなりませんでした。 また、下の様に手書きの場合とfor文で回した場合でプログラムを作って試したのですが、 手書きの方はエラーは出ず、for文だとエラーがでました。 これはfor文の仕様なのでしょうか? 分かる方がいらっしゃったら教えて頂けるとありがたいです。 ちなみにパソコンは MacOSX10.6 コンパイラはXcodeを落とした時に入手できるもの i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3) Copyright (C) 2007 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. を使用しました。 int i; char *name; name = "test"; printf("name: %s\nadd: %p\n", name, &name); printf("by hand\n"); printf("%c\n%p\n",*(name+0), (name+0)); printf("%c\n%p\n",*(name+1), (name+1)); printf("%c\n%p\n",*(name+2), (name+2)); printf("%c\n%p\n",*(name+3), (name+3)); printf("%c\n%p\n",*(name+4), (name+4)); printf("with for\n"); for (i = 0; i < 4; i++) { printf("%c\n%p\n",*(name+i), (name+i)); }

  • プログラミング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; }

  • C言語の式を教えて頂きたいのですが

    「Yahoo」と入力すると、 1.「oohaY」と、逆から表示 2.文字数=5と表示 3.「YAHOO」と大文字で表示 というプログラムは、それぞれどのように書いたらいいでしょう? char moji[9]; は使うそうですが、int、for、if、putchar、getchar、printf、scanfなど、まだ基礎の基礎を習っている段階の初心者なので、できるだけ簡単にお願いします。