C言語で、このプログラムは文字配列 char str[N]; (Nは任意)の中にある特定の文字target_charが含まれているか否かを返す関数
int IsExist(char str[], char target_char, int first_index, int last_index);
を以下にしたがって再帰的に定義しているものです。
str[first_index] 〜 str[last_index]の中に特定の文字があるかどうかを探す際に、
前半str[first_index] 〜 str[(first_index+last_index)/2]を調べ、無ければ後半のstr[(firs_index+last_index)/2+1]〜str[last_index]を調べる。
もし見つかれば 1 を返し、無ければ 0 を返す。
このプログラムを<string.h>を使わずに、すなわちstrlenやstrnlenを使わずに出力したいのですが、一例としてどのように書けばいいでしょうか。
#include<stdio.h>int IsExist(char str[],char target_char,int first_index,int last_index); int main(){ char str[64]; char c; int rc; printf("検索文字は?"); scanf("%c",&c); printf("文字列"); scanf("%s",str); rc = IsExist(str,c,0,(int)strlen(str)); printf("結果発表:%d",rc); } int IsExist(char str[],char target_char,int first_index,int last_index){ if(last_index<=first_index+1){ if(str[first_index]==target_char || str[last_index]==target_char) return 1; else return 0; } if(IsExist(str,target_char,first_index, (first_index+last_index)/2)==1) return 1; else return IsExist(str,target_char, (first_index+last_index)/2+1,last_index); }
回答3件
あなたの回答
tips
プレビュー