C程序的错误,不知道为什么

来源:百度知道 编辑:UC知道 时间:2024/06/09 07:41:26
#include<stdio.h>
int main()
{
int n,m,i,hehe[101];
void charu(int,int,int[]);
void print(int[],int);
while(scanf("%d%d",&n,&m)!=EOF && (n!=0 || m!=0))
{
for(i=0;i<n;i++)
scanf("%d",&hehe[i]);
charu(m,n,hehe);
print(hehe,n);
}
return 0;
}

void charu(int m,int n,int haha[])
{
int i;
int k;
for(i=0;i<n;i++)
{
if(m<haha[i])
break;
}
for(k=n;k>=i;k++)
haha[k+1]=haha[k];
haha[i]=m;
}

void print(int heihei[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%d ",heihei[i]);
printf("%d\n",heihei[n]);
}
这个程序运行后说我的几个变量没有声明,可是我明明声明了呀,为什么会出错?
错了~~ 程序可以运行了,可是没有输出内容呀?

#include<stdio.h>
int main()
{
int n,m,i,hehe[101];
void charu(int,int,int[]);
void print(int[],int);
while(scanf("%d%d",&n,&m)!=EOF && (n!=0 || m!=0))
{
for(i=0;i<n;i++)
scanf("%d",&hehe[i]);
charu(m,n,hehe);
print(hehe,n);
}
return 0;
}

void charu(int m,int n,int haha[])
{
int i;
int k;
for(i=0;i<n;i++)
{
if(m<haha[i])
break;
}
for(k=n;k>=i;k++) //这里发生死循环了k比i已经大了,还要k继续增大,死到这了,但由于k增大到溢出后,变成了副数,又跳出了循环,后面执行的结果天知道是什么。
haha[k+1]=haha[k];
haha[i]=m;
}

void print(int heihei[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%d ",heihei[i]);
printf("%d\n",heihei[n]);
}

有些编译器比较郁闷,你最好把函数都在前面定义一下
#include<stdio.h>
void print(int heihei[],int n);
像这样ok

你正确输入的话就会有的