View Code of Problem 105

#include<stdio.h>//PQ
#include<string.h>
main()
{
	char a[10000],b[10000];
	int m,n,c,d,i,j;
	while(1)
	{
		scanf("%s",a);//输入字符串
		m=strlen(a);//测量字符串的长度(该字符串为标准的单词拼写或者是结束程序的‘END’)
		if(m==3&&a[0]=='E'&&a[1]=='N'&&a[2]=='D')//如果字符串的长度是3,并且是END的话,跳出,结束程序
			break;
		else//否则
		{
			scanf("%d",&d);//输入有几组数据要测量
			c=0;
			for(i=0;i<d;i++)
			{
				scanf("%s",&b);//输入字符串
				n=strlen(b);//测量字符串长度
				if(n<m)//如果输入的字符串比标准的短
				{
					for(j=0;j<m;j++)//挨个比较
					{
						if(a[j]!=b[j])//遇到不同的就跳出,同时输出漏掉的那个字母
						{
							printf("%d %d insert %c\n",i+1,j+1,a[j]);
							break;
						}
					}
				}
				else if(n>m)//如果输入的字符串比标准的长
				{
					for(j=0;j<n;j++)//挨个比较
					{
						if(a[j]!=b[j]&&j!=n-1)//遇到不同的就跳出,同时输出多出的那个字母
						{
							printf("%d %d delete %c\n",i+1,j+1,b[j]);
							break;
						}
						else if(j==n-1)
							printf("%d %d delete %c\n",i+1,j,b[j]);
					}
				}
				else if(n==m)//如果输入的字符串与标准的字符串长度相等
				{
					for(j=0;j<n;j++)//挨个比较
					{
						if(a[j]!=b[j])//遇到不同的就跳出,同时输出错误的那个字母
						{
							printf("%d %d change %c\n",i+1,j+1,a[j]);
							break;
						}
						else//如果当前字母与标准的相同,c加一
							c=c+1;
					}
					if(c==n)//如果c和标准的字符串的长度相同的话,说明输入字符串和标准字符串相同,单词正确,输出ok
						printf("%d OK!\n",i+1);
					c=0;
				}
			}
		}
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 105