数组
数组:批量定义同一个类型的变量
从键盘上输入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);
}
排序
1.交换数组中两个元素的值!
#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]);
}
- 通过比较相邻元素的大小,并交换,把最大的值放在数组后面
#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]);
}
}
上面是教程,下面是比上面高级的
#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");
}
}
练习:从键盘上输入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]);
}
}