help me!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#include <stdio.h>#include <string.h>
#include <stdlib.h>
//程序功能 识别 含有01的0和1的串 串只接受 0和1不能输入任何其他字符, 比如0101010101或者11111000000等等形式
//程序流程 1.输入0和1串 2.从串i位置取一个字符 3.判断字符是0,1 并返回0或者1 4。查询下一个状态值存放位置在数组中的那一行
//参数status 记录数组元素的行 参数 num_iput 确定数组的列 数组a[3][2]存放的是状态的转换
// 状态表 0 1
// p0 P1 P0
// p1 P0 P2
// p2 P2 P2
int take_num_input(char c)
{
if(c=='0')
return 0;
if(c=='1')
return 1;
}
char get_one_char(char *a,int i)
{
return *(a+i);
}
int query_status(int j,int i,int (*a)[2])
{
return a[j][i];
}
int question_for_user()
{
char c;
do{
printf("continue search y or n: ");
c=getchar();
}while(c!='y'||c!='n');
if(c=='y')
return 1;
else
return 0;
}
int main()
{
char str[100];
char c;
int i=0,status=0,num_input,search_str_times=0;
int a[3][2]={1,0,
0,2,
2,2};
printf("please input the string:\n");
gets(str);
while((c=get_one_char(str,i))!='\0'){
num_input=take_num_input(c);
status=query_status(status,num_input,a);
if(status==2){
search_str_times++;
if(question_for_user()){
status=0;
}
else
break;
}
i++;
}
if(search_str_times!=0)
printf("string we search for times is:%d \n the string in the str position is %d\n",search_str_times,i-2);
else
printf("this str is not our want!\n");
}
求助问题
int question_for_user()
{
char c;
do{
printf("continue search y or n: ");
c=getchar();
}while(c!='y'||c!='n'); //------------>这个循环并未按照我的想法 输入 y或者 n 就结束循环 求解释为什么
if(c=='y')
return 1;
else
return 0;
}