c语言 程序设计 插入排序

程序功能:简化的插入排序,输入一个正整数 n(01)设计两项功能选择:插入排序和退出。
(2)main主函数完成数据的输入与插入成功后数据的输出
(3)数组a的作用保存n个整数,数组a定义成全局变量

怎么感觉之前做过了呢。变量使用全局

#include <stdio.h>
int n=0;
int a[10];
int insert(int x)
{
    int i=0,j=0;
    for(i=0;i<n;i++)
    {
        if(x<a[i])
        {
            for(j=n;j>i;j--)
                a[j] = a[j-1];
            break;
        }
    }
    a[i] = x;
    n++;
    return 1;
}
int main()
{
    int i,x;
    printf("输入数组大小:");
    scanf("%d",&n);
    printf("输入%d个递增整数:",n);
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    printf("输入要插入的整数:");
    scanf("%d",&x);
    insert(x);
    for(i=0;i<n;i++)
        printf("%d ",a[i]);
}
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7444398
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:输入一个数组a,将其中的n个整数按相反的顺序存放
  • 除此之外, 这篇博客: 牛客网刷题C语言 输入一个正整数N,输出N的阶乘(大数运算)中的 输出 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 复制

    24
    120
    1307674368000

    #include <stdio.h>
    int main()
    {
        int a[20001];//储存每一位所得到的数 
        int temp,digit,n,i,j=0;//temp每次的得数   digit每次得数的位数  
        scanf("%d",&n);
        a[0]=1;//从1开始乘 
        digit=1;//位数从第一位开始 
        for(i=2;i<=n;i++)
        {
            int num=0;
            for(j=0;j<digit;j++) 
            {
                temp=a[j]*i+num;//将一个数的每一位数都分别乘以i, 
                a[j]=temp%10;//将一个数的每一位数利用数组进行储存
                num=temp/10;
            }
            while(num)//判断退出循环后,num的值是否为0 
            {
                a[digit]=num%10;//继续储存 
                num=num/10;
                digit++;
            }
        }
        for(i=digit-1;i>=0;i--)//倒序输出每一位 
            printf("%d",a[i]);
        printf("\n");
        return 0;
    }

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632