菜鸟问C语言问题!着急!
程序(1)是书本上的答案(运行过,准确),程序(2)是我根据书上的要求自己编写的程序,编译链接没有错误。为了追踪函数large的返回值,我程序(2)的main函数中申请了变量s。程序(1)#include <stdio.h>
void main()
{
int large(int x,int y);
int a[10],b[10],i,n=0,m=0,k=0;
printf("enter array a:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
printf("enter array b:\n");
for(i=0;i<10;i++)
scanf ("%d",&b[i]);
printf("\n");
for(i=0;i<10;i++)
{ if(large(a[i],b[i])==1)
n=n+1;
else
if(large(a[i],b[i])==0)
m=m+1;
else
k=k+1;
}
printf("a[i]>b[i] %d times\na[i]=b[i] %d times\na[i]<b[i] %d times\n",n,m,k);
if(n>k)
printf("array a is larger than array b\n");
else
if(n<k)
printf("array a is smaller than array b\n");
else
printf("array a is equal to array b\n");
}
large(int x,int y)
{ int flag;
if(x>y)
flag=1;
else
if(x<y)
flag=-1;
else
flag=0;
return(flag);
}
程序(2)
#include<stdio.h>
void main()
{
int large(int x,int y);
int i;
int m,n;
int s;
int a[3];
int b[3];
printf("input shu zu A:");
printf("\n");
for(i=0;i<3;i++)
{
printf("a[%d]=",i);
scanf("%d",&m);
}
printf("input shu zu B:");
printf("\n");
for(i=0;i<3;i++)
{
printf("b[%d]=",i);
scanf("%d",&n);
}
m=0;
n=0;
for(i=0;i<3;i++)
{
s=large(a[i],b[i]);
if(large(a[i],b[i])==1)
m++;
if(large(a[i],b[i])==0)
n++;
}
printf("%d",m);
printf("\n");
printf("%d",n);
printf("\n");
if(m>n)
{
printf("shu zhu A da yu B");
printf("\n");
}
if(m<n)
{
printf("shu zhu A xiao yu B");
printf("\n");
}
if(m==n)
{
printf("xiang deng");
printf("\n");
}
}
int large(int x,int y)
{
int z;
if(x>y)
z=1;
if(x<y)
z=0;
if(x==y)
z=2;
return(z);
}
在运行过程中,我定a[0]=1;a[1]=1;a[2]=1;b[0]=1;b[1]=1;b[2]=1;
程序(2)的运行结果应该是先输出三次变量s的值,然后再输出变量m和n的值;最后输出数组a和数组b的大小。
按照我想得到的结果,应该是
2
2
2
0
0
xiang deng
实际得到的结果是
2
0
0
0
2
shu zu a xiao yu shu zu b
后来我改变数组a和数组b的值,发现结果都如上实际结果!心情沉重啊!