这个“C语言”程序错在哪里?

来源:百度知道 编辑:UC知道 时间:2024/05/21 08:48:01
这个“C语言”程序错在哪里?

这个程序运行后无法达到预期目的,但我怎么检查都检查不出错误。

哪位高人能够指点一下?

程序目的:
输入两个字符串,比较两个字符串的大小,并输出较小字符串的序号〔1、2〕

程序主题:

#include<stdio.h>
#include<string.h>

main()
{
int i,n[3];
char a[3][1001];
clrscr();

for(i=1;i<=2;i++)
{
for(n[i]=1;n[i]<=1000;n[i]++)
{
a[i][n[i]]=getchar();
if(a[i][n[i]]=='\n') { a[i][n[i]]='\0'; break; }
}
printf("\n");
}
printf("\n");

if(strcmp(a[1],a[2])<0) printf("1 xiao!");
if(strcmp(a[1],a[2])>0) printf("2 xiao!");
if(strcmp(a[1],a[2])==0) printf("Equal!");

getch();
}

逐步检查:clrscr();是来自于库文件:<conio.h> 应在头文件中写出。。

你的错误是:
for(n[i]=1;n[i]<=1000;n[i]++)
应改为 :for(n[i]=0;n[i]<=1000;n[i]++)
数组应该从第一个开始赋值,你空着a[0]赋值 系统会把自己默认的(具体什么我就不知道了)
我自己运行了一遍:改之后的可以运行。。。。

直接return strcmp(str1,str2);就Over了。呵呵

int i,n[3];
for(n[i]=1;n[i]<=1000;n[i]++) n【3】一共才三个
后面有加了《=1000 数组越位了

for(n[i]=1;n[i]<=1000;n[i]++)
{
a[i][n[i]]=getchar();
if(a[i][n[i]]=='\n') { a[i][n[i]]='\0'; break; }
} 不知你这些代码要表这什么意思?你让 n[i]++ 做什么?

这里应当是
for(j=0;j<3;j++){
for(i=0;i<1001;i++){
a[j][i]=getchar();
if(a[j][i]='\n'){
a[j][i]='\0';
break;
}
}
}