C语言学习-数组练习

news/2024/12/25 2:23:12/

1. 键盘录入一组数列,利用冒泡排序将数据由大到小排序

#include <stdio.h>
#include <string.h>
#define A_NUM 10int t1 = 0;
int t2 = 0;/**
*键盘录入一组数列,利用冒泡排序将数据由大到小排序
*/
//使用常规冒泡完成
void t_1_1()
{int i,n;printf("请输入数列的大小:\n");scanf("%d",&n);int arr[n];printf("请输入该数列:\n");for(i = 0; i < n; i++){scanf("%d",&arr[i]);}for(i = 0; i < n - 1; i++){for(int j = 0; j < n - i - 1; j++){if(arr[j] < arr[j+1] ){int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}t1++;}}for(i = 0; i < n; i++){printf("%-4d",arr[i]);}printf("\n%d\n",t1);
}//使用鸡尾酒排序法完成
void t_1_2()
{int i,n;printf("请输入数列的大小:\n");scanf("%d",&n);int arr[n];int start = 0;int end = n - 1;int is_flag = 1;for(i = 0; i < n; i++){scanf("%d",&arr[i]);}while(is_flag){is_flag = 0;for(i = start; i < end; i++){if(arr[i] < arr[i+1]){int temp = arr[i];arr[i] = arr[i+1];arr[i+1] = temp;is_flag = 1;}t2++;}end--;if(!is_flag)break;for(i = end; i > start; i--){if(arr[i] > arr[i-1]){int temp = arr[i];arr[i] = arr[i-1];arr[i-1] = temp;is_flag = 1;}t2++;}start++;}for(i = 0; i < n; i++){printf("%-4d",arr[i]);}printf("\n%d\n",t2);
}

2.输入年、月、日,计算该天是本年的第几天

/**
*输入年、月、日,计算该天是本年的第几天
*/
void t_2()
{int num_y,num_m,num_d;printf("输入年数-月数-天:\n");scanf("%d-%d-%d",&num_y,&num_m,&num_d);int m[] = {31,28,31,30,31,30,31,31,30,31,30,31};int len = sizeof(m)/sizeof(m[0]);if((num_y % 400 == 0) || (num_y % 100 != 0 && num_y % 4 == 0))m[1]++;int sum = num_d;for(int i = 0; i < num_m - 1; i++){sum += m[i];}printf("%d年已经过%d天\n",num_y,sum);
}

3.键盘录入一组数列,求最大值、最小值、均值

/**
*键盘录入一组数列,求最大值、最小值、均值
*/
void t_3()
{int arr[A_NUM];int len = sizeof(arr)/sizeof(arr[0]);for(int i = 0; i < len; i++){scanf("%d",&arr[i]);}int max = arr[0];int min = arr[0];int sum = 0;for(int i = 1; i < len; i++){sum += arr[i];if(arr[i] > max)max = arr[i];if(arr[i] < min)min = arr[i];}printf("十个数的最大值是%d,最小值是%d,平均值是%.1lf\n",max,min,(double)sum/10);
}

4.从键盘录入一组数据,判断是否是回文,如12321,abba

/**
*从键盘录入一组数据,判断是否是回文,如12321,abba
*/
void t_4()
{int n;printf("输入数据的位数:\n");scanf("%d",&n);int arr[n];int is_flag = 1;for(int i = 0; i < n; i++){scanf("%1d",&arr[i]);}for(int i = 0; i < n/2; i++){if(arr[i] != arr[n-i-1])is_flag = 0;}if(is_flag)printf("是回文数据!\n");else printf("不是回文数据!\n");
}

5.用数组存储10个整型数,通过键盘输入一个数,找出该数在数组中的下标值

/**
*用数组存储10个整型数,通过键盘输入一个数,找出该数在数组中的下标值
*/void t_5()
{int arr[10];for(int i = 0; i < 10; i++){scanf("%d",&arr[i]);}int n;printf("输入需要查找的数:\n");scanf("%d",&n);int is_flag = 1;int i;for(i = 0; i < 10; i++){if(arr[i] == n)break;if(i == 10 - 1)is_flag = 0;}if(is_flag)printf("下标值为%d!\n",i);else printf("数组中没有这个数\n");
}

6.通过键盘输入10个学员成绩,输出不及格学员的成绩和下标;最高分,最低分的下标;总成绩与平均成绩!

/**
*通过键盘输入10个学员成绩
*输出不及格学员的成绩和下标;最高分,最低分的下标;总成绩与平均成绩!
*/void t_6()
{int st[10];int i;int len = sizeof(st) / sizeof(st[0]);printf("输入十个学员的成绩:\n");for(i = 0; i < 10; i++){scanf("%d",&st[i]);}int max = st[0],min = st[0];int sum = 0;int no_max,no_min;for(i = 0; i < 10; i++){if(st[i] < 60)printf("%d号学生的成绩不及格,为%d\n",i+1,st[i]);if(st[i] > max){max = st[i];no_max = i;}if(st[i] < min){min = st[i];no_min = i;}sum += st[i];}printf("最高分是第%d个同学,考了%d分\n",no_max+1,max);printf("最低分是第%d个同学,考了%d分\n",no_min+1,min);printf("总成绩为%d,平均成绩为%.1lf\n",sum,(double)sum / len);}

7.一个二维数组赋初值,用户输入一个数,在该二维数组中查找,找到返回行列位置,没找到提示

/**
*一个二维数组赋初值,用户输入一个数,在该二维数组中查找,找到返回行列位置,没找到提示
*/
void t_7()
{int arr[3][3] = {11,12,13,21,22,23,31,32,33};int n;printf("输入要查找的数:\n");scanf("%d",&n);int i,j;int is_flag = 0;for(i = 0; i < sizeof(arr) / sizeof(arr[0]);i++){for( j = 0; j < sizeof(arr[0]) / sizeof(arr[0][0]);j++){if(n == arr[i][j]){is_flag = 1;break;}}if(is_flag)break;}if(is_flag)printf("在第%d行第%d列!\n",i+1,j+1);else printf("没这个数!\n");
}

8.二维整型数组,求所有元素的平均值,求每行最大值,求每列最小值

/**
*二维整型数组,求所有元素的平均值,求每行最大值,求每列最小值
*/
void t_8()
{int arr[3][3] = {19,35,21,38,15,25,24,17,33};int i,j;int sum = 0;int max;int row = sizeof(arr) / sizeof(arr[0]);int col = sizeof(arr[0]) / sizeof(arr[0][0]);int min[col];printf("设有二维数组如下:\n");for(i = 0; i < row; i++){for(j = 0; j < col; j++){printf("%-4d",arr[i][j]);}printf("\n");}for(i = 0; i < row; i++){max = arr[i][0]; for(j = 0; j < col; j++){sum += arr[i][j];if(arr[i][j] > max)max = arr[i][j];if(i == 0)min[j] = arr[i][j];else if(i > 0){if(min[j] > arr[i][j])min[j] = arr[i][j];}}printf("第%d行最大值为%d\n",i+1,max);}for(i = 0; i < col; i++){printf("第%d列的最小值为%d\n",i+1,min[i]);}printf("所有元素的平均值为:%.1f\n",(float)sum/(i*j));
}

9.在行列相等数组计算主对角线元素的和

/**
*在行列相等数组计算主对角线元素的和
*/
void t_9()
{int n;printf("输入数组行列的值(行列相等):\n");scanf("%d",&n);int a[n][n];int sum = 0;for(int i = 0; i < n; i++){for(int j = 0; j < n; j++){scanf("%d",&a[i][j]);}}for(int i = 0; i < n ; i++){for(int j = 0; j < n; j++){if(i == j)sum += a[i][j];}}printf("对角线的和为%d\n",sum);}

10.计算矩阵下三角元素的和

/**
*计算矩阵下三角元素的和
*/
void t_10()
{int n;printf("输入数组行列的值(行列相等):\n");scanf("%d",&n);int a[n][n];int sum = 0;for(int i = 0; i < n; i++){for(int j = 0; j < n; j++){scanf("%d",&a[i][j]);}}for(int i = 0; i < n; i++){for(int j = 0; j < n; j++){if(j <= i)sum += a[i][j];}}printf("矩阵下三角元素的和是%d\n",sum);
}

11.电影院某一排某一列放置礼品,放置位置规定为“行和列的平方和为512”,电影院有20排,每排25座!找出礼品所在位置!

/**
*电影院某一排某一列放置礼品,放置位置规定为“行和列的平方和为512”,电影院有20排,每排25座!
*找出礼品所在位置!
*/
void t_11()
{int i,j;int arr[20][25];for(i = 0; i < 20; i++){for(j = 0; j < 25; j++){int temp = (i+1)*(i+1) + (j+1)*(j+1);if(temp == 512)printf("礼包在第%d排,第%d列!\n",i+1,j+1);}}
}

12.编写一个程序,读取用户输入的字符串,并将其反转输出

/**
*编写一个程序,读取用户输入的字符串,并将其反转输出
*/
void t_12()
{char str[30];fgets(str,30,stdin);char str_turn[30];int len = strlen(str);int i;len--; //去掉'\0'for(i = 0; i < len; i++){if(str[len - i - 1] == '\n')continue;str_turn[i] = str[len - i - 1];}printf("%s\n",str_turn);
}

13.编写一个程序,判断用户输入字符串是否为回文

/**
*编写一个程序,判断用户输入字符串是否为回文
*/
void t_13()
{char arr[30];fgets(arr,30,stdin);int len = strlen(arr);//fgets会将\n也算进去,所以末尾为\n时要移除if(arr[len - 1] == '\n'){arr[len - 1] = '\0';len--;}int is_flag = 1;for(int i = 0; i < len/2; i++){if(arr[i] != arr[len-i-1])is_flag = 0;}if(is_flag)printf("是回文数据!\n");else printf("不是回文数据!\n");
}

14.求一个矩阵的鞍点(行最大的同时列也最大)

/**
*求一个矩阵的鞍点(行最大的同时列也最大)
*/
void t_14()
{int arr[4][5] = {99,35,46,13,89,13,34,56,86,12,56,25,34,27,3,48,67,53,19,24};int i,j;int sum = 0;int max_row;         //存放每行最大值int row = sizeof(arr) / sizeof(arr[0]);int col = sizeof(arr[0]) / sizeof(arr[0][0]);int max_col[col];    //存放每列最大值int max_row_i[row];  //存放每行最大数的列int max_col_j[col];  //存放每列最大数的行printf("设有二维数组如下:\n");for(i = 0; i < row; i++){for(j = 0; j < col; j++){printf("%-4d",arr[i][j]);}printf("\n");}for(i = 0; i < row; i++){max_row = arr[i][0]; for(j = 0; j < col; j++){if(arr[i][j] > max_row){max_row = arr[i][j];max_row_i[i] = j;}if(i == 0){max_col[j] = arr[i][j];max_col_j[j] = i;}else if(i > 0){if(max_col[j] < arr[i][j]){max_col[j] = arr[i][j];max_col_j[j] = i;}}}}for(i = 0; i < row; i++){for(j = 0; j < col; j++){if(j == max_row_i[i] && i == max_col_j[j])printf("%d是一个鞍点!\n",arr[i][j]);}}
}

http://www.ppmy.cn/news/1557884.html

相关文章

前端框架Vue的路由机制

大家好&#xff0c;我是G探险者。 最近在调试前端代码的时候&#xff0c;遇到一个问题。首先我们有一个门户页面&#xff0c;该页面里面有很多的豆腐块&#xff0c;每个豆腐块会配置一个系统的跳转连接。 我的系统就是其中一个豆腐块&#xff0c;我第一次登录进来之后&#xf…

低代码可视化-uniapp进销存销售表单-代码生成器

将低代码理念与Uni-App框架结合&#xff0c;应用到进销存销售表单的开发中&#xff0c;可以显著提升开发效率和代码质量。以下是对低代码可视化-UniApp进销存销售表单-代码生成器的详细分析&#xff1a; 客户信息 选择客户信息&#xff0c;选择客户信息后显示在表单开头信息。…

ubuntu--截图软件

截图软件 flameshot 安装 sudo apt install flameshot flameshot打开方式 /usr/bin/flameshot gui 这种方式打开不方便。 alias添加shell指令打开flameshot vi ~/.bashrc alias flameshot"/usr/bin/flameshot gui"

34.正则表达式

python正则表达式&#xff0c;使用re模块&#xff0c;模块中三个基础方法来做正则匹配。 match re.match(匹配规则&#xff0c; 被匹配的字符串) 从字符串开头进行匹配&#xff0c;匹配成功返回匹配对象&#xff08;包含匹配的信息&#xff09;&#xff0c;匹配不成功返回空。…

以太网 Ethernet 报文解析

以太网 Ethernet 报文解析 使用canoe 发送报文。解析这个报文 参考资料 IPv4报文协议 链接: https://blog.csdn.net/m0_61643743/article/details/128509490 UDP 报文协议 链接: https://blog.csdn.net/weixin_43142797/article/details/105648071 https://fasionchan.com/ne…

ffmpeg之显示一个yuv照片

显示YUV图片的步骤 1.初始化SDL库 目的&#xff1a;确保SDL库正确初始化&#xff0c;以便可以使用其窗口、渲染和事件处理功能。操作&#xff1a;调用 SDL_Init(SDL_INIT_VIDEO) 来初始化SDL的视频子系统。 2.创建窗口用于显示YUV图像&#xff1a; 目的&#xff1a;创建一个…

【蓝桥杯每日一题】求和——前缀和

求和 蓝桥杯每日一题 2024-12-17 求和 前缀和 题目大意 给定 n n n 个整数 a 1 , a 2 , … , a n a_1, a_2, \ldots, a_n a1​,a2​,…,an​&#xff0c;求它们两两相乘再相加的和&#xff0c;即&#xff1a; S a 1 ⋅ a 2 a 1 ⋅ a 3 … a 1 ⋅ a n a 2 ⋅ a 3 … a …

金融租赁系统的发展与全球化战略实施探讨

内容概要 金融租赁系统的演变并非一帆风顺&#xff0c;像一场跌宕起伏的电影。首先&#xff0c;咱们得看看它的起源及现状。随着经济的快速发展&#xff0c;金融租赁逐渐作为一种灵活的融资手段崭露头角。在中国市场中&#xff0c;企业对设备和技术更新换代的需求日益迫切&…