| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 659 人关注过本帖
标题:函数调用
只看楼主 加入收藏
sd375055
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-3-2
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
函数调用
在函数中进行 10个学生成绩从高到低排名, 再改进函数, 进行 n个学生成绩从高到低排名, 排名方式根据函数的style参数进行,如style为‘a'按升序排,style为 ' d ' 按降序排。 ( a:ascending 升,d:descending 降)
编写多个不同函数,使之能实现不同的排序算法(3种以上),再编写一个通用输出函数,(要求用函数指针做参数)能分别打印不同排序算法的结果。
步骤、方法与要求
1.    函数中进行10个学生成绩从高到低排名 sort(int a[10])
2.    进第一步的函数为sort(int a[],int n),进行n个学生成绩从高到低排名,
3.    进第二步的函数为sort(int a[],int n, char style), 将n个学生成绩从高到低排名,排名方式根据sort()函数的style参数进行,如style为‘a’按升序排,style为’d’按降序排。
(a:ascending  升,d:descending 降)
4.    编写4个排序函数,实现4种不同的排序算法(用冒泡法进行升序排序,用冒泡法进行降序排序,选择法进行升序排序,选择法进行降序排序等),函数返回指向排好序的数组的指针。
5.    写通用输出函数 show(int  *(* fun)(a[ ], int n )),其中a[]为成绩数组,n为数组元素个数。
6.    写主函数调用以上函数。
下面是我按照题目编写的,高手帮忙修改一下:
#include <stdio.h>
int sort (int a[10])
{
    int i=0,j=0,t;
    for(i=0;i<10;i++)
    {
        for(j=0;j<9;j++)
        {
            if(a[i]>a[j])
            {
                t=a[j];
                a[j]=a[i];
                a[i]=t;
            }
        }
    }
    return 0;
}
int sort1(int array[],int n)
{int i,j,k,t;
 for(i=0;i<n;i++)
{k=i;
for(j=i+1;j<n;j++)
if(array[j]>array[k])k=j;
t=array[k];
array[k]=array[i];
array[i]=t;
}
 return 0;
}
int sort2(int array[],int n, char style)
{int i,j,k,t;
 if(style=='d')
 for(i=0;i<n;i++)
{k=i;
for(j=i+1;j<n;j++)
if(array[j]>array[k])k=j;
t=array[k];
array[k]=array[i];
array[i]=t;
}
 else if(style=='a')
     for(i=0;i<n;i++)
{k=i;
for(j=i+1;j<n;j++)
if(array[j]<array[k])k=j;
t=array[k];
array[k]=array[i];
array[i]=t;
}
     return 0;
}
int bubblesorta(int array[],int n)
{
int i,j,m,*p;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i;j++)
if(array[j]>array[j+1])
{m=array[j];
array[j]=array[j+1];
array[j+1]=m;
}
}
 p=array;
return p;
}

int bubblesortd(int array[],int n)
{
int i,j,m,*p;
for(i=0;i<=n+1;i++)
{
for(j=0;j<=n+1;j++)
if(array[j]<array[j+1])
{m=array[j];
array[j]=array[j+1];
array[j+1]=m;
}
}
 p=array;
return p;
}

int selectionsorta(int array[],int n)
{int i,j,k,t,*p;
 for(i=0;i<n;i++)
{k=i;
for(j=i+1;j<=n;j++)
if(array[j]<array[k]);
t=array[k];
array[k]=array[i];
array[i]=t;
}
 p=array;
return p;
}

int selectionsortd(int array[],int n)
{int i,j,k,t,*p;
 for(i=0;i<=n+1;i++)
{k=i;
for(j=i+1;j<=n+1;j++)
if(array[j]>array[k])k=j;
t=array[k];
array[k]=array[i];
array[i]=t;
}
 p=array;
return p;
}
void main()
{
    int a[10],i;
    printf("输入10个学生的成绩\n");
    for(i=0;i<10;i++)
    {printf("a[%d]= ",i);
    scanf("%d",&a[i]);
    }
    printf("\n");
    printf("原始学生成绩顺序\n");
    for(i=1;i<=9;i++)
        printf("%5d ",a[i]);
    printf("\n");
    printf("排列好的成绩\n");
    sort(a);
    for(i=0;i<10;i++)
    {
        printf("%d ",a[i]);
    }
   
怎样才能实现上面的运行。
搜索更多相关主题的帖子: 函数 
2010-03-09 09:12
dydsdyds
Rank: 6Rank: 6
来 自:Java
等 级:侠之大者
帖 子:217
专家分:457
注 册:2010-2-14
收藏
得分:5 
这么长……

c语言刚开一学期,就换开VB...
2010-03-10 20:09
孤独_浪子
Rank: 2
等 级:论坛游民
帖 子:52
专家分:60
注 册:2010-1-13
收藏
得分:5 
可以定义一个通用函数fun(int data[],int (*funcation)(int arr[]))来调用那几个函数
LZ的main()函数少了个"}"
2010-03-10 23:45
ouyangouyang
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:273
专家分:579
注 册:2009-10-8
收藏
得分:5 
my god

多少恨, 昨夜梦魂中。 还似旧时游上苑, 车如流水马如龙; 花月正春风!
2010-03-13 13:43
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:5 
用得着这么长么 看到就头晕了
2010-03-13 14:03
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
#include "stdafx.h"
int x;
char ch;

void print(int b[],int i)//输出
{
    int j;
    printf("你想要的\n");
    for(j=0;j<=i;j++)
    printf("%d\n",b[j]);
}
void mao(int b[],int i)//冒泡法
{
    int j,m,n;
    for(j=0;j<i;j++)
        for(m=0;m<i-j;m++)
                if(b[m]>b[m+1])
                {
                    n=b[m];
                    b[m]=b[m+1];
                    b[m+1]=n;
                }
}
void chose(int b[],int i)//选择法
{
    int j,m,n,t;
    for(j=0;j<i;j++)
    {
        m=j;
        for(n=j+1;n<i-1;n++)
            if(b[n]<b[m])m=n;
        if(m!=j)
        {
            t=b[j];b[j]=b[m];b[m]=t;
        }
    }
}
void haha()//判断
{

loop:
    printf("想用冒泡按1选择按0\n");
    scanf("%d",&x);
    if(x!=1&&x!=0)
    {    printf("你敢耍我?输入0或1 understand?\n");
    goto loop;
    }
loop1:
    printf("想升天按a;下地狱按 d\n");
    getchar();
    ch=getchar();
    if((ch!='a')&&(ch!='d'))
    {
        printf("你敢耍我?输入a或d understand?\n");
        goto loop1;
    }
}
void change(int b[],int i)//换顺序
{
    int c[100];
    int j,k;
    j=i;
    for(k=0;k<=i;k++)
    {    c[k]=b[j];j--;
    }
    for(k=0;k<=i;k++)
        b[k]=c[k];
}

void main()
{
    int n,*p;
    int i;
    int a[100];
    printf("How many student:");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        printf("输入第%d个学生的成绩:",i+1);
        scanf("%d",&a[i]);
    }
    p=a;
    n=n-1;
    print(p,n);
    haha();
    if(x)
        mao(p,n);
    else
        chose(p,n);
    if(ch=='d')
        change(p,n);
    print(p,n);
}

拿去改吧

[ 本帖最后由 hahayezhe 于 2010-3-13 16:15 编辑 ]
2010-03-13 16:13
快速回复:函数调用
数据加载中...
 
   



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

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