C语言-5

//对两个整型数组排序,将排序结果放入一个大数组中.

void demo1 () {

    

    int array1[5];

    int array2[5];

    int array3[10];

    for (int i =0; i < 5; i++) {

        array1[i] = arc4random() %101;

        array2[i] = arc4random() %101;

    }

    for (int i =0; i < 4; i++) {

        for (int j =0; j < 4 - i; j++) {

            if (array1[j] > array1[j +1]) {

                int temp = array1[j];

                array1[j] = array1[j + 1];

                array1[j + 1] = temp;

            }

            if (array2[j] > array2[j+1]) {

                int temp2 = array2[j];

                array2[j] = array2[j + 1];

                array2[j + 1] = temp2;

            }

        }

    }

    for (int i =0; i < 10; i++) {

        if (i <5) {

            array3[i] = array1[i];

        }else array3[i] = array2[i -5];

          printf("%d ", array3[i]);

    }

}

//输入一个日期,判断是一年中的第几天(使用switch语句实现

void demo2() {

    enum month{

        一月 =1,

        二月,

        三月,

        四月,

        五月,

        六月,

        七月,

        八月,

        九月,

        十月,

        十一月,

        十二月,

        

    };

    int year =0;

    int month =0;

    int day =0;

    int total =0;

    int a =0;//记录31天的月份

    int b =0;//记录30天的月份

    int c =0;//记录是否包含二月

    printf("请输入年月日,计算这一天是这一年的第几天。\n");

    scanf("%d%d%d", &year,&month,&day);

    if (year <0 && month < 0 && month >12 & day > 31 && day <0) {

        printf("输入错误");

    }else{

            for (int i = month -1; i > 0; i--) {

                switch (i) {

                        //31天

                    case一月:

                        a++;

                        break;

                    case三月:

                        a++;

                        break;

                    case五月:

                        a++;

                        break;

                    case七月:

                        a++;

                        break;

                    case八月:

                        a++;

                        break;

                    case十月:

                        a++;

                        break;

                    case十二月:

                        a++;

                        break;

                    case二月:

                        if (day >29) {

                            printf("输入有误");

                            break;

                        }

                        //   判断是否是闰年

                        if (year %400 == 0 || (year %4 ==0 && year %100 != 0)) {

                            //闰年

                            //28天

                            c = 29;

                            break;

                        }else {

                            c = 28;

                            break;

                        }

                        //30天

                    case四月:

                        if (day >30) {

                            printf("输入有误");

                            break;

                        }

                        b++;

                        break;

                    case六月:

                        if (day >30) {

                            printf("输入有误");

                            break;

                        }

                        b++;

                        break;

                    case九月:

                        if (day >30) {

                            printf("输入有误");

                            break;

                        }

                        b++;

                        break;

                    case十一月:

                        if (day >30) {

                            printf("输入有误");

                            break;

                        }

                        b++;

                        break;

                    default:

                        printf("输入有误!!");

                        break;

                }

            }

            total = a*31 + b*30 + c + day;

            printf("是%d的第%d天", year,total);

    }

}

    

//switch 中case倒叙 不加break不需要使用循环

/*

int day = 0;

int month = 0;

int year = 0;

int total = 0;

printf("请输入年份\n");

scanf("%d", &year);

printf("请输入月份\n");

scanf("%d", &month);

printf("请输入日期\n");

int isping = 0;

scanf("%d", &day);

if(((year % 4 == 0) && (year % 100 != 0))|| (year % 400 == 0)){

    isping = 0;

}else{

    isping = 1;

}

switch (month) {

    case  12:

        if (day < 0 || day >31) {

            printf("输入有错误\n");

            break;

        }

        total += 31;

    case  11:

        if (day < 0 || day >30) {

            printf("输入有错误\n");

            break;

        }

        total += 30;

    case  10:

        if (day < 0 || day >31) {

            printf("输入有错误\n");

            break;

        }

        total += 31;

    case  9:

        if (day < 0 || day >30) {

            printf("输入有错误\n");

            break;

        }

        total += 30;

    case  8:

        if (day < 0 || day >31) {

            printf("输入有错误\n");

            break;

        }

        total += 31;

    case  7:

        if (day < 0 || day >31) {

            printf("输入有错误\n");

            break;

        }

        total += 31;

    case  6:

        if (day < 0 || day >30) {

            printf("输入有错误\n");

            break;

        }

        total += 30;

    case  5:

        if (day < 0 || day >31) {

            printf("输入有错误\n");

            break;

        }

        total += 31;

    case  4:

        if (day < 0 || day >30) {

            printf("输入有错误\n");

            break;

        }

        total += 30;

    case  3:

        if (day < 0 || day >31) {

            printf("输入有错误\n");

            break;

        }

        total += 31;

    case  2:

        if (((isping == 1) && (day < 0 || day > 29))|| ((isping == 0) && (day < 0 || day > 28))) {

            printf("输入有错误\n");

            break;

        }

        total += 28 + isping;

    case  1:

        if (day < 0 || day >31) {

            printf("输入有错误\n");

            break;

        }

        total += 31;

        total += day;

        printf("%d年%d月%d日是一年中的第%d天\n",year,month,day,total);

        break;

    default:

        printf("输入有错误\n");

        break;

}

*/

//定义一个枚举(查找英文完成),枚举名是水果,有5个枚举值(苹果,橘子,鸭梨,香蕉,菠萝);

//从键盘输入一个数,如果和苹果的枚举值相同,打印“我是苹果”,其他以此类推。

//

//(switch和枚举类型连用实现)

void demo3(){

    enum fruits{

        Apple = 1,

        Orange,

        Pear,

        Banana,

        Ananas,

    };

    int i =0;

    printf("请输入1-5之间的数\n");

    scanf("%d",&i);

    switch (i) {

        caseApple:

            printf("我是苹果");

            break;

        caseOrange:

            printf("我是橘子");

            break;

        casePear:

            printf("我是鸭梨");

            break;

        caseBanana:

            printf("我是香蕉");

            break;

        caseAnanas:

            printf("我是菠萝");

            break;

            

        default:

            printf("规则是:输入1-5之间的数");

            break;

    }

}

//编程在一个已知的字符串中找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。比如:"ni hao world”,最长单词是world。

void demo4 () {

 

 // 求最长字符串 先找出最长的串有max个字符再次遍历 找出有max个字符的串

 

 /*

 char arr[90] = "todasssy idsdsadd feedseel saaeee ";

 char a[20] = {0};

 // char b[20] = {0};

 int num = 0;

 int max = 0;

 int length =(int) strlen(arr);

 for (int i = 0; i < length+1; i++) {

 if (arr[i] != ' ' && arr[i] != '\0') {

 a[num] = arr[i];

 num++;

 }else{

 if (max < num) {

 max = num;

 //   strcpy(b, a);

 }

 num = 0;

 }

 }

 //            printf("%d %s", max, b);

 for (int i = 0; i < length+1; i++) {

 if (arr[i] != ' ' && arr[i] != '\0') {

 a[num] = arr[i];

 num++;

 }else num = 0;

 if (num == max) {

 printf("%d %s ", max,a);

 }

 

 }

 */

/*

 char  str[] = "ni hassso world";

 char t[10][10] = {0};//分解字符串存放到二维数组中

 int max_location = 0;//最长字符串的存放位置

 int max = 0;//最长的值

 //定义两个常量 用于循环解析字符串存放到二维数组中

 int j = 0, k = 0;

 for (int i = 0; i < strlen(str); i++) {

 if (str[i] == ' ') {

 j++;

 k=0;

 }else{

 t[j][k++] = str[i];

 }

 }

 //存放完成后遍历二维数组的第一层 找出最大的那一个的位置

 for (int i = 0; i < j+1; i++) {

 if (strlen(t[i]) > max) {

 max = (int)strlen(t[i]);

 max_location = i;

 }

 }

 for (int i = 0; i < j+1; i++) {

 if (max == strlen(t[i])) {

 printf("最长的字符串为:%s", t[i]);

 }

 }

 */

//没优化有两个最长字符串的情况

/*

 //    比如:"ni hao world”,最长单词是world。

 //        char a[255] = "ni dsao worl sd";

 //        int p = 0,q = 0;//后行下标和先行下标

 //        int count = 0;  //单词的字母个数

 //        int max = 0;   //最长单词的字母数

 //

 //        while (a[q] != '\0') {

 //            if (a[q] != ' ') {

 //                count++;

 //            }else{

 //                if (max <= count) {

 //                    max = count;

 //                    p = q - count;

 //                }

 //                count = 0;

 //            }

 //            q++;

 //        }

 //

 //        //如果最后一个单词后没有空格,也需要判断

 //        if (max < count) {

 //            max = count;

 //            p = q - count;

 //        }

 //        printf("最长的单词是:");

 //        for (int i = p;i < p+max ; i++) {

 //            printf("%c",a[i]);

 //       }

   */

 }

//打印空心菱形 和 实心菱形

//输入n,分别用*输出边长为n的实心菱形和空心菱形。

//例如:n = 3时,输出:

//  *

// ***

//*****

// ***

//  *

//

//  *

// * *

//*   *

// * *

//  *

void demo5(){

//打印实心菱形

    /*

        int n = 3;

        printf("请输入:\n");

        scanf("%d",&n);

        for (int i = 0; i < n-1; i++) {

            for (int j =0; j < n*2-1; j++) {

                if (j < n-i-1 || j > n+i-1) {

                    printf(" ");

                }else printf("*");

            }

    

            printf("\n");

    

        }

        for (int i = n-1 ; i >= 0; i--) {

            for (int j  = 0; j < n*2-1 ; j++) {

             if (j < n - i -1 || j > n + i-1) {

                    printf(" ");

                }else printf("*");

            }

            printf("\n");

    

        }

    

    */

    

    

//打印空心菱形

    /*

        int n = 3;

        printf("请输入:\n");

        scanf("%d",&n);

        for (int i = 0; i < n-1; i++) {

            for (int j =0; j < n*2-1; j++) {

                if (j == n-i-1 || j == n+i-1) {

                    printf("*");

                }else printf(" ");

            }

    

            printf("\n");

    

        }

        for (int i = n-1 ; i >= 0; i--) {

            for (int j  = 0; j < n*2-1 ; j++) {

                if (j == n - i -1 || j == n + i-1) {

                    printf("*");

                }else printf(" ");

            }

    

            printf("\n");

    

        }

     */

//打印实心菱形

    /*

     int n = 3;

     int t = 0;

     //printf("请输入:\n");

     // scanf("%d",&n);

     for (int i = 0; i < n*2-1; i++) {

        for (int j =0; j < n*2-1; j++) {

            t = i > (n- 1) ? n * 2 - i-2 :i;

            if (j < n-t-1 || j > n+t-1) {

            printf(" ");

        }else printf("*");

     }

     

     printf("\n");

     

     }

//     打印空心菱形

     // int n=3;

     for (int i=1; i<=2*n-1; i++) {

        for (int j=1; j<=2*n-1; j++) {

            int t=i>3?2*n-i:i;

            if(j==(n+1-t)||j==(n+t-1)){

            printf("*");

        }else{

            printf(" ");

            }

        }

        printf("\n");

     }

     

     */

    

    

}

//

void demo6(){

//    //上三角

//    //行数  空格数   星号数 换行

//    //1     2       1       1

//    //2     1       3       1

//    //3     0       5       1

//    //空格与行数的关系是:空格 = n(边长) -行数

//    //星号与行数的关系是:星号 = 行数*2 - 1

//    //换行始终是一个

//    int n = 0;

//    printf("请输入一个边长,我们将为你打印n边菱形:");

//    scanf("%d",&n);

//    for (int i = 1; i <= n; i++) {

//        //打印空格

//        for (int j = 0; j < n - i; j++) {

//            printf(" ");

//        }

//        //打印星号

//        for (int k = 0; k < 2 * i - 1; k++) {

//            printf("*");

//        }

//        //打印换行

//        printf("\n");

//    }

//    //下三角

//    //行数  空格数   星号数 换行

//    //1     1       3       1

//    //2     2       1       1

//    //空格与行数的关系是:空格 = 行数

//    //星号与行数的关系是:星号 = (n - 行数)*2 - 1

//    //换行始终是一个

//    for (int i = 1; i < n; i++) {

//        //打印空格

//        for (int j = 0; j < i; j++) {

//            printf(" ");

//        }

//        //打印星号

//        for (int k = 0; k < (n - i) * 2 - 1; k++) {

//            printf("*");

//        }

//        //打印换行

//        printf("\n");

//    }

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值