注册 登录
编程论坛 C语言论坛

求大佬解答 这题如何解答?

秃头少女 发布于 2019-11-01 20:18, 2280 次点击
编写一个函数,其功能是对数组中的各元素按升序进行排列,并在主程序中调用该函数,使程序能对手动输入的十个数字进行排序并按顺序输出,要求函数定义写在主程序之后,在主程序中需要对函数进行声明。
7 回复
#2
林月儿2019-11-01 20:27
作业贴?
#3
秃头少女2019-11-01 20:41
回复 2楼 林月儿
是的_(:з」∠)_
虽然知道这样不太好。。。。。。
#4
纯蓝之刃2019-11-01 21:00
程序代码:
#include <stdio.h>

void prime(int *a,int n);
int main()
{
    int a[10]={0};
    int i=0,n=10;
    printf("请输入10个数字:\n");
    for(i=0;i<10;i++)
    {
       printf("请输入第%d个数字:",i+1);
       scanf("%d",&a[i]);
    }
    prime(a,n);

    for(i=0;i<n;i++)
    {
        printf("%d ",a[i]);
    }

    return 0;
}

void prime(int *a,int n)
{
    int i=0,j=0,tmp;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n-i-1;j++)
        {
            if(a[j]>a[j+1])
            {
                tmp=a[j+1];
                a[j+1]=a[j];
                a[j]=tmp;
            }
        }
    }
}


[此贴子已经被作者于2019-11-1 21:07编辑过]

#5
秃头少女2019-11-01 21:09
回复 4楼 纯蓝之刃
非常感谢!!!
#6
林月儿2019-11-01 22:12
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
    void sort(int arr[],int len);
    int size=0,arr[10];
    char str[20];
    while(size<10){
        printf("pls input value%d:",size+1);
        scanf("%s",str);
        int val=atoi(str);
        int len=strlen(str);
        if(val==0&&(len>1||str[len-1]!='0')){
            printf("\n[error]:%s is not a number!\n\n",str);
            size--;
        }
        arr[size]=val;
        size++;
    }
    printf("before sorted:\n");
    for(int i=0;i<size;i++){
        printf("%d\t",arr[i]);
    }
    printf("\nafter sorted:\n");
    sort(arr,size);
    for(int i=0;i<size;i++){
        printf("%d\t",arr[i]);
    }
    return 0;
}
void sort(int arr[],int len){
    for(int i=0;i<len;i++){
        for(int j=0;j<len-1-i;j++){
            if(arr[j]>arr[j+1]){
                arr[j]=arr[j]+arr[j+1];
                arr[j+1]=arr[j]-arr[j+1];
                arr[j]=arr[j]-arr[j+1];
            }
        }
    }
}
#7
mm17468864432019-11-02 16:39
回复 4楼 纯蓝之刃
大佬可以说一下每条代码是什么意思吗
#8
纯蓝之刃2019-11-02 19:02
#include <stdio.h>

void prime(int *a,int n);
int main()
{
    int a[10]={0};                        
    int i=0,n=10;
    printf("请输入10个数字:\n");
    for(i=0;i<10;i++)
    {
       printf("请输入第%d个数字:",i+1);
       scanf("%d",&a[i]);                    //输入变量
    }
    prime(a,n);                               //将数组首地址和个数传递给函数

    for(i=0;i<n;i++)
    {
        printf("%d ",a[i]);                    //打印数组
    }

    return 0;
}

void prime(int *a,int n)
{
    int i=0,j=0,tmp;
    for(i=0;i<n;i++)                //经典冒泡算法
    {
        for(j=0;j<n-i-1;j++)
        {
            if(a[j]>a[j+1])
            {
                tmp=a[j+1];
                a[j+1]=a[j];
                a[j]=tmp;
            }
        }
    }
}
1