程序错误
#include <stdio.h>sub(int *s,int n)
{
int i,j=0;
for(i=0;i<n;i++)
if(*(s+i)%2!=0) s=s;
n=j;
}
int main()
{
int a={11,12,13,14,15,16,17,18,19,20},n=10,i;
sub (a,n);
for(i=0;i<n;i++)
printf("%d,",a);
return 0;
}
这个程序一直显示sub(int *s,int n)有错,请问是哪里错了呢? 程序没有语法错误,因为你定义的函数里没有加花括号,我没有调试,请说明程序的目的是什么 乐乐学编程 发表于 2020-10-20 17:04
程序没有语法错误,因为你定义的函数里没有加花括号,我没有调试,请说明程序的目的是什么
我也不知道什么目的,就考试题,具体哪里错了呢 sub函数前面加个void,我这边编译运行正常 hvon 发表于 2020-10-20 17:33
sub函数前面加个void,我这边编译运行正常
加了为什么就对了? 自定义函数前面要声明 是否有返回类型 void 表示不返回你也可以返回其他类型的如int 或string ,函数return时就要带这个返回值 定义函数不完整,没说明究竟带不带返回值。不带返回值用void,带返回值按类型用。比如想返回整型就int,相应的,在函数最后也要return一个int值。
不好意思,临时有事,离开了。
你不知道函数的目的,我猜测是要求输出奇数,我现在帮按这个思路调试 已经调试好了,程序如下:
// 本程序选出数组中奇数并输出
#include <stdio.h>
int sub(int *s,int n)
{
int i,j=0;
for(i = 0;i < n;i++)
{
if(*(s + i) % 2 != 0) // 如果是奇数,则选出来重新存入数组
{
s = s;
j++;
}
}
n = j;
return n; // 返回选出奇数的个数
}
int main()
{
int i,n=10,m;
int a={11,12,13,14,15,16,17,18,19,20};
m = sub (a,n);
for(i = 0;i < m;i++)
{
printf("%d,",a);
}
printf("\n");
return 0;
}
页:
[1]