C语言习题老出错!望高手调试出来,谢谢!!(共两题)给出基本思路可追加分

#define M 100
void arrout(int *,int);
int arrin(int *);
main(int argc, char *argv[])
{
int s[M],k;
k=arrin(s);
arrout(s,k);
}
arrin(int *a)
{
int i,x;
i=0;
scanf("%d",&x);
while(x>=0)
{
*(a+i)=x;
i++;
scanf("%d",&x);
}
return i;
}
void arrout(int *a,int n)
{
int i;
for(i=0;i<n;i++)
printf(((i+1)%5==0)?"%4d\n":"%4d",*(a+i));
printf("\n");
}

#include<stdio.h>
#include<stdlib.h>
#define M 50
#define N 10
getdata(int *s)
{
int i;
// for(i=0;i<M;i++)
// s[i]=random(10);
}
stat(int *a,int *c)
{
int i;
for(i=0;i<N;i++)
c[i]=0;
for(i=0;i<M;i++)
c[a[i]]++;
}
outdata(int *c)
{
int i;
for(i=0;i<N;i++)
printf("%d : %d\n",i,c[i]);
}
main()

{
int a[M],c[N];
getdata(a);
stat(a,c);
printf("Output the result: \n");
outdata(c);
}
这是习题册上的原题.确保录入都正确,但就是出错.先说谢谢了!

给你指语法错误吧,没时间仔细读了。
第一个,首先没包含stdio.h,其次arrin函数无类型定义。更正如下
#include <stdio.h>
#define M 100
void arrout(int *,int);
int arrin(int *);
void main(int argc, char *argv[])
{
int s[M],k;
k=arrin(s);
arrout(s,k);
}
int arrin(int *a)
{
int i,x;
i=0;
scanf("%d",&x);
while(x>=0)
{
*(a+i)=x;
i++;
scanf("%d",&x);
}
return i;
}
void arrout(int *a,int n)
{
int i;
for(i=0;i<n;i++)
printf(((i+1)%5==0)?"%4d\n":"%4d",*(a+i));
printf("\n");
}
可编译通过。
第二题
不得不说你,所有函数都不加类型,这是什么习惯!赶紧改,根深蒂固改不过来了就麻烦了。
随机数不是这么用的,更正如下
#include<stdio.h>
#include<stdlib.h>
#define M 50
#define N 10
void getdata(int *s)
{
int i;
for(i=0;i<M;i++)
s[i]=rand()%10;
}
void stat(int *a,int *c)
{
int i;
for(i=0;i<N;i++)
c[i]=0;
for(i=0;i<M;i++)
c[a[i]]++;
}
void outdata(int *c)
{
int i;
for(i=0;i<N;i++)
printf("%d : %d\n",i,c[i]);
}
void main()

{
int a[M],c[N];
getdata(a);
stat(a,c);
printf("Output the result: \n");
outdata(c);
}
编译通过
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-03-18
第一个程序是可以的,就是只能输入数字,不然就会定格,没接收输入
跳出输入要输负数

第二个程序时没错的
// for(i=0;i<M;i++)
// s[i]=random(10);
这两个前面的//撤掉,调试一下看看

出什么错误,把出错的提示列出来,才能知道是什么问题

我这边调试没问题

个人浅见,不知道能不能帮助你
相似回答
大家正在搜