求一道C语言程序的编程:随机产生10个二位整数,要求将这10个数顺序输出

如题所述

/*
 * vim:tabstop=4,shiftwidth=4
 * ============================================================
 *       
 *       Filename:  sort.c
 *    Description:  随机产生10个二位整数,并将这10个数顺序输出 
 *        Version:  1.0
 *        Created:  2015/6/12 21:00:00
 *       Revision:  none
 *       Compiler:  gcc V3.4.5
 *   Organization:  Copyright (c) 2015, ZT
 *
 * ============================================================
 */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define CAP 10    //宏定义数组的大小
#define MAX 90 //宏定义区间的最大值

//随机产生10个数
int* get_data(int a[])
{
srand(time(NULL));
int i = 0;
for(i=0; i < CAP; i++)
{
a[i]=rand() % MAX + 10 ;//随机数的区间[10~99]
}
return a;
}

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

//冒泡排序
void bubble_sort(int *data, int size)
{
    int i=0,j=0;
    for(i=0; i<size-1; i++)
    {
        int flag = 1;//表示已经有序
        for(j=0; j<size-1-i; j++)
        {
            if(data[j] > data[j+1])
            {
                int temp = data[j];
                data[j] = data[j+1];
                data[j+1] = temp;
                flag = 0;
            }
        }
        if(flag)
        {
            break;
        }
    }
}

int main()
{
int a[CAP] = {0};
int input = 0;
print(get_data(a));
printf("Will you sort?(Y/N)");
scanf("%c",&input);
if(input == 'Y' || input == 'y')
{
bubble_sort(a, CAP);
print(a);
}
else
{
printf("退出程序!\n");
}
return 0;
}

写程序时注意要模块化,不要全部写在主函数中,希望对你有所帮助!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-30
#include <stdio.h>
#include <stdlib.h >
#include <time.h>

bool randKey = true;

int getRandNum()
{
if( randKey) //为了防止出现错误,所以产生随机种子的函数只能执行一次
{
randKey = false; //执行一次后将开关关闭
srand((unsigned)time(0)); //产生种子
}

return rand(); //调用rand()产生随机数返回
}

int main()
{
int a[10] ={0};
int i,j;

for(i=0;i<10;i++)
{
a[i] = getRandNum()%90 +10; //先产生0-89然后加上10就可以得到10到99
printf("%d ",a[i]);
}

for(i=0;i<10;i++) //冒泡排序法
{
for(j=9;j>i;--j)
{
if(a[j]<a[j-1])
{
int temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
}
}
printf("\n");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}

printf("\n");

return 0;
}
第2个回答  推荐于2018-04-26
/* 此程序采用了冒泡排序
C语言产生随机数的方法:
1、一般加入引用后,直接就可以用rand();但这种方法产生的数全是一样的,称为伪随机数;
2、引用中加入#include <stdlib.h>
#include <time.h>
然后用srand((unsigned)time(0));按时间产生一个种子数;
再调用rand()就每次都不一样的值!
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define S 10
int main(){
int a[S],i,j,t;
char c;
srand((int)time(0));
for (i=0;i<S;i++)
{a[i]=rand();
printf("a[%d]=%d\n",i,a[i]);
}
printf("Will you sort?(Y/N)");
scanf("%c",&c);
if (c=='Y'||c=='y')
{for (j=0;j<S-1;j++)
for (i=0;i<S-1-j;i++)
if (a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("排序后的数:\n");
for (i=0;i<S;i++)
printf("a[%d]:%d\n",i,a[i]);
}
return 0;
}本回答被提问者和网友采纳
第3个回答  2011-12-30
#include "stdio.h"
#include "stdlib.h"
#include "time.h"

void main()
{
int a[10],i,j;
srand( (unsigned)time( NULL ) );
for(i=0;i<10;i++)
{
a[i]=rand()%90+10;
printf("%d ",a[i]);
}
printf("\n");
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(a[j]>a[j+1])
{
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
}
第4个回答  2011-12-30
上网上找一下 排序的算法 要用嵌套循环 把里面的数组赋值改成随机数 随机数获取是一个函数 。
基本实现如下
定义一个 10 个数的数组
随即数 给每个数组的项赋值
运用冒泡排序法排序
用循环输出数组。