码迷,mamicode.com
首页 > 其他好文 > 详细

新人求乱刀砍死

时间:2014-07-20 10:46:27      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:c

将两个数组排序,合并到另外一个数组中,并且合并之后的数组也是有序的(贞姐不让用冒泡,所以撑血写的老长!)。


int main(int argc, const char * argv[])
{
//定义两个大小为10数组并随机分配100内的任意一个值;
    int str1[10] = {0};
    int str2[10] = {0};
    int a4 = 0;//用来存储数组str1中的中间数
    int b4 = 0;//用来存储数组str2中的中间数
    printf("两个数组分别为:\n");
    for (int i = 0; i < 10; i++) {
        str1[i] = arc4random() % 100 ;
        printf("%-2d ",str1[i]);//产生一个随机数组str1并打印
    }
    printf("\n");
    for (int i = 0; i < 10; i++) {
        str2[i] = arc4random() % 100 ;
        printf("%-2d ",str2[i]);//产生一个随机数组str2并打印
    }
    printf("\n");
    for (int i = 0; i < 9; i++) {         //对数组str1进行冒泡排序
        for (int j = 0; j < 9 - i; j++) {
            if (str1[j] > str1[j +1]) {
                a4 = str1[j];
                str1[j] = str1[j + 1];
                str1[j + 1] = a4;
            }
        }
    }
    for (int i = 0; i < 9; i++) {        //对数组str2进行冒泡排序
        for (int j = 0; j < 9 - i; j++) {
            if (str2[j] > str2[j +1]) {
                b4 = str2[j];
                str2[j] = str2[j + 1];
                str2[j + 1] = b4;
            }
        }
    }
    printf("排序后的结果分别是:");
    printf("\n");
    for (int i = 0; i < 10; i++) {
        printf("%-2d ",str1[i]);
    }
    printf("\n");
    for (int i = 0; i < 10; i++) {
        printf("%-2d ",str2[i]);
    }
    printf("\n");                        //输出排序后的结果,并换行
    //对两个数组进行合并
    int str3[20] = {0};              //用于存放新的生成数组
    int a = 0,b = 0,c = 0;         //分别记录用于3个数组里元素的第几位
    if (str1[9] < str2[9]) {        //判断两个数组最后一个数的大小,此if语句用于str1数组最后一个值最大时的新数组的产生及排序
        while (a < 10) {
            if (str1[a] < str2 [b]) {
                str3[c] = str1[a];
                a++;
                c++;
            } else {
                str3[c] = str2[b];
                b++;
                c++;
            }
        }
        while (a == 10 && c < 20) {
            str3[c] = str2[b];
            b++;
            c++;
        }
    }
    if (str1[9] > str2[9]) {  //此if语句用于str2数组最后一个值最大时的新数组的产生及排序
        while (b < 10) {
            if (str1[a] < str2 [b]) {
                str3[c] = str1[a];
                a++;
                c++;
            } else {
                str3[c] = str2[b];
                b++;
                c++;
            }
        }
        while (b == 10 && c < 20) {
            str3[c] = str1[a];
            a++;
            c++;
        }
    }
    printf("产生的新数组是: ");
for (int i = 0; i < 20; i++) {
    printf("%d ",str3[i]);
    }
        return 0;
}

新人求乱刀砍死

标签:c

原文地址:http://rc5225.blog.51cto.com/9167885/1440359

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!