みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

配列の参照渡し

以下のC言語のプログラムを教えてください。 お願いします。

(1)標準入力から文字列(2 文字以上)を入力し,文字数を計上すると共に,入力された文
字列の逆順に入れ替える処理を実現せよ.なお,以下の要件を満たしたプログラムを作
成すること.
・ 入力された文字列は,char 型の配列(要素数50)で受け取ること
・ 文字数を計上するcount 関数(引数:配列のアドレス,戻り値:文字数)を定義
し,main 関数より呼び出すこと
・ 文字列を逆順に入れ替えるreverse 関数(引数:配列のアドレス,戻り値:無し)
を定義し,main 関数より呼び出すこと
・ 標準出力の処理は,main 関数で記述すること
【プロトタイプ宣言】
int count(char *str);
void reverse(char *str);
【実行結果】
文字列を入力してください(2 文字以上)
apple
文字数 = 5
入れ換え前
apple
入れ換え後
elppa
$
----------------------------------------------------------------------------
(2)char 型の配列(要素数50)を2 つ宣言し,標準入力から2 つの文字列を入力せよ.
そして,格納した字列を入れ替える関数(swapstr 関数)を作成し,入れ替え前と入れ替
え後の配列内の値(文字列)を配列名とともに標準出力するプログラムを作成せよ.
【プロトタイプ宣言】
void swapstr(char *str1, char *str2);
【実行結果】
2 つの文字列を入力してください
apple
strawberry
入れ換え前
配列str1 = apple
配列str2 = strawberry
入れ換え後
配列str1 = strawberry
配列str2 = apple

マルチメディアファイルは削除されたか見つかりません。

投稿日時 - 2014-05-19 01:29:25

QNo.8601264

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

問題そのものに突っ込むが, 「配列のアドレス」を受ける引数の型が char * というのは納得できないなぁ.

投稿日時 - 2014-05-19 10:48:29

ANo.1

関数嫌いだから、関数化は任せるw。

#include<stdio.h>
#define N 50

int main(){

char a[N];
char b[N];
int i,j;

printf("文字列を入力してください(2 文字以上)\n");
scanf("%s",&a);

i=0;
while(a[i]!='\0'){
i++;
}

printf("文字数 =%d\n",i);

printf("入れ換え前\n%s\n",a);

for(j=0;j<i;j++){
b[j]=a[i-j-1];
}
b[j]='\0';

printf("入れ換え後\n%s\n",b);

}

#include<stdio.h>
#define N 50

int main(){

char a[N];
char b[N];
char c;
int i;

printf("2 つの文字列を入力してください\n");
scanf("%s",&a);
scanf("%s",&b);

printf("入れ換え前\n");
printf("str1=%s\n",a);
printf("str2=%s\n",b);

for(i=0;i<50;i++){
c=a[i];
a[i]=b[i];
b[i]=c;
}

printf("入れ換え後\n");
printf("str1=%s\n",a);
printf("str2=%s\n",b);

}

投稿日時 - 2014-05-19 10:47:17

あなたにオススメの質問