练习1:
1.循环输入n个元素,计算最大差值,最小和,最大和 (不允许使用排序)
最大差:最大值-最小值
最小和:最小值+第二小值
最大和:最大值+第二大值
程序:
#include <stdio.h> #include <string.h> #include <stdlib.h> //定义int类型最大值以及最小值 #define INT_MAX 2147483647 #define INT_MIN (-INT_MAX - 1) int main(int argc, const char *argv[]) { int n; printf("输入数组长度:"); scanf("%d",&n); int arr[n]; bzero(arr,sizeof(arr)); int min1=INT_MAX; int max1=INT_MIN; int min2=INT_MAX; int max2=INT_MIN; int i; for(i=0;i<n;i++) { printf("请输入第%d个值:",i); scanf("%d",&arr[i]); if(min1>arr[i]) { min2=min1; min1=arr[i]; } else if(min2>arr[i]) { min2=arr[i]; } if(max1<arr[i]) { max2=max1; max1=arr[i]; } else if(max2<arr[i]) { max2=arr[i]; } } printf("最大差为%d:\n",max1-min1); printf("最小和为%d:\n",min1+min2); printf("最大和为%d:\n",max1+max2); return 0; }
练习2:
循环输入n个元素,交换数组中最大值最小值
程序:
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) { int n; printf("输入数组长度:"); scanf("%d",&n); int arr[n]; bzero(arr,sizeof(arr)); int min=0; int max=0; int i; for(i=1;i<n;i++) { printf("请输入第%d个值:",i); scanf("%d",&arr[i]); if(arr[min]>arr[i]) { min=i; } if(arr[max]<arr[i]) { max=i; } } int temp; temp=arr[max]; arr[max]=arr[min]; arr[min]=temp; printf("打印后数组元素为:"); for(i=0;i<n;i++) { printf("%d ",arr[i]); } return 0; }
练习3:
循环输入n个元素,输入查找元素key
如果key在数组中出现1次,则输出对应位置
如果key在数组中出现0次,则提示不存在
如果key在数组中出现多次,则输出出现的次数
程序:
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) { int n; printf("输入数组长度:"); scanf("%d",&n); int arr[n]; bzero(arr,sizeof(arr)); int i; for(i=0;i<n;i++) { printf("请输入第%d个值:",i); scanf("%d",&arr[i]); } printf("打印前数组元素为:"); for(i=0;i<n;i++) { printf("%d ",arr[i]); } printf("输入需要查找的元素:"); int key; scanf("%d",&key); int num=0; int digit=0; for(i=0;i<n;i++) { if(key==arr[i]) { digit=i; num++; } } if(num==0) { printf("数组元素中不存在\n"); } if(num==1) { printf("该元素在数组中的第%d位\n",digit+1); } if(num>1) { printf("该元素在数组中出现%d次\n",num); } return 0; }
练习4:
循环输入n个元素,输入flag
如果flag==1,则实现冒泡升序排序
如果flag==0,则实现简单排序降序输出
程序:
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) { int n; printf("输入数组长度:"); scanf("%d",&n); int arr[n]; bzero(arr,sizeof(arr)); int i; for(i=0;i<n;i++) { printf("请输入第%d个值:",i); scanf("%d",&arr[i]); } printf("打印前数组元素为:"); for(i=0;i<n;i++) { printf("%d ",arr[i]); } printf("\n请输入需要实现的排序1为冒泡排序 0 为简单选择降序排序:"); int flag; scanf("%d",&flag); int j; if(flag==1) { int temp1=0; for(i=0;i<n-1;i++) { for(j=0;j<n-1-i;j++) { if(arr[j]>arr[j+1]) { temp1=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp1; } } } printf("冒泡排序后打印数组为:"); for(i=0;i<n;i++) { printf("%d ",arr[i]); } putchar(10); } else if(flag==0) { int temp2=0; int max; for(i=0;i<n;i++) { max=i; for(j=i+1;j<n;j++) { if(arr[max]<arr[j]) { max=j; } } if(max!=i) { temp2=arr[i]; arr[i]=arr[max]; arr[max]=temp2; } } printf("简单排序降序排序后打印数组为:"); for(i=0;i<n;i++) { printf("%d ",arr[i]); } putchar(10); } else if(0!=flag&&1!=flag) { printf("输入错误,不在代码范围内,系统强制退出\n"); return -1; } return 0; }
练习5:
循环输入数组元素,实现数组元素逆转
eg:
int a[4]={11,22,33,44}
逆转后{44,33,22,11}
程序:
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) { int n; printf("输入数组长度:"); scanf("%d",&n); int arr[n]; bzero(arr,sizeof(arr)); int i; for(i=0;i<n;i++) { printf("请输入数组第%d位元素:",i); scanf("%d",&arr[i]); } printf("打印前数组为:"); for(i=0;i<n;i++) { printf("%d ",arr[i]); } int temp=0; for(i=0;i<n/2;i++) { temp=arr[i]; arr[i]=arr[n-1-i]; arr[n-1-i]=temp; } printf("\n打印后数组为:"); for(i=0;i<n;i++) { printf("%d ",arr[i]); } putchar(10); return 0; }
练习6:
循环输入n个数组元素,输入key,请删除所有与key相等得元素
程序:
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) { int n; printf("输入数组长度:"); scanf("%d",&n); int arr[n]; bzero(arr,sizeof(arr)); int i; for(i=0;i<n;i++) { printf("请输入数组第%d位元素:",i); scanf("%d",&arr[i]); } printf("打印前数组为:"); for(i=0;i<n;i++) { printf("%d ",arr[i]); } printf("请输入需要删除的元素:"); int key; scanf("%d",&key); int j; int u; for(i=0;i<n;i++) { if(key==arr[i]) { for(j=i;j<n-1;j++) { arr[j]=arr[j+1]; } n--; i--; u=n; } } printf("删除完%d后数组元素为:",key); for(i=0;i<u;i++) { printf("%d ",arr[i]); } return 0; }
练习7:
循环输入n个数组元素,输入k的值,将一个一维数组循环右移k位
eg:
k=2
int arr[] ={11,22,33,44,55}
移动后得结果是
44,55,11,22,33
程序:
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) { int n; printf("输入数组长度:"); scanf("%d",&n); int arr[n]; bzero(arr,sizeof(arr)); int i; for(i=0;i<n;i++) { printf("请输入数组第%d位元素:",i); scanf("%d",&arr[i]); } printf("打印前数组为:"); for(i=0;i<n;i++) { printf("%d ",arr[i]); } printf("请输入右移的次数:"); int k; scanf("%d",&k); int j; int temp; for(i=0;i<k;i++) { temp=arr[n-1]; for(j=n-1;j>0;j--) { arr[j]=arr[j-1]; } arr[0]=temp; } printf("右移%d后数组元素为:",k); for(i=0;i<n;i++) { printf("%d ",arr[i]); } return 0; }
思维导图:
标签:arr,0403,int,基础,数组,printf,include,输入 From: https://blog.csdn.net/slander_1120/article/details/137347818