首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言-初学者!

2013-12-02 
C语言---菜鸟求助!!!!!这是原题:编写函数实现将数组元素按从小到大的顺序排序,主函数从键盘输入10个整数存

C语言---菜鸟求助!!!!!
这是原题:编写函数实现将数组元素按从小到大的顺序排序,主函数从键盘输入10个整数存入数组,调用函数后输出数组的元素。

这是我写的代码。求大神帮忙修改一下!

#include<stdio.h>
#define n 10
void sort(int score[n],int n);
main()
{
int i,n;
int score[n];
printf("please enter the score:");
for(i=0;i<n;i++)
{
scanf("%d",&score[i]);
}
sort(score,n);
printf("the result is:");
for(i=0;i<n;i++)
{
printf("%d,%d",i,score[i]);
}
return 0;
}
void sort(int score[n],int n)
{
int i, j,term,n;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(a[j]<a[i])
{
term=a[j];
a[j]=a[i];
a[i]=term;
}
}
}
}
C语言
[解决办法]
有何问题????
[解决办法]

#include<stdio.h>
#define n 10

void sort(int score[n]);
int main()
{
int i;
int score[n];
printf("please enter the score:");
for (i = 0; i<n; i++)
{
scanf("%d", &score[i]);
}
sort(score);
printf("the result is:");
for (i = 0; i<n; i++)
{
printf("%d,%d\n", i, score[i]);
}
return 0;
}
void sort(int a[n])
{
int i, j, term;
for (i = 0; i<n; i++)
{
for (j = i + 1; j<n; j++)
{
if (a[j]<a[i])
{
term = a[j];
a[j] = a[i];
a[i] = term;
}
}
}
}

[解决办法]
稍微修改了一下啊

#include <stdio.h>
#define n 10

void my_sort(int *a); // n定义了宏,可以不需要传参数了的
int main()
{
    int i;
    int score[n];
    printf("please enter the score: \n");
    for (i = 0; i<n; i++)
    {   
        scanf("%d", &score[i]);
        getchar(); // 吃掉每次输入的回车符
    }   
    my_sort(score);
    printf("the result is:\n");
    for (i = 0; i<n; i++)
    {   
        printf("%d,%d\n", i, score[i]);
    }   
}
void my_sort( int *a) 
{
    int i, j , temp;
    for(i =0; i< n ;i ++) 
    {   
        for(j =0 ; j < n-i-1; j++)
        {   
            if( a[j] > a[j+1])
            {   
                temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }   
        }   
    }   
}

[解决办法]
引用:
二楼跟三楼的代码都行,可我就讷闷了,我的怎么就不行了呢?百思不得其解。我感觉我的代码跟楼上的两位基本一样。


正因为基本一样才帮你改改。要是基本都不行那就懒得理你了。
[解决办法]
引用:
二楼跟三楼的代码都行,可我就讷闷了,我的怎么就不行了呢?百思不得其解。我感觉我的代码跟楼上的两位基本一样。

你函数形参写的有问题啊,void sort(int score[n],int n);大小n,这样是不行的
数组作参数传递的时候和指针是一样的!
下面的几个试试
void sort(int score[],int n);
void sort(int *score,int n)
------解决方案--------------------


看着你的排序方法不像冒泡哦,但你想用冒泡的排序方法。
可以看一下三楼的冒泡排序
[解决办法]
在值传递方式中,在说明和定义函数时,要在数组参数的尾部加上一对方括号([]),调用函数时只需将数组的地址(即数组名)传递给函数

热点排行