5/11后面部分:+顺序排序+元素交换+计算每门课程的各种成绩+存放规律的数据 注意:一味的复制肯定要出问题,第2个的最后一部分有修改,注意观察

目录

第一个已经输出过一次:

第二个:

编程实现:程序功能是用起泡法对数组中n个元素按从大到小的顺序进行排序。

​编辑的确出现了一些问题哦:

 ​编辑目前是可以运行,但AI不给我们通过:

 最后还是我的代码获胜:

进行一些注释: 

第三个:

编程实现:将a所指4×3矩阵中第k(k=2)行的元素与第0行元素交换。

第四个:

编程实现,输入5位学生的三门课程的考试成绩,将成绩存放在5行三列的二维数组中,计算每门课程的平均成绩、最高分与最低分。

排了最大值:

排了最小值:

好吧,报错才是常态 ;

第5个:

两个循环模块中间只是操作不同。弄得看了一大会。​编辑

给一下解释:

 最后得到这样的结果:代码

 运行结果:

进行一波解释吧,AI写的有点复杂

变量声明:

用户输入:

输入验证:

填充二维数组:


第一个已经输出过一次:

插入排序,搞起来,一路狂奔,数组插入-CSDN博客

第二个:

编程实现:程序功能是用起泡法对数组中n个元素按从大到小的顺序进行排序。

程序运行结果:排序前的数据:   12 34 4 7 9 6 8 3 53 -1

排序后的数据:   53 34 12 9 8 7 6 4 3 -1

 使用起泡排序算法对数组中的元素进行从大到小的排序,可以遵循以下步骤:

  1. 遍历数组,比较相邻的两个元素。
  2. 如果前一个元素小于后一个元素,则交换它们的位置。
  3. 重复上述步骤,直到没有更多的元素需要交换为止。

 void bubbleSort(int arr[], int n) {  
    int i, j, temp;  
    for (i = 0; i < n - 1; i++) {  
        for (j = 0; j < n - i - 1; j++) {  
            if (arr[j] < arr[j + 1]) {  
                // 交换 arr[j] 和 arr[j + 1]  
                temp = arr[j];  
                arr[j] = arr[j + 1];  
                arr[j + 1] = temp;  
            }  
        }  
    }  
}  

 有些复杂,还是慢慢来:

的确出现了一些问题哦:

在内层循环的条件中,j < i - 1 应该是 j < 9(或j < i) 因为想在每次外层循环迭代时,都检查当前元素arr1[i]与它前面的所有元素。使用j < i - 1实际上会导致最后一次外层循环时内层循环不执行,虽然在这个特定情况下不影响最终结果,但这是一个逻辑上的不一致。

 目前是可以运行,但AI不给我们通过:

 内层循环应该是 j < i - 1 而不是 j < i。当进行起泡排序时,我们需要将当前元素 arr1[i] 与它前面的所有元素 arr1[j](其中 j 从 0 到 i - 1)进行比较。如果 arr1[i] 比 arr1[j] 小,则交换它们的位置。使用 j < i 会导致不必要的比较,并且当 i 是最后一个元素时,会产生数组越界的错误。

   for (int i = 1; i < 10; i++) { // 外层循环从第二个元素开始  
        for (int j = 0; j < i; j++) { // 内层循环比较当前元素与它前面包括它自己的所有元素

 最后还是我的代码获胜:

#include<stdio.h>
int main()
{
	int arr1[10] = { 12,34,4,7,9,6,8,3,53,-1 };
	for (int i = 1; i <10; i++)
	for (int j = 0; j < i ; j++)
	{
		if (arr1[i]<arr1[j])
		{
			int t = arr1[i]; arr1[i] = arr1[j]; arr1[j] = t;
		}
	}
	printf("排序完成的数组为:");
	for (int i = 0; i < 10; i++)
	{
		printf("%d  ", arr1[i]);
	}
	return 0;
}

进行一些注释: 

提供的代码的中文注释:

c
#include<stdio.h>  // 引入标准输入输出库,用于printf等函数  
  
int main()  // 主函数入口  
{  
    int arr1[10] = { 12,34,4,7,9,6,8,3,53,-1 };  // 定义一个包含10个整数的数组arr1,并初始化  
  
    // 外层循环,从数组的第二个元素开始(i=1),到最后一个元素的前一个位置(i<10)  
    for (int i = 1; i < 10; i++)  
    {  
        // 内层循环,从数组的第一个元素开始(j=0),到当前外层循环元素的前一个位置(j<i)  
        for (int j = 0; j < i; j++)  
        {  
            // 如果当前外层循环的元素arr1[i]小于内层循环的元素arr1[j]  
            if (arr1[i] < arr1[j])  
            {  
                // 交换arr1[i]和arr1[j]的值,确保大的数在前面,小的数在后面  
                int t = arr1[i];  // 使用临时变量t保存arr1[i]的值  
                arr1[i] = arr1[j];  // 将arr1[j]的值赋给arr1[i]  
                arr1[j] = t;  // 将保存在t中的arr1[i]的原值赋给arr1[j]  
            }  
        }  
    }  
  
    // 打印排序完成的数组  
    printf("排序完成的数组为:");  
  
    // 遍历数组并打印每个元素  
    for (int i = 0; i < 10; i++)  
    {  
        printf("%d  ", arr1[i]);  // 打印数组元素,并在每个元素后添加一个空格  
    }  
  
    return 0;  // 主函数返回0,表示程序正常结束  
}
这段代码实现了起泡排序算法,用于对数组arr1进行从大到小的排序。外层循环遍历数组的每个元素,内层循环则用于比较当前元素与其前面的所有元素,并根据比较结果交换位置。最终,数组将以从大到小的顺序排列,并通过循环打印出排序后的结果。

注意⚠️注意⚠️注意⚠️注意⚠️

今天早上打开来才发现有问题, 真实情况,还好,当时没有发进去,排序的顺序排反了:】

以下是修正过的:

 改了一下符号,换了一下赋值顺序;⬆️

第三个:

编程实现:将a所指4×3矩阵中第k(k=2)行的元素与第0行元素交换。

测试数据: 1   2   3

           4   5   6

           7   8   9

          10  11  12

程序运行结果:

The array before moving:

    1   2   3

    4   5   6

    7   8   9

    10  11  12

The array after moving:

    7   8   9

    4   5   6

    1   2   3

    10  11  12

第3个的一部分

第1阶段的输出:

用一个简单的交换:

	for ( j = 0; j < 3; j++)
	{
		 int t= arr1[0][j];
		  arr1[0][j] = arr1[2][j];
		  arr1[2][j] = t;
	}

for (int j = 0; j < 3; j++) { int t = arr1[0][j]; // 保存第0行的元素 arr1[0][j] = arr1[2][j]; // 第0行元素替换为第k行(第3行)对应元素 arr1[2][j] = t; // 第k行(第3行)元素替换为之前第0行的元素 }

第四个:

编程实现,输入5位学生的三门课程的考试成绩,将成绩存放在5行三列的二维数组中,计算每门课程的平均成绩、最高分与最低分。

输入测试数据: 45  87  90

76  84  84

71  85  97

56  67  89

82  65  56

程序运行结果:每门课程的最高分

   82.00   87.00   97.00

每门课程的最低分

   45.00   65.00   56.00

每门课程的平均成绩

   66.00   77.60   83.20

进行一个数组排序,先来一个列排序:

排了最大值:

	for (int j = 0; j < 3; j++)
	{
		max[j] = arr1[0][j];
	}
	for (int i = 1; i < 5; i++)
	{

		for (int j = 0; j < 3; j++)
		{
			if (max[j] < arr1[i][j])
			{
				 max[j] = arr1[i][j];
			}
		}
	}

排了最小值:

	for (int j = 0; j < 3; j++)
	{
		min[j] = arr1[0][j];
	}
	for (int i = 1; i < 5; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			if (min[j] > arr1[i][j])
			{
				min[j] = arr1[i][j];
			}
		}
	}

 OK,干了半个小时,也没搞出多少东西来;

后面再加一个平均。

然后这里现先一个补充,求数组列的平均值⬇️

   for (int col = 0; col < COLS; col++) {  
        double sum = 0.0;  
        for (int row = 0; row < ROWS; row++) {  
            sum += matrix[row][col]; // 累加当前列的所有元素  
        }  
        averages[col] = sum / ROWS; // 计算当前列的平均值并存储  
    }  

 为啥子都能报错?我那个乖乖。

🍐🎼下面这一段也是一大堆错误;🍐🎼🍐🎼

好吧,报错才是常态 ;

  1. sum[3]+= arr1[i][j]; 这一行中的 sum[3] 是不正确的,因为数组 sum 的索引是从 0 到 2(共 3 个元素),所以应该使用 sum[j] 来累加对应列的和。

  2. avg[3] = sum[j] / 3; 这一行同样存在索引越界的问题,因为 avg 数组(虽然没有给出其定义,但假设它存在且足够大)的索引也应该是从 0 到 2。所以应该使用 avg[j] 来存储对应列的平均值。

  3.  printf 语句没有换行,所以所有的平均值会打印在同一行。如果希望每门课程的平均分都打印在新的一行,应该在打印后添加一个换行符 \n

 改:

double max[3] = {0.0}, min[3] = {1e9}, avg[3], sum[3] = {0.0}; // 初始化max为0,min为一个较大的数

 虽然已经出炉了,但是在VS上面好像有时候会报错

#include<stdio.h>
int main()
{
	int arr1[5][3] ;
	for (int i = 0; i < 5; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			scanf("%d", &arr1[i][j]);
		}
	}
	double max[3] = { 0.0 }, min[3] = { 0.0 }, avg[3] = { 0.0 }, sum[3] = { 0.0 };
	for (int j = 0; j < 3; j++)//最大
	{
		max[j] = arr1[0][j];
	}
	for (int i = 1; i < 5; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			if (max[j] < arr1[i][j])
			{
				 max[j] = arr1[i][j];
			}
		}
	}
	for (int j = 0; j < 3; j++)//最小
	{
		min[j] = arr1[0][j];
	}
	for (int i = 1; i < 5; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			if (min[j] > arr1[i][j])
			{
				min[j] = arr1[i][j];
			}
		}
	}
	for (int i = 0; i < 5; i++)//avg
	{
		for ( int j = 0; j < 3; j++)
		sum[j]+= arr1[i][j];
	}
	for ( int j = 0; j < 3; j++)
	{
		avg[j] = sum[j] / 5;
	}
	printf("每门课程的最高分为:");
	for ( int j = 0; j < 3; j++) 
	{
		printf("%.2lf  ", max[j]);
	}
	printf("\n");
	printf("每门课程的最低分为:");
	for (int j = 0; j < 3; j++)
	{
		printf("%.2lf  ", min[j]);
	}
	printf("\n");
	printf("每门课程的平均分为:");
	for (int j = 0; j < 3; j++)
	{
		printf("%.2lf   ", avg[j]);
	}
	return 0;
}

 结果很是OK

因为学的不是那么太多。,所以弄的有点太复杂了

Ai这个在VS上面就不会报错;他在每一处都进行double转换

你们只要加上之一句话就肯定不会出错。

本来打算让Ai来简化这个过程。

但是他好像把最大和最小的放在一起来处理。

 更简单的合并在这里:

int arr1[5][3];
double max[3], min[3], sum[3] = {0}, avg[3];

这里声明了一个5x3的整数数组arr1,用于存储5个学生的3门课程成绩。同时,声明了三个双精度浮点数组maxminsum,用于存储每门课程的最大值、最小值和总和。sum数组被初始化为0。另外,声明了一个双精度浮点数组avg用于存储每门课程的平均值。

输入和计算最大值、最小值、总和

for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
scanf("%d", &arr1[i][j]);
sum[j] += arr1[i][j];
if (arr1[i][j] > max[j]) max[j] = arr1[i][j];
if (arr1[i][j] < min[j]) min[j] = arr1[i][j];
}
}

这个嵌套循环首先通过scanf函数从用户处获取输入,然后将这些输入值存储到arr1数组中。同时,对于每门课程(即每个j),它计算该门课程的总和(sum[j])、最大值(max[j])和最小值(min[j])。

计算平均值

for (int j = 0; j < 3; j++) {
avg[j] = sum[j] / 5.0;
}

这个循环计算每门课程的平均值,并将结果存储到avg数组中。

输出结果

printf("Maximum scores for each course: %.2lf %.2lf %.2lf\n", max[0], max[1], max[2]);
printf("Minimum scores for each course: %.2lf %.2lf %.2lf\n", min[0], min[1], min[2]);
printf("Average scores for each course: %.2lf %.2lf %.2lf\n", avg[0], avg[1], avg[2]);

这些printf语句用于输出每门课程的最大值、最小值和平均值。

第5个:

编程实现:根据输入的m值(2≤m≤9),在m行m列的二维数组中存放如下所示规律的数据。(建议定义二维数组时,行的长度和列的长度可以定义成10以上就可以)

输入测试数据: 2

程序运行结果:

                 1     2

                 2     4

输入测试数据: 4

程序运行结果:

         1   2   3   4

         2   4   6   8

         3   6   9   12

         4   8   12  16

输入测试数据: 9

程序运行结果:

1    2    3    4    5    6    7    8    9

2    4    6    8   10   12   14   16   18

3    6    9   12   15   18   21   24   27

4    8   12   16   20   24   28   32   36

5   10   15   20   25   30   35   40   45

6   12   18   24   30   36   42   48   54

7   14   21   28   35   42   49   56   63

8   16   24   32   40   48   56   64   72

9   18   27   36   45   54   63   72   81

两个循环模块中间只是操作不同。弄得看了一大会。

给一下解释:

第一个for循环块:

for (int i = 0; i < m; i++) {
for (int j = 0; j < m; j++) {
arr[i][j] = (i + 1) * (j + 1); // 计算当前元素的值
}
}

这个循环块会填充整个二维数组arr。对于每一行i和每一列j,它都会计算(i + 1) * (j + 1)的值,并将这个值存储在arr[i][j]。所以,整个m x m的数组都会被正确地按照规律填充。

第二个for循环块:

for (i = 0; i < m; i++) {
for (j = 0; j < i; j++) {
arr[i][j] = (i + 1) * (j + 1);
}
}

这个循环块只会填充二维数组arr的上三角部分(包括对角线)。注意内层循环的条件是j < i,这意味着对于每一行i,它只会填充从arr[i][0]arr[i][i-1]的元素。因此,数组的下三角部分(不包括对角线)将不会被填充,它们将保持未初始化的状态(通常是0或垃圾值)。

简而言之,第一个循环块填充整个数组,而第二个循环块只填充数组的上三角部分。

 最后得到这样的结果:代码

#include<stdio.h>
int main()
{
	int arr[10][10];
	int m, i, j;
	printf("请输入值:\n");
	scanf("%d", &m);
	for ( i = 0; i < m; i++)
	{
		for (j = 0; j < m; j++) 
		{
			arr[i][j] = (i + 1) * (j + 1);
		}
	}
	for (i = 0; i < m; i++)
	{
		for (j = 0; j < m; j++)
		{
			printf("%3d", arr[i][j]);
		}
		printf("\n");
	}
	return 0;
}

 运行结果:

 中间加上一句这个也挺好的;

进行一波解释吧,AI写的有点复杂

 

  1. 变量声明

    • arr[10][10]:一个10x10的二维整数数组,用于存储计算得到的值。
    • m:一个整数,用于表示用户希望生成的二维数组的大小(行数和列数)。
    • i 和 j:用于循环的整数变量。
  2. 用户输入

    • 程序首先提示用户输入一个值(m),这个值应该是一个整数,并且应该在2到9之间(包括2和9)。
  3. 输入验证

    • 使用if语句检查用户输入的m值是否在2到9的范围内。
    • 如果m的值不在这个范围内,程序将打印一条错误消息,并通过return 1;结束程序。
  4. 填充二维数组

    • 使用两个嵌套的for循环遍历二维数组的每一个元素。
    • 对于每一个元素arr[i][j],将其设置为(i + 1) * (j + 1)的值。这里,i是行索引(从0开始),j是列索引(从0开始),所以(i + 1)(j + 1)确保了我们从1开始计算,而不是从0开始。

 

 还有两套赶死了干了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/613319.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络安全专业岗位详解+自学学习路线图

很多网安专业同学一到毕业就开始迷茫&#xff0c;不知道自己能去做哪些行业&#xff1f;其实网络安全岗位还是蛮多的&#xff0c;下面我会介绍一些网络安全岗位&#xff0c;大家可以根据自身能力与喜好决定放哪个方向发展。 渗透测试/Web安全工程师 主要是模拟黑客攻击&#…

vue3 antd-vue 超简单方式实现a-table跨页勾选

一、效果如下&#xff1a; 第一页勾选了2&#xff0c; 3&#xff0c; 4 翻到第三页勾选24&#xff0c; 25 回显&#xff0c;如比返回第一页的时候触发分页改变&#xff0c; 在映射中的第一页的数据给到a-table绑定的state.selectedRowKeys即可&#xff0c;如下方法 二、勾选思路…

初识多线程

1. 前置知识——进程 在学习多线程前需要了解操作系统中的基本知识&#xff0c;这里简单回顾下。 1.1 进程控制块 一个进程对应着一个进程控制块PCB&#xff0c;PCB是一个用于管理和维护进程信息的数据结构&#xff0c;这个数据结构中大致包含下面内容&#xff08;并不完整&…

头歌实践教学平台:CG1-v1.0-点和直线的绘制

第1关&#xff1a;OpenGL点的绘制 一. 任务描述 根据下面要求&#xff0c;在右侧修改代码&#xff0c;绘制出预期输出的图片。平台会对你编写的代码进行测试。 1.本关任务 熟悉编程环境&#xff1b; 了解光栅图形显示器的特点&#xff1b; 了解计算机绘图的特点&#xff1b…

Redis是单线程吗?为什么6.0之后引入了多线程?

Redis是单线程吗&#xff1f;为什么6.0之后引入了多线程&#xff1f; Redis 是单线程吗&#xff1f;Redis 单线程模式是怎样的&#xff1f;Redis 采用单线程为什么还这么快&#xff1f;Redis 6.0 之前为什么使用单线程&#xff1f;Redis 6.0 之后为什么引入了多线程&#xff1f…

geotrust dv通配符证书800

Geotrust是成立时间较久的正规CA认证机构&#xff0c;在过去的几十年间颁发了无数的SSL证书&#xff0c;这些SSL证书被各个开发者使用&#xff0c;受到大多数浏览器的信任。而Geotrust旗下的DV通配符证书因其广泛的应用范围受到了用户的青睐。今天就随SSL盾小编了解Geotrust旗下…

C语言(指针)2

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸各位能阅读我的文章&#xff0c;诚请评论指点&#xff0c;关注收藏&#xff0c;欢迎欢迎~~ &#x1f4a5;个人主页&#xff1a;小羊在奋斗 &#x1f4a5;所属专栏&#xff1a;C语言 本系列文章为个人学习笔记&#x…

XWiki 服务没有正确部署在tomcat中,如何尝试手动重新部署?

1. 停止 Tomcat 服务 首先&#xff0c;您需要停止正在运行的 Tomcat 服务器&#xff0c;以确保在操作文件时不会发生冲突或数据损坏&#xff1a; sudo systemctl stop tomcat2. 清空 webapps 下的 xwiki 目录和 work 目录中相关的缓存 删除 webapps 下的 xwiki 目录和 work …

游戏行业被攻击的原因、攻击种类及合适的服务器

很多游戏刚上线没多久就频繁遭到同行恶意攻击。在相关数据报告中&#xff0c;2023年上半年遭受DDoS攻击的行业中&#xff0c;游戏行业占到40%&#xff0c;而且攻击方式、攻击频率、攻击峰值呈明显上升趋势。很多充满创意的游戏开发公司刚才开发上线一个很有特色的产品&#xff…

Electron学习笔记(三)

文章目录 相关笔记笔记说明 五、界面1、获取 webContents 实例&#xff08;1&#xff09;通过窗口对象的 webContent 属性获取 webContent 实例&#xff1a;&#xff08;2&#xff09;获取当前激活窗口的 webContents 实例&#xff1a;&#xff08;3&#xff09;在渲染进程中获…

IDEA 好用的插件

图标插件&#xff1a;Atom Material Icons 此插件的作用就是更好的显示各种文件的类别&#xff0c;使之一目了然 汉化包 Chinese ​(Simplified)​ Language Pack / 中文语言包 作用就是 汉化 AI编码助手 GitHub Copilot AI编码助手&#xff1a;提示代码很好用 缺点&#xff1a…

H5 云商城 file.php 文件上传致RCE漏洞复现

0x01 产品简介 H5 云商城是一个基于 H5 技术的电子商务平台,旨在为用户提供方便快捷的在线购物体验。多平台适配:H5 云商城采用 H5 技术开发,具有良好的跨平台适配性。无论是在电脑、手机还是平板等设备上,用户都可以通过网页浏览器访问和使用云商城,无需安装额外的应用程…

CH340 RTS DTR引脚编程驱动OLED

运行结果 硬件连接&#xff08;在连接线上串接300R电阻&#xff09; 下面是c#实现代码 using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks;using uint8 System.Byt…

2024年数维杯B题完整代码和思路论文讲解与分析

2024数维杯数学建模完整代码和成品论文已更新&#xff0c;获取↓↓↓↓↓ https://www.yuque.com/u42168770/qv6z0d/bgic2nbxs2h41pvt?singleDoc# 2024数维杯数学建模B题45页论文和代码已完成&#xff0c;代码为全部问题的代码 论文包括摘要、问题重述、问题分析、模型假设、…

QT--2

Qt界面设计 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {//窗口相关设置this->resize(680,520);this->setFixedSize(680,520);this->setWindowTitle("Tim");this->setWindowFla…

【零基础】system generator①设置卡解析

1.在matlab中我们输入的是双精度浮点型数据&#xff0c;经过gateway后变成定点型。十六位十四个小数位&#xff0c;整个数据有十六位&#xff0c;其中十四位给了小数 2.fixed-point定点型&#xff1b;signed有符号&#xff1b;2’s comp补码 3.量化误差 truncate&#xff0c;舍…

Windows Server 2012 R2 新增D盘分区

我们经常搭建windows版本的游戏时会要在D盘上操作&#xff0c;今天就介绍下新的服务器如何新增一个D盘。 在"开始"图标右边有个”服务器管理器“&#xff0c;单击点开 点开服务器管理器后&#xff0c;点击“工具”打开“计算机管理” 打开计算机管理后点击“存储”-…

【c++】string深度刨析以及实现

#pragma once #include<iostream> using namespace std; #include<assert.h> namespace bite {class string{public://迭代器 //像指针 底层不一定是指针 typedef char* iterator;iterator begin(){return _str;}iterator end(){return _str _size;}//const 版本…

RERCS系统-WDA+BOPF框架实战例子 PART 2-新建Root的子节点Node Element

1、通过事务码 BOBF进入Business Object Browser&#xff08;业务对象浏览&#xff09;页面&#xff1b; 2、输入debug 进入编辑模式&#xff1b; 3、双击对应的业务对象进入Business Object Detail Browser即业务对象数据浏览器 在Node Structure的Root中新建需要的SubNode子…

OpenCV使用 Kinect 和其他兼容 OpenNI 的深度传感器(75)

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇:使用 OpenCV 创建视频(74) 下一篇 :OpenCV使用 Orbbec Astra 3D 相机(76) 目的&#xff1a;​ 通过 VideoCapture 类支持与 OpenNI 兼容的深度传感器&#xff08;Kinect、XtionPRO 等&#xff09;。…