先打个广告哈哈哈 牛客网练编程题 不错不错哦
冒泡排序 必须必须必须会
#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("]");
标签:练习题,arr,int,++,34,牛客,数组,printf,sizeof From: https://www.cnblogs.com/gaodiyuanjin/p/18151544注意注意
一维数组数= sizeof(array)/sizeof(array[0]);
二维数组行数 = sizeof(array)/sizeof(array[0]);
二维数组列数 = sizeof(array[0])/sizeof(array[0][0]);