指摘してくれると助かります...
//文字列を二つ読み込むaiueoとiueoa、aiueoとueoaiだったら一致と出力、aiueoとiueoのように切れていたりしたら不一致と出力する
//アルゴリズム概要
/*二つの文字列を読み込む
この時点で文字数が違うなら不一致
片方の文字列について、先頭を最後尾の後ろに回す、空いた先頭を詰めるように全体前進
これともう片方の文字列を比較、真なら一致だめなら全てのループを越え不一致を出力
*/
#include<stdio.h>
#include<string.h>//strcmp
int main(){
int i,j,k=0,s1max;
char s1[1000],s2[1000],s_cmp[1000];
for(i=0;i<999;i++){//ヌル文字のスペースを取っておきます
s1[i]='1';
s2[i]='1';
s_cmp[i]='1';
}//全体を初期化します
for(i=0;s1[i-1]!= '2';i++)scanf("%c",&s1[i]);//二つの文字列を読み込みます
for(j=0;s2[j-1]!='2';j++)scanf("%c",&s2[j]);
s1[i-1]='1';//ターミネーター的立ち位置の2を1にして消します
s2[j-1]='1';
if(i!=j-1){//二つ目の文字列を入力する際改行します。s2は改行コード分一つ多くカウントされるので調整します。
printf("不一致\n");//この時点で文字数が違うなら不一致と表示します
return 0;
}
s1max=i-1;//s1に格納された文字列の長さです
for(i=0;i<1000;i++){///////////////////////////////////////////
s1[s1max+i]=s1[i];//s1[0]を入力した文字列の後ろにある要素に代入し
s1[i]='1';//移動した要素の跡に'1'を代入
for(j=0;j<1000;j++){
if(s1[j]=='1')continue;//'1'だったら無視して
s_cmp[k]=s1[j];//'1'以外だったらs_cmp配列に代入していく
k++;//s_cmp配列の添字をカウントしていく
}
if(strcmp(s_cmp,s2)==0){//もし一致したらstrcmpは0を返すので一致と出力し終了する
printf("一致\n");
return 0;
}
for(i=0;i<1000;i++)s_cmp[i]='1';//使用済み配列を初期化
k=0;
}
printf("不一致\n");//以上のループを突破して来たら不一致と出力
return 0;
}