鱼C论坛

 找回密码
 立即注册
查看: 914|回复: 8

[已解决]程序错误

[复制链接]
发表于 2020-10-20 16:53:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
sub  (int *s,int n)
{
        int i,j=0;
        for(i=0;i<n;i++)
                if(*(s+i)%2!=0)        s[j+1]=s[i];
        n=j;
}
int main()
{
        int a[10]={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[i]);
        return 0;
}
这个程序一直显示sub  (int *s,int n)有错,请问是哪里错了呢?
最佳答案
2020-10-20 19:51:33
已经调试好了,程序如下:

  1. // 本程序选出数组中奇数并输出

  2. #include <stdio.h>
  3. int sub  (int *s,int n)
  4. {
  5.         int i,j=0;
  6.         for(i = 0;i < n;i++)
  7.         {
  8.             if(*(s + i) % 2 != 0)    // 如果是奇数,则选出来重新存入数组
  9.             {
  10.                 s[j] = s[i];
  11.                 j++;
  12.             }
  13.         }
  14.         n = j;
  15.         return n;                     // 返回选出奇数的个数
  16. }

  17. int main()
  18. {
  19.         int i,n=10,m;
  20.         int a[10]={11,12,13,14,15,16,17,18,19,20};
  21.         m = sub (a,n);
  22.         for(i = 0;i < m;i++)
  23.         {
  24.             printf("%d,",a[i]);
  25.         }
  26.         printf("\n");
  27.         return 0;
  28. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-20 17:04:54 | 显示全部楼层
程序没有语法错误,因为你定义的函数里没有加花括号,我没有调试,请说明程序的目的是什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-20 17:08:48 | 显示全部楼层
乐乐学编程 发表于 2020-10-20 17:04
程序没有语法错误,因为你定义的函数里没有加花括号,我没有调试,请说明程序的目的是什么

我也不知道什么目的,就考试题,具体哪里错了呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-20 17:33:49 | 显示全部楼层
sub函数前面加个void  ,我这边编译运行正常
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-20 17:44:19 | 显示全部楼层
hvon 发表于 2020-10-20 17:33
sub函数前面加个void  ,我这边编译运行正常

加了为什么就对了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-20 17:46:51 | 显示全部楼层
自定义函数前面要声明 是否有返回类型 void 表示不返回  你也可以返回其他类型的  如int 或string ,函数return时就要带这个返回值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-20 18:39:26 | 显示全部楼层
定义函数不完整,没说明究竟带不带返回值。不带返回值用void,带返回值按类型用。比如想返回整型就int,相应的,在函数最后也要return一个int值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-20 18:45:57 | 显示全部楼层
不好意思,临时有事,离开了。

你不知道函数的目的,我猜测是要求输出奇数,我现在帮按这个思路调试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-20 19:51:33 | 显示全部楼层    本楼为最佳答案   
已经调试好了,程序如下:

  1. // 本程序选出数组中奇数并输出

  2. #include <stdio.h>
  3. int sub  (int *s,int n)
  4. {
  5.         int i,j=0;
  6.         for(i = 0;i < n;i++)
  7.         {
  8.             if(*(s + i) % 2 != 0)    // 如果是奇数,则选出来重新存入数组
  9.             {
  10.                 s[j] = s[i];
  11.                 j++;
  12.             }
  13.         }
  14.         n = j;
  15.         return n;                     // 返回选出奇数的个数
  16. }

  17. int main()
  18. {
  19.         int i,n=10,m;
  20.         int a[10]={11,12,13,14,15,16,17,18,19,20};
  21.         m = sub (a,n);
  22.         for(i = 0;i < m;i++)
  23.         {
  24.             printf("%d,",a[i]);
  25.         }
  26.         printf("\n");
  27.         return 0;
  28. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 04:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表