先打个广告哈哈哈 牛客网练编程题 不错不错哦
image

冒泡排序 必须必须必须会
#include<stdio.h>

void sort(int arr[],int n){
    //外层循环
    for (int i = 0; i < n-1; ++i) {
        int flag=1;  //假设flag=1 就是已经排序好的
        //内层循环
        for (int j = 0; j < n-1-i; ++j) {
            //判断升序 赋值
			//如果是降序的话 把> 改成<即可
            if(arr[j]>arr[j+1]){
                int tem=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=tem;
                //如果进行了元素交换 就说明没有排序好
                flag=0;
            }
        }
        if(flag==1){
            break;
        }
    }
}
int main(){
//实现冒泡排序(升序)
// n个元素 外层需要n-1趟  内层n-1-i次比较
int arr[]={9,7,5,4,1,3,2,8};

//第二种情况 假设给的数组已经排好序了 这样再去调用函数 进行两两对比 造成浪费 运用一个flag判断
//    int arr[]={1,2,3,4,5,7,8,9};
int n =sizeof(arr)/sizeof(arr[0]);

//arr数组传参时 传递过去的是arr首元素的地址 &arr[0]
sort(arr,n);
    for (int i = 0; i < n; ++i) {
        printf("%d\t",arr[i]);
    }
}
//键盘随机输入 6 个整数,将这些数据保存到数组中,获取数组中的最小值和最大值并输出 
//还是离不开冒泡排序
    int arr[6]={};
    for (int i = 0; i < 6; ++i) {
        printf("请输入数字:");
        scanf("%d",&arr[i]);
    }
    int n =sizeof(arr)/sizeof(arr[0]);

    for (int i = 0; i < n-1; ++i) {
        for (int j = 0; j < n-1-i; ++j) {
            //判断升序 赋值
            if(arr[j]>arr[j+1]){
                int tem=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=tem;
            }
        }
}
    printf("最大值为:%d\n最小值为:%d",arr[5],arr[0]);
 //某公司按照季度和每个季度对应3个月份统计的数据如下:单位(万元)
    //第一季度:22,66,44
    //第二季度:77,33,88
    //第三季度:25,45,65
    //第四季度:11,66,99
    //请使用二维数组保存这些数据,并计算公司年销售总额
	//注意二维数组的行可以省略 列不能省略
    int aaa[][3]={22,66,44,77,33,88,25,45,65,11,66,99};
    //计算二维数组行数
    int a=sizeof(aaa)/sizeof(aaa[0]);
    //计算二维数组列数
    int b = sizeof(aaa[0])/sizeof(aaa[0][0]);
    int sum=0;
    for (int i = 0; i < a; ++i) {
        for (int j = 0; j < b; ++j) {
            sum+=aaa[i][j];
        }
    }
    printf("%d",sum);
//键盘随机输入 6 个整数,将这些数据保存到数组中,先将数组中元素按照格式输出,然后再将数组元素反转,最后按照格式再次输出数组元素
int bbb[6]={};
    for (int i = 0; i < 6; ++i) {
        scanf("%d",&bbb[i]);
    }
    int z=sizeof(bbb)/sizeof(bbb[0]);

    printf("[");
    for (int i = 0; i < z; ++i) {
        printf("%d",bbb[i]);
        if(i!=z-1){
            printf(", ");
        }
    }
    printf("]\n");

    printf("[");
    for (int i = z-1; i >= 0; --i) {
        printf("%d",bbb[i]);
        if(i!=0){
            printf(", ");
        }
    }
    printf("]");

注意注意
一维数组数= sizeof(array)/sizeof(array[0]);
二维数组行数 = sizeof(array)/sizeof(array[0]);
二维数组列数 = sizeof(array[0])/sizeof(array[0][0]);

posted on 2024-04-22 20:59  蒸饺  阅读(55)  评论(0)    收藏  举报