| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 469 人关注过本帖
标题:对于 C语言子函数语法错误
只看楼主 加入收藏
芒果君
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2015-11-29
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:8 
对于 C语言子函数语法错误
我对主函数传入数组地址到子函数;
用指针数组排序;
然后输出!
但是在排序中报错,for前有语法错误,我怎么都搞不懂!
搜索更多相关主题的帖子: C语言 
2015-11-29 16:34
芒果君
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2015-11-29
收藏
得分:0 
程序代码:
#include "stdio.h"
#include "stdlib.h"  
//dot1:
int main()
{
    int i,l,wl,z,a[100];       //内存浪费了。。。 
//    system("title ") ; 
int aput(int a[100]);       //子函数声明 
int aput(int a[100]);
    printf("请问你要输入多少个代表官职的数据:\n");
    scanf("%d",&l);
    for(i=0;i<l;i++)
    { 
    printf("那么请输入第 %d  个代表官职的数据:",i+1);    //由于I从0开始 
    scanf("%d",&a[i]); 
    }
    exchange1(&a);                    //引用比较算法排序 
    aput(a);
    printf("\n请问你有几个王者,我将对王者排位:\n");
    scanf("%d",&wl);
    if(l+wl>=100)
    {
        printf ("亲:抱歉数据总个数大于一百,无法排位。\n");return 0; 
    /*    printf ("************************\n");
        printf("\t重新运行")
        printf("************************\n");
        goto dot1;*/
    }         
    for(i=0;i<wl;i++)
    {
        printf("请输入第%d个王者的官职数据:\n",i+1);
        scanf("%d",&a[l+i+1]);     
    }    
    exchange1(&a);
    aput(a);    
}

 exchange1(int *a[100])  //子函数-比较算法排序
    int i,f,j;    
       for(i=0;a[i]!='\0';i++)
        {
             f=i;
                  for(j=i+1;a[j]!='\0';j++)
                 {
                   if(a[f]>a[j])
                      {
                       f=j;
                      }
                 }
              if(f!=i)
              {
              *a[f]=*a[i]+*a[f];
              *a[i]=*a[f]-*a[i];
              *a[f]=*a[f]-*a[i];
              }
       }
int aput(int a[100])         //子函数--a数组输出 
{
    int i;
    printf("排序后:\n")
    for(i=0;a[i]!='\0';i++)
        {
            printf("%d\t",a[i]);
        }     
    printf("\n");
}


[此贴子已经被作者于2015-11-29 16:38编辑过]

2015-11-29 16:34
芒果君
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2015-11-29
收藏
得分:0 
有人呢吗?
2015-11-29 17:13
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
你的函數定義真是醉了,你的返回值呢?而且說明一次就行了

一片落叶掉进了回忆的流年。
2015-11-29 18:51
追公交的少年
Rank: 2
等 级:论坛游民
帖 子:29
专家分:20
注 册:2015-11-26
收藏
得分:0 
&a是取了整个数组的地址,&a+1是一下子跳跃整个数组的长度了。
a和&a的值一样,但是类型不一样
2015-11-30 09:26
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:20 
没有太细研究这些代码   仅仅从编译角度出发  修正了一部分代码  请参考

程序代码:
#include <stdio.h>
#include <stdlib.h>  

//函数的声明最好放在这里
void aput(int * a);  //int aput(int a[100]);       //子函数声明 //这里的int a[100]没啥意义
void exchange1(int * a); //exchange1(&a);         //引用比较算法排序 //这里也声明的完全不对

int main()
{
    int i,l,wl,z,a[100];       //内存浪费了。。。 
    //    system("title ") ; 
    //int aput(int a[100]);       //子函数声明 
    //int aput(int a[100]);
    printf("请问你要输入多少个代表官职的数据:\n");
    scanf("%d",&l);
    for(i=0;i<l;i++)
    { 
        printf("那么请输入第 %d  个代表官职的数据:",i+1);    //由于I从0开始 
        scanf("%d",&a[i]); 
    }
    //exchange1(&a);                    //引用比较算法排序 
    aput(a);
    printf("\n请问你有几个王者,我将对王者排位:\n");
    scanf("%d",&wl);
    if(l+wl>=100)
    {
        printf ("亲:抱歉数据总个数大于一百,无法排位。\n");return 0; 
        /*    printf ("************************\n");
        printf("\t重新运行")
        printf("************************\n");
        goto dot1;*/
    }         
    for(i=0;i<wl;i++)
    {
        printf("请输入第%d个王者的官职数据:\n",i+1);
        scanf("%d",&a[l+i+1]);     
    }    
    exchange1(a);
    aput(a);    
}
void exchange1(int *a)  //子函数-比较算法排序
{
    int i,f,j;    
    for(i=0;a[i]!='\0';i++)   //这里用 '\0 ' 来判断结束 风马牛不相及的东西
    {
        f=i;
        for(j=i+1;a[j]!='\0';j++)  //这里用 '\0 ' 来判断结束 风马牛不相及的东西
        {
            if(a[f]>a[j])
            {
                f=j;
            }
        }
        if(f!=i)
        {
            a[f]=a[i]+a[f];   //以下三行代码寻址方式不正确
            a[i]=a[f]-a[i];
            a[f]=a[f]-a[i];
        }
    }
}
void  aput(int * a)         //子函数--a数组输出 
{
    int i;
    printf("排序后:\n");  //这里缺少分号
    for(i=0;a[i]!='\0';i++)
    {
        printf("%d\t",a[i]);
    }     
    printf("\n");
}

DO IT YOURSELF !
2015-11-30 13:20
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
你的代码及逻辑思维  可修正之处太多   你想实现你心中的目标代码  其路还漫漫长啊

DO IT YOURSELF !
2015-11-30 13:24
芒果君
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2015-11-29
收藏
得分:0 
谢谢版主大人!
2015-11-30 17:01
芒果君
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2015-11-29
收藏
得分:0 
好多地方我都改来改去!
2015-11-30 17:01
快速回复:对于 C语言子函数语法错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034593 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved