dポイントプレゼントキャンペーン実施中!

以下の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

※添付画像が削除されました。

A 回答 (2件)

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

    • good
    • 0

関数嫌いだから、関数化は任せる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);

}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!