问题是:为什么单词you会出现在结果中?本人用了一个循环来判断它啊

C语言 码拜 9年前 (2016-04-09) 840次浏览
/*请编制函数DelWord()分别按行删除空格、标点符号以及10个不区分大小写的英文单词(you,for,your,on,no,if,the,in,to,all),
余下的单词倒置后按顺序重新存入数组xx中。*/
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
char WORD[10][10]={"you","for","your","on","no","if","the","in","to","all"};
char xx[][50]={"you are a student.,","He am NOT a  student."};
int maxline=2;
void DelWord()
{
	int i,j,k,m,len,s,t;
	char ww[20],yy[20],line[80];
	for(i=0;i<maxline;i++)
	{
		m=0;
		line[0]=0;
		len=strlen(xx[i]);
		for(j=0;j<=len;j++)
			if(isalpha(xx[i][j]))
				ww[m++]=xx[i][j];
			else
			{
				ww[m]=0;
				if(m)
				{
				for(k=0;k<10;k++)
					if(strcmpi(ww,WORD[k])==0) break;
				if(k>=10)
				{
					s=0;
					for(t=m-1;t>=0;t--)
						yy[s++]=ww[t];
					yy[s]=0;
					strcat(line,yy);
					m=0;
				}
				}
			}
		strcpy(xx[i],line);
	}
}
void main()
{
	int i;
	DelWord();
	for(i=0;i<maxline;i++)
		printf("%s\n",xx[i]);
}
解决方案

5

好长啊,本人调试一下吧。
是只是 you 么,其它的那个单词有好用的么,假如其它的也没有好用的就要考虑语法问题了。
假如只是you 就要看看you有啥特殊的了,除了是第一个没看出有啥特殊的。
建议在  if(strcmpi(ww,WORD[k])==0) break; 位置,把比较用的两个字符串打印出来看看是不是你想要的,就应该能找到问题了。

10

代码功能归根结底不是别人帮本人看或讲解或注释出来的;而是被本人静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生本人领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

10

 #include <stdio.h> 
2   #include <ctype.h>                                                                                                                                                                                       
  1 #include <string.h>
  2  
  3 char WORD[10][10]={"you","for","your","on","no","if","the","in","to","all"};
  4 char xx[][50]={"you are a student.,","He am NOT a  student."};
  5  
  6 int maxline=2;     
  7  
  8 void DelWord()     
  9 {
 10     int i,j,k,m,len,s,t;
 11     char ww[20], yy[20], line[80];
 12     
 13     for(i=0;i<maxline;i++)
 14     {
 15     |   m = 0;     
 16     |   line[0] = 0;
 17     |   len = strlen(xx[i]);
 18     |   for(j = 0; j <= len; j++)
 19     |   |   if(isalpha(xx[i][j]))
 20     |   |   |   ww[m++] = xx[i][j];
 21     |   |   else
 22     |   |   {
 23     |   |   |   ww[m] = 0;
 24     |   |   |   if(m) { 
 25     |   |   |   |   for(k=0;k<10;k++)
 26     |   |   |   |   |   if(strcmp(ww,WORD[k]) == 0)
 27     |   |   |   |   |   |   break;
 28     |   |   |   |   if(k >= 10)
 29     |   |   |   |   {
 30     |   |   |   |   |   //puts(ww);
 31     |   |   |   |   |   s=0;
 32     |   |   |   |   |   for(t=m-1;t>=0;t--)
 33     |   |   |   |   |   |   yy[s++]=ww[t];
 34     |   |   |   |   |   yy[s]=0;
 35     |   |   |   |   |   strcat(line,yy);
 36     |   |   |   |   |   m=0;
 37     |   |   |   |   }   
 38     |   |   |   |   m = 0;    //add this sentence
 39     |   |   |   }  
 40     |   |   }   
 41     |   strcpy(xx[i],line);
 42     }   
 43 }   
 44 int main(void)     
 45 {
 46     int i;         
 47     DelWord();     
 48     
 49     for(i=0;i<maxline;i++)
 50     |   printf("%s\n",xx[i]);
 51     
 52     return 0;      
 53 }   

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明问题是:为什么单词you会出现在结果中?本人用了一个循环来判断它啊
喜欢 (0)
[1034331897@qq.com]
分享 (0)