数组——C语言

80 阅读2分钟

数组

数组:批量定义同一个类型的变量

从键盘上输入16个数字,计算它们的平均数,并输出

#include <stdio.h>
int main(){
	int arr[5];
	
	int len = sizeof(arr)/sizeof(int); //计算数组的长度
	printf("%d\n", len);
	
	for(int i=0;i<=len-1;i++){
		scanf("%d",&arr[i]);
	}
	
	double total = 0;
	for(int i=0;i<len-1;i++){
		total+=arr[i];
	}
	
	printf("%f", (total)/len);
}

image.png

排序

1.交换数组中两个元素的值!

image.png

#include <stdio.h>
int main(){
	int arr[5] = {5,3,2,6,4}; 
	/*
	 排序:2,3,4,5,6 
	 1.交换数组中两个元素的值!
	 {5,3,2,6,4} 
	 把下标为0的元素,和下标为1的元素交换一下位置?{3,5,2,6,4} 
	*/
	int temp = arr[0]; // temp = 5;
	
	arr[0] = arr[1];  //arr[0] = 3;
	
	arr[1] = temp; //arr[1] = 5
	 
	printf("%d\n", arr[0]);
	printf("%d", arr[1]);
        }

image.png

  1. 通过比较相邻元素的大小,并交换,把最大的值放在数组后面
#include <stdio.h>
int main(){
	int arr[5] = {4,3,5,6,2}; 
	// 2. 通过比较相邻元素的大小,并交换,把最大的值放在数组后面  
	for(int i=0;i<4;i++){
		for(int j = 0;j<4;j++){
			if(arr[j]>arr[j+1]){
				int temp = arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=temp;
		}
	}
}
	
	for(int i=0;i<5;i++){
		printf("%d",arr[i]);
	}	
}

image.png

上面是教程,下面是比上面高级的

image.png

#include <stdio.h>
int main() {
	// 从键盘输入5个数,从小到大排序,输出
	int arr[5];
	// 1 2 3 5 4
        for(int i=0;i<5;i++){
            scanf("%d",&arr[i]);
        }
        
        // 通过一个for循环,比较相邻的两个元素,做交换
        // 把最大的元素放到数组的最后一个位置
        
        for(int i=0;i<4;i++){
            //假设没有交换
            int isSwitch = 0;
            
            for(int j=0;j<4-i;j++){//做交换
                // j,j+1
                if(arr[j]>arr[j+1]){
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
				
                    isSwitch = 1; // 有交换 
            }
        }
	// 如果一次交换都没有发生,说明已经有序啦,就不用再循环了 
	if(isSwitch == 0){
		break;
	}
	
	for (int k=0;k<5;k++){
            printf("%d",arr[k]);
        }
        printf("\n");
    }
}

image.png

练习:从键盘上输入10个数字,并对他们进行排序(从小到大排序),再打印输出

#include <stdio.h>
int main(){
	//从键盘上输入10个数字,并对他们进行排序(从小到大排序),再打印输出 
	// 类型 数组名[个数] 
	int arr[5];
	
	// 从键盘上输入5个数字 
	for(int i=0;i<5;i++){
		scanf("%d\n", &arr[i]);
	}
	
	for(int i=0;i<4;i++){
		for(int j=0;j<4;j++){
			if(arr[j]>arr[j+1]){
				int temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
			}
		}
	} 
printf("-------------\n");	
	 //打印输出 
	 for(int i=0;i<5;i++){
	 	printf("%d\n", arr[i]);
	 } 	
}

image.png