c言語プログラムを作成でわかりません

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
masa4869

c言語プログラムを作成でわかりません

#1

投稿記事 by masa4869 » 7年前

2重ループを利用して、以下のようなプログラムを作成を教えてください
A
AB
ABC



ABCDEFG...YZ

アバター
purin52002
記事: 235
登録日時: 7年前
連絡を取る:

Re: c言語プログラムを作成でわかりません

#2

投稿記事 by purin52002 » 7年前

こんにちは

AからZまで順番に表示する文字を増やしていくというプログラムでよろしいでしょうか?^^;

masaさんがなんの言語を使うかわからないのでアルゴリズムについてお話します。(タイトルに思いっきり書いてましたね^^;申し訳ないorz)
おそらくですが、外側のループで何文字表示するかを計算し、内側のループで実際に文字を表示するものだと思います。(思いました。違ったら言ってください^^;)

コード:

for i = 0 to 25
    for j = 0 to i + 1
        print 'A' + j
    print \n
のような感じでかけないかな、と思います。
print 'A' + j と言うのはAのアスキーコードにjを足した文字を表示する という意味です。
アスキーコードは連続しているので、例えば ’A'+1 は B になるはずです。(詳しくはググってください^p^)
オフトピック
  • 質問内容を明確にする
  • 使用言語も書く
  • 自分でかけるとこまで書いたコードも載せる
以上のようなことをしてもらえると答える側があまり頭を使わずに済むので楽です^p^
最後に編集したユーザー purin52002 on 2017年6月13日(火) 22:46 [ 編集 1 回目 ]
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

Math

Re: c言語プログラムを作成でわかりません

#3

投稿記事 by Math » 7年前

>c言語プログラムを作成でわかりません
とあるから普通には

コード:

#include <stdio.h>

void main(void)
{
	int i, j;

	for (i = 65; i <= (65 + 25); i++) {
		for (j = 65; j <= i; j++){
			printf("%c", j);
		}
		printf("\n");
	}
}

コード:

1>------ すべてのリビルド開始: プロジェクト:ConsoleApplication10, 構成: Debug Win32 ------
1>c1.c
1>ConsoleApplication10.vcxproj -> D:\z17\c\ConsoleApplication10\Debug\ConsoleApplication10.exe
1>ConsoleApplication10.vcxproj -> D:\z17\c\ConsoleApplication10\Debug\ConsoleApplication10.pdb (Partial PDB)
========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========

コード:

A
AB
ABC
ABCD
ABCDE
ABCDEF
ABCDEFG
ABCDEFGH
ABCDEFGHI
ABCDEFGHIJ
ABCDEFGHIJK
ABCDEFGHIJKL
ABCDEFGHIJKLM
ABCDEFGHIJKLMN
ABCDEFGHIJKLMNO
ABCDEFGHIJKLMNOP
ABCDEFGHIJKLMNOPQ
ABCDEFGHIJKLMNOPQR
ABCDEFGHIJKLMNOPQRS
ABCDEFGHIJKLMNOPQRST
ABCDEFGHIJKLMNOPQRSTU
ABCDEFGHIJKLMNOPQRSTUV
ABCDEFGHIJKLMNOPQRSTUVW
ABCDEFGHIJKLMNOPQRSTUVWX
ABCDEFGHIJKLMNOPQRSTUVWXY
ABCDEFGHIJKLMNOPQRSTUVWXYZ
続行するには何かキーを押してください . . .
これでいいと思いますね。(^^;

(Windows10、VS2017 Community 使用)
[/size]

box
記事: 2002
登録日時: 13年前

Re: c言語プログラムを作成でわかりません

#4

投稿記事 by box » 7年前

コード:

#if 0
65とか25とかマジックナンバーを書いていたり、mainの型がvoidだったりするのが
イヤなので、自分ならこう書く。絶対にこうじゃなきゃいけないことはないのは承知。
#endif

#include <stdio.h>

#define ALPHABETS (26)

int main(void)
{
    int i, j;

    for (i = 'A'; i < 'A' + ALPHABETS; i++) {
        for (j = 'A'; j <= i; j++) {
            putchar(j);
        }
        putchar('\n');
    }
    return 0;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: c言語プログラムを作成でわかりません

#5

投稿記事 by みけCAT » 7年前

オフトピック
課題の丸投げは禁止(これが課題かはわかりません)なのですが、みんなコードを投稿する流れのようなので…
ASCIIなど、アルファベットの文字コードが連続している環境用

コード:

#include <stdio.h>

int main(void) {
	int i, j;
	for (i = 'A'; i <= 'Z'; i++) {
		for (j = 'A'; j <= i; j++) {
			putchar(j);
		}
		putchar('\n');
	}
	return 0;
}
アルファベットの文字コードが連続していなくても大丈夫なバージョン

コード:

#include <stdio.h>

int main(void) {
	const char* alphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	int i, j;
	for (i = 0; alphabets[i] != '\0'; i++) {
		for (j = 0; j <= i; j++) {
			putchar(alphabets[j]);
		}
		putchar('\n');
	}
	return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

かずま

Re: c言語プログラムを作成でわかりません

#6

投稿記事 by かずま » 7年前

コード:

#include <stdio.h>
 
int main(void) {
	for (int i = 0; i < 26; printf("%.*s\n", ++i, "ABCDEFGHIJKLMNOPQRSTUVWXYZ")) ;
    return 0;
}
これは、二重ループを使っていないので、解答ではありません。

二重ループを使った変態バージョン

コード:

#include <stdio.h>
 
int main(void) {
	for (int i = 0; ++i <= 26; puts(""))
		for (int j = 0; j < i; putchar("ABCDEFGHIJKLMNOPQRSTUVWXYZ"[j++])) ;
	return 0;
}
文字コードが ASCII なら、'A'=0x41、'Z'=0x5a ですが、
EBCDIC なら、'A'=0xc1、'I'=0xc9、'J'=0xd1、'R'=0xd9、'S'=0xe2、'Z'=0xe9 です。

Math

Re: c言語プログラムを作成でわかりません

#7

投稿記事 by Math » 7年前

[訂正版]

コード:

#include <stdio.h>

int main(void)
{
	int i, j;

	for (i = 65; i <= (65 + 25); i++) {
		for (j = 65; j <= i; j++){
			printf("%c", j);
		}
		printf("\n");
	}
	return 0;
}

コード:

1>------ すべてのリビルド開始: プロジェクト:ConsoleApplication10, 構成: Debug Win32 ------
1>c1.c
1>ConsoleApplication10.vcxproj -> D:\z17\c\ConsoleApplication10\Debug\ConsoleApplication10.exe
1>ConsoleApplication10.vcxproj -> D:\z17\c\ConsoleApplication10\Debug\ConsoleApplication10.pdb (Partial PDB)
========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========

コード:

A
AB
ABC
ABCD
ABCDE
ABCDEF
ABCDEFG
ABCDEFGH
ABCDEFGHI
ABCDEFGHIJ
ABCDEFGHIJK
ABCDEFGHIJKL
ABCDEFGHIJKLM
ABCDEFGHIJKLMN
ABCDEFGHIJKLMNO
ABCDEFGHIJKLMNOP
ABCDEFGHIJKLMNOPQ
ABCDEFGHIJKLMNOPQR
ABCDEFGHIJKLMNOPQRS
ABCDEFGHIJKLMNOPQRST
ABCDEFGHIJKLMNOPQRSTU
ABCDEFGHIJKLMNOPQRSTUV
ABCDEFGHIJKLMNOPQRSTUVW
ABCDEFGHIJKLMNOPQRSTUVWX
ABCDEFGHIJKLMNOPQRSTUVWXY
ABCDEFGHIJKLMNOPQRSTUVWXYZ
続行するには何かキーを押してください . . .
いま読んでいるC言語の本はかなり詳しく解説してあり私のようなC初心者にはよくわかって最適です。
そこに”void main(void) は間違いとあり警告をだすものも多くなった”とあるがVS2017は警告はでないみたいですね。
記憶では勝手に int main(void) を生成するので ”return 0;”が出来ます。
main printf malloc などはCのキーワード(予約語)でないので(ライブラリー関数なので)
処理系依存になります。
ANSI Cの規格にはRationale(理論的根拠)という文書があり
Keep the spirit of C

Keep the language small and simple とあります。

その代わりプログラマーは全知全能であるという理念で安全性はほぼ無視されています。もともと”自分たちで使うためだけに”作られた言語だからだそうです。
[/size]

かずま

Re: c言語プログラムを作成でわかりません

#8

投稿記事 by かずま » 7年前

二重ループどころか、ループが一つもない、超変態プログラムです。

コード:

char s[27],i;
f(char*p){if(*p)s[i++]=*p,puts(s),f(p+1);}
main(){f("ABCDEFGHIJKLMNOPQRSTUVWXYZ");}

白い変人

Re: c言語プログラムを作成でわかりません

#9

投稿記事 by 白い変人 » 7年前

かずま さんが書きました:二重ループどころか、ループが一つもない、超変態プログラムです。

コード:

char s[27],i;
f(char*p){if(*p)s[i++]=*p,puts(s),f(p+1);}
main(){f("ABCDEFGHIJKLMNOPQRSTUVWXYZ");}
質問者ではありませんが、プロコンのCODE GOLFはそうやって攻めるのですね。
私は敬遠していた事もあり、CODE GOLFのノウハウはあまり無いのですが、感服しました。

返信

“C言語何でも質問掲示板” へ戻る