C语言 怎么输入abc和abcd一样塞

来源:百度知道 编辑:UC知道 时间:2024/09/20 02:42:04
#include<stdio.h>
#include<math.h>
#define M 10
#define N 10
main()
{char s1[M],s2[N];
int i=0,j=0,k,m=0,n=0,q=0,l;
printf("enter the first array:");
gets(s1);
printf("enter the second array:");
gets(s2);
{while(s1[i]!='\0')
i=i++;}
{while(s2[j]!='\0')
j=j++;}
l=1;
while(l)
{if(i>j)
{{for(k=0;k<j;k++)
n=s1[k]-s2[k]+n;
for(k=j+1;k<i;k++)
n=s1[k]+n;}
if(n>0)printf("s1 is bigger than %d s2",n);
if(n<0) printf("s1 is smaller than %d s2",abs(n));
else printf("s1 equivaient s2");
l=0;}
else if(i<j)
{{for(k=0;k<i;k++)
q=s1[k]-s2[k]+q;
for(k=i+1;k<j;k++)
q=s2[k]+q;}
if(q>0)printf("s1 is bigger than %d s2",q);
if(q<0)printf("s1 is smaller than %d s2",abs(q));
else printf("s1 equivaient s2"

首先,你那while(l)就是没用的,直接写下面的就是了,变量 l 也不用
主要问题出在
for(k=0;k<j;k++)
n=s1[k]-s2[k]+n;
for(k=j+1;k<i;k++)
n=s1[k]+n;}
中for(k=j+1;k<i;k++) 这里,上条语句中for(k=0;k<j;k++) 表示k=j后就不做下面的循环,而for(k=j+1;k<i;k++) 恰好是从k=j+1开始,所以k=j时的这个字母就没有计算,所以按你原来的程序,s1如果和s2字母数不等,那你的程序就会少比较一个字母,下面同理
还有一个问题就是
if(n>0)printf("s1 is bigger than %d s2",n);
if(n<0) printf("s1 is smaller than %d s2",abs(n));
else printf("s1 equivaient s2");
应该这样写
if(n>0)
printf("s1 is bigger than %d s2",n);
else
if(n<0)
printf("s1 is smaller than %d s2",n);
else
printf("s1 equivaient s2");
如果按你原来的写如果n>0.那么就会显示s1 is bigger than %d s2和s1 equivaient s2两句话。还有就是要注意格式,这样会增加程序可读性,还有我不明白你的abs(n)是什么意思,我觉得应该就是n
还有个问题你没有发现,当i<j时且s1<s2时也会显示s1>s2的结果.问题出现在
for(k=i+1;k<j;k++)
q=s2[k]+q;} 中q=s2[k]+q这里,应该是q=q - s2[k];
这个程序还可以