(1)キーボードから文字列を入力し、文字列sに格納する
(2)文字列sを逆順に並べ替えたものを文字列tに格納する
(3)文字列sと文字列tが同一であるかどうかを比較し、その結果を画面表示する
という処理を行なうプログラムなんですけど・・・。ちなみにs,tの要素の数は50です。
また、これもstrlen,strcmp関数の使用は不可となっています。
入力した文字列を逆順表示するにはデクリメントを使えばできますか?
また入力した文字列を逆順表示した文字列を比較した際、同じなら「同一の文字列」、
異なるなら「異なる文字列」と分岐して表示する場合ifの()の中にはどう書けばいいですか?
文字列の中身を反転させるには
Re:もう1つ問題が・・・
もしstringの標準関数を使わないで、というのなら
これでどうでしょうか?
上記
while(s==t && i<=len)//同じかどうか比較する。
という部分はsの要素とtの要素を比較しています。
iがlen+1になるまでループが続いたら、配列要素全部が同じだったということです。
これでどうでしょうか?
#include <stdio.h> int main() { int i=0,len;//文字列の長さを格納するlen char s[50],t[50]; printf("Input a sentence. ->\n");//文章入力を促す scanf("%s",s);//入力文字を格納 while(s!='\0')//sにはいっている文字が終端記号になるまでiを数える i++; len=i-1 , i=0;//\0の手前までの数がほしいからi-1を長さlenに代入 while(i<=len){//文字列の長さだけループさせる t=s[len-i];//tは0から、sはその逆から代入させる。 i++; } t='\0';//tに逆の順番で格納した。最後には終端記号をいれる。 i=0; while(s==t && i<=len)//同じかどうか比較する。 i++; if(i==len+1)//文字列の数だけループがされていたら、最後まで同じだったということ printf("2つの文字列は一致しています。\n"); else printf("2つの文字列は一致していません。\n"); printf("1: %s\n",s);//表示 printf("2: %s\n",t); return 0; }
上記
while(s==t && i<=len)//同じかどうか比較する。
という部分はsの要素とtの要素を比較しています。
iがlen+1になるまでループが続いたら、配列要素全部が同じだったということです。