关于C语言数组的实验

966 字
5 分钟
关于C语言数组的实验

实验1#

定义一个具有 40 个整数元素的数组,用随机数输入这个数组的元素,编写程序求出这个数组的最大值,平均值,对这个数组排序,输入一个关键数并在数组中查找和删除之。

代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//函数声明
int max(int array[],int ARRAY_SIZE);
int avg(int array[],int ARRAY_SIZE);
void printArray(int array[],int ARRAY_SIZE);
void sortArray(int array[],int ARRAY_SIZE);
int searchArray(int array[],int ARRAY_SIZE,int key);
void deleteArray(int array[],int ARRAY_SIZE,int location);
int main(){
int ARRAY_SIZE = 40;
int LIST[ARRAY_SIZE];
int i,j,temp,del,location;
srand(time(NULL));
//随机数填充数组
for(i;i<ARRAY_SIZE;i++)
LIST[i] = rand();
printArray(LIST,ARRAY_SIZE);
printf("\n最大值为:%d",max(LIST,ARRAY_SIZE));
printf("\n平均值为:%d",avg(LIST,ARRAY_SIZE));
//数组排序
for(i = 0;i<ARRAY_SIZE-1;i++){
for(j = 0;j<ARRAY_SIZE-1-i;j++){
if(LIST[j]>LIST[j+1]){
temp = LIST[j];
LIST[j] = LIST[j+1];
LIST[j+1] = temp;
}
}
}
printf("\n排序后的数组:\n");
printArray(LIST,ARRAY_SIZE);
printf("输入要删除的数字:");
scanf("%d",&del);
location = searchArray(LIST,ARRAY_SIZE,del);
if (location == -1)
printf("\n输入的数字不存在!");
else
printf("\n输入的数字在数组的第%d位",location);
deleteArray(LIST,ARRAY_SIZE,location);
ARRAY_SIZE -= 1;
printf("\n数字已删除,删除后的数组:\n");
printArray(LIST,ARRAY_SIZE);
}
//求最大值
int max(int array[],int ARRAY_SIZE){
int max = array[0];
for(int i;i<ARRAY_SIZE;i++){
if(max<array[i]){
max = array[i];
}
}
return max;
}
//求平均值
int avg(int array[],int ARRAY_SIZE){
int sum,avg;
for(int i = 0;i<ARRAY_SIZE;i++){
sum += array[i];
}
return avg = sum / ARRAY_SIZE;
}
//打印数组
void printArray(int array[],int ARRAY_SIZE){
for(int i = 0;i<ARRAY_SIZE;i++){
printf("%d ",array[i]);
if(i % 5 == 4){
printf("\n");
}
}
}
//查找数组中的数字
int searchArray(int array[],int ARRAY_SIZE,int key){
int location = -1;
for(int i = 0;i<ARRAY_SIZE;i++){
if(key == array[i]){
location = i;
break;
}
}
return location;
}
//删除数组中的数字
void deleteArray(int array[],int ARRAY_SIZE,int location){
for(int i = location;i<ARRAY_SIZE;i++){
if(i<ARRAY_SIZE){
array[i] = array[i+1];
}
}
}

实验2#

写一个菜单,菜单内容为:1:输入数组,2:输出数组,3:排序数组4.求数组得最大值.5.求数组得平均值.6.查找关键数据.7.删除一个数据.8.结束.

#include <stdio.h>
#include <stdlib.h>
int max(int array[],int ARRAY_SIZE);
int avg(int array[],int ARRAY_SIZE);
int searchArray(int array[],int ARRAY_SIZE,int key);
void printArray(int array[],int ARRAY_SIZE);
void deleteArray(int array[],int ARRAY_SIZE,int key);
int main(){
const int ARRAY_SIZE = 999;
int LIST[ARRAY_SIZE];
int select,length = 0;
int i,j,temp,searchNum,location;
do{
system("cls");
printf("\n\n ※数组实验※ \n\n");
printf(" 1:输入数组 \n");
printf(" 2:输出数组 \n");
printf(" 3:排序数组 \n");
printf(" 4:求数组得最大值 \n");
printf(" 5:求数组得平均值 \n");
printf(" 6:查找关键数据 \n");
printf(" 7:删除一个数据 \n");
printf(" 8:结束 \n");
printf("\n 请选择操作:");
scanf(" %d",&select);
switch(select){
default:
printf("输入错误,请重新输入!");
break;
case 1:
printf("\n请输入若干个数字,以^Z为结束标志:");
while(scanf("%d",&LIST[length]) == 1)
++length;
printf("数组已输入!数组长度:%d",length);
break;
case 2:
if(length == 0){
printf("你还没有输入数组!");
}else{
printf("\n输出数组:\n");
printArray(LIST,length);
}
break;
case 3:
//数组排序
if(length == 0){
printf("你还没有输入数组!");
}else{
for(i = 0;i<length-1;i++){
for(j = 0;j<length-1-i;j++){
if(LIST[j]>LIST[j+1]){
temp = LIST[j];
LIST[j] = LIST[j+1];
LIST[j+1] = temp;
}
}
}
}
printf("数组已排列!\n");
printArray(LIST,length);
break;
case 4:
printf("数组最大值为:%d",max(LIST,length));
break;
case 5:
printf("数组平均值为:%d",avg(LIST,length));
break;
case 6:
if(length == 0){
printf("你还没有输入数组!");
}else{
printf("打印数组:\n");
printArray(LIST,length);
printf("\n输入要查找的数字:");
scanf("%d",&searchNum);
location = searchArray(LIST,length,searchNum);
if(location != -1){
printf("\n找到数字!位于数组第%d位!",location);
}else{
printf("\n没有找到要查找的数字!");
}
break;
}
case 7:
if(length == 0){
printf("你还没有输入数组!");
}else{
printf("打印数组:\n");
printArray(LIST,length);
printf("\n输入要删除的数字:");
scanf("%d",&searchNum);
deleteArray(LIST,length,searchNum);
length -=1;
printf("已删除!删除后的数组:\n");
printArray(LIST,length);
}
break;
case 8:
exit(0);
}
fflush(stdin);
printf("\n");
system("pause");
}while (1);
}
//求最大值
int max(int array[],int ARRAY_SIZE){
int max = array[0];
for(int i = 0;i<ARRAY_SIZE;i++){
if(max<array[i]){
max = array[i];
}
}
return max;
}
//求平均数
int avg(int array[],int ARRAY_SIZE){
int sum,avg;
for(int i = 0;i<ARRAY_SIZE;i++){
sum += array[i];
}
return avg = sum / ARRAY_SIZE;
}
//查找数组中的数字
int searchArray(int array[],int ARRAY_SIZE,int key){
int location = -1;
for(int i = 0;i<ARRAY_SIZE;i++){
if(key == array[i]){
location = i;
break;
}
}
return location;
}
//打印数组
void printArray(int array[],int ARRAY_SIZE){
for(int i = 0;i<ARRAY_SIZE;i++){
printf("%d ",array[i]);
if(i % 5 == 4){
printf("\n");
}
}
}
//删除数组中的数字
void deleteArray(int array[],int ARRAY_SIZE,int key){
int location;
location = searchArray(array,ARRAY_SIZE,key);
for(int i = location;i<ARRAY_SIZE;i++){
if(i<ARRAY_SIZE){
array[i] = array[i+1];
}
}
}

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

关于C语言数组的实验
https://blog.dotuoodo.top/posts/c-test1/
作者
DOTUOODO
发布于
2022-11-16
许可协议
CC BY-NC-SA 4.0

评论

Profile Image of the Author
DOTUOODO
Nothing is immortal, but at least we can be extraordinary.
公告
欢迎来到我的博客!目前还在施工中...
分类
标签

文章目录