質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

3回答

2040閲覧

strcmp関数, strcpy関数を使って、文字列を大きい順に並べ替える

ryu72639

総合スコア14

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2018/07/15 05:05

英単語をアルファベット順になるように並べ替えるプログラムです。しかし、うまく行きません。どこに間違えがあるのでしょうか?

c

1#include <stdio.h> 2#include <string.h> 3 4int main(void) 5{ 6 int i, j, k, l, m; 7 int number; //英単語の個数 8 char eitanngo[number][34]; 9 int tmp; 10 char TMP[34]; 11 12 printf("英単語何個ですか?"); 13 scanf ("%d", &number); 14 for(j = 0; j < number; j++){ 15 printf("%d個目",j + 1); 16 scanf("%s", eitanngo[j]); 17 printf("%s\n", eitanngo[j]); 18 } 19 20 //文字の長さに並べ、連結 21 for(l = 0; l < number; l++){ 22 for(m = l+1; m < number; m++){ 23 strcmp(eitanngo[l], eitanngo[m]); 24 if (strcmp(eitanngo[l], eitanngo[m]) > 0){ 25 //printf("%s %s\n", eitanngo[l], eitanngo[m]); 26 strcpy(TMP,eitanngo[l]); 27 strcpy(eitanngo[l], eitanngo[m]); 28 strcpy(eitanngo[m], TMP); 29 } 30 } 31 } 32 printf ("連結結果 :"); 33 for(k= 0; k < number; k ++){ 34 printf("%s ", eitanngo[k]); 35 } 36 printf("\n"); 37 return 0; 38} 39 40 41 42 43 44

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

episteme

2018/07/15 22:13

なにがどのように「うまくいかない」かを説明しなさい。
guest

回答3

0

こんな漢字で、

c

1#include <stdio.h> 2#include <string.h> 3#include <stdlib.h> 4 5int main(void) { 6 int j, k; 7 int number; //英単語の個数 8 char eitanngo[100][34]; 9 10 printf("英単語何個ですか?"); 11 scanf("%d", &number); 12 for (j = 0; j < number; j++) { 13 printf("%d個目", j + 1); 14 scanf("%s", eitanngo[j]); 15 printf("%s\n", eitanngo[j]); 16 } 17 18 //文字の長さに並べ、連結 19 qsort(eitanngo, number, sizeof(eitanngo[0]), strcmp); 20 21 printf("連結結果 :"); 22 for (k = 0; k < number; k++) { 23 printf("%s ", eitanngo[k]); 24 } 25 printf("\n"); 26 return 0; 27}

投稿2018/07/15 05:43

hichon

総合スコア5737

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pepperleaf

2018/07/15 07:52

> こんな漢字で、 これで期待する結果になるでしょうが、全く、勉強にならないですね。 元のコードの怪しい個所を全てすっ飛ばしてくれました。 (座布団一枚)
guest

0

だからデバッガ使って自分でデバッグしてみようよ。

int number; //英単語の個数
char eitanngo[number][34];

またこんなことしてるし。

投稿2018/07/15 05:09

y_waiwai

総合スコア87747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

c

1include <stdio.h> 2#include <string.h> 3 4int main(void) 5{ 6 int i, j, k, l, m; 7 int number; //英単語の個数 8 char eitanngo[100][33]; 9 char TMP[100][33]; 10 11 // printf("英単語何個ですか?"); 12 scanf ("%d", &number); 13 for(j = 0; j < number; j++){ 14 // printf("%dこめ",j + 1); 15 scanf("%s", eitanngo[j]); 16 // printf("%s\n",eitanngo[j]); 17 } 18 19 //文字のアルファベット順に並べ、連結 20 for(l = 0; l < number; l++){ 21 for(m = l+1; m < number; m++){ 22 if (strcmp(eitanngo[l], eitanngo[m]) > 0){ 23 strcpy(TMP[l],eitanngo[l]); 24 strcpy(eitanngo[l], eitanngo[m]); 25 strcpy(eitanngo[m], TMP[l]); 26 } 27 } 28 } 29 // printf ("連結結果 :"); 30 for(k= 0; k < number; k ++){ 31 printf("%s", eitanngo[k]); 32 } 33 printf("\n"); 34 return 0; 35} 36 37 38 39 40

投稿2018/07/17 08:02

ryu72639

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問