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

news2024/12/29 9:49:36

目录

第一个已经输出过一次:

第二个:

编程实现:程序功能是用起泡法对数组中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开始。

 

 还有两套赶死了干了

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

苹果电脑怎么安装crossover 如何在Mac系统中安装CrossOver CrossOver Mac软件安装说明

很多Mac的新用户在使用电脑的过程中&#xff0c;常常会遇到很多应用软件不兼容的情况。加上自己以前一直都是用Windows系统&#xff0c;总觉得Mac系统用得很难上手。 其实&#xff0c;用户可以在Mac上安装CrossOver&#xff0c;它支持用户在Mac上运行Windows软件&#xff0c;例…

C++牛客小白月赛题目分享(1)生不逢七,交换数字,幻兽帕鲁

目录 1.前言 2.三道题目 1.生不逢七 1.题目描述 2.输入描述: 3.输出描述: 4.示例&#xff1a; 5.题解&#xff1a; 2.交换数字 1.题目描述&#xff1a; 2.输入描述&#xff1a; ​编辑 3.输出描述&#xff1a; 4.示例&#xff1a; 5.题解&#xff1a; 3.幻兽帕…

开源基金会AtomGit教程

大家伙&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。 注册 点击链接进入官网&#xff0c;先注册&#xff0c;然后登录&#xff1a;https://atomgit.com/ 编辑个人资料&#xff0c;修改一下自己的信息&#xff0c;用户名后面提交代码的时候要…

frida反检测

一、frida介绍 简单来说&#xff0c;Frida是一个动态代码插桩框架。这意味着它能够在程序运行的时候&#xff0c;不改变原有程序代码的情况下&#xff0c;让你往里面添加自己的代码片段。这听起来可能有点像魔法&#xff0c;但实际上&#xff0c;它是通过一种叫做“HOOK”的技术…

解构复合人工智能系统(Compound AI Systems):关键术语、理论、思路、实践经验

编者按&#xff1a; 大模型的出现为构建更智能、更复杂的人工智能系统带来了新的契机。然而&#xff0c;单一的大模型难以应对现实世界中错综复杂的问题&#xff0c;需要与其他模块相结合&#xff0c;构建出复合人工智能系统&#xff08;Compound AI Systems&#xff09;。 本文…

wordpress 访问文章内容页 notfound

解决&#xff1a; 程序对应的伪静态规则文件.htaccess是空的 网站根目录下要有 .htaccess 文件&#xff0c;然后将下面的代码复制进去。 <ifmodule mod_rewrite.c>RewriteEngine OnRewriteBase /RewriteRule ^index\.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-fRew…

AI领域最伟大的论文检索网站

&#x1f4d1; 苏剑林&#xff08;Jianlin Su&#xff09;开发的“Cool Papers”网站旨在通过沉浸式体验提升科研工作者浏览论文的效率和乐趣。这个平台的核心优势在于利用Kimi的智能回答功能&#xff0c;帮助用户快速了解论文的常见问题&#xff08;FAQ&#xff09;&#xff0…

STL-Setmap

前言 大家好&#xff0c;我是jiantaoyab&#xff0c;我们将进入到CSTL 的学习。STL在各各C的头文件中&#xff0c;以源代码的形式出现&#xff0c;不仅要会用&#xff0c;还要了解底层的实现。源码之前&#xff0c;了无秘密。 STL六大组件 Container通过Allocator取得数据储存…

多标签分割

https://github.com/PaddlePaddle/PaddleSeg/blob/release/2.9/configs/multilabelseg/README_cn.md

el-select选项框内容过长

利用popper-class实现选项框内容过长&#xff0c;截取显示功能&#xff1a; <el-select popper-class"popper-class" :popper-append-to-body"false" v-model"value" placeholder"请选择"><el-optionv-for"item in opt…

大模型prompt实例:知识库信息质量校验模块

大模型相关目录 大模型&#xff0c;包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步&#xff0c;扬帆起航。 大模型应用向开发路径&#xff1a;AI代理工作流大模型应用开发实用开源项目汇总大模…

war包放在tomcat服务器中,服务启动之后war包并没有正常展开如何解决?

这里我问题出现的是 XWiki 的 WAR 包未能自动展开&#xff0c;于是尝试手动解压并部署。下面是手动解压 WAR 包的步骤思路展示&#xff1a; 1. 准备目录 首先&#xff0c;创建一个新的目录用于存放解压后的文件。在 webapps 目录中创建一个名为 xwiki 的目录&#xff1a; mkd…

webjars学习

webjars介绍 官网&#xff1a;WebJars - Web Libraries in Jars github: WebJars GitHub 文档&#xff1a;WebJars - Documentation WebJAR 是一个用于管理Web前端依赖的工具。它允许开发者将特定的客户端库&#xff08;如JavaScript、CSS等&#xff09;打包成JAR&#xf…

【打工日常】云原生之搭建一款轻量级的开源Markdown笔记工具

一、flatnotes介绍 1.flatnotes简介 一个自托管的&#xff0c;无数据库的笔记网络应用程序&#xff0c;利用平面文件夹的markdown文件进行存储。 2.项目特点 A.干净简单的用户界面B.响应式移动端界面C.原生/所见即所得Markdown编辑模式D.高级搜索功能E.笔记“标签”功能F.…

安服仔番外——IaaS、PaaS、SaaS

云安全也是很重要的一个方向&#xff0c;当然了&#xff0c;今天开启这一篇的目的是up发现安服仔们需要懂的东西很多&#xff0c;确实不只局限于所谓的设备、漏扫、渗透之类的大家明面上都懂的&#xff0c;持续学习&#xff01;恰好up所在的项目对云接触很多&#xff0c;那就刚…

Rank Math Pro插件下载 - 您的SEO优化新引擎

在当今数字时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;对于任何希望提升在线可见性和吸引更多访客的网站来说都是至关重要的。Rank Math Pro是一款先进的SEO插件&#xff0c;专为WordPress网站设计&#xff0c;它能够帮助网站管理员和内容创作者轻松实现SEO最佳实…

撤销及变更:31个自然基金项目!

本周投稿推荐 SSCI • 2区社科类&#xff0c;3.0-4.0&#xff08;社科均可&#xff09; EI • 计算机工程类&#xff08;接收广&#xff0c;录用极快&#xff09; SCI&EI • 4区生物医学类&#xff0c;1.5-2.0&#xff08;录用率99%&#xff09; • 1区工程类&#…

Oracle到PostgreSQL的不停机数据库迁移

1970 年&#xff0c;数据库之父 Edgar Frank Codd 发表了“数据的关系模型”论文&#xff0c;该论文为往后的关系型数据库的发展奠定了基础。1979 年&#xff0c;基于关系模型理论的数据库产品 Oracle 2 首次亮相&#xff0c;并在过去的三四十年时间里&#xff0c;横扫全球数据…

开放式耳机哪个品牌好?性能超强的五款耳机推荐!速来码住!

运动已经融入了我们的日常生活&#xff0c;组团徒步、爬山、跑步、骑行等项目都收到了很人的喜爱。运动加耳机的组合也成了年轻人热爱的方式&#xff0c;在激烈运动的过程中往往会照成颠簸&#xff0c;在佩戴耳机上稳固性和舒适性就变得很重要了&#xff0c;因此开放式蓝牙耳机…

408算法题专项-2019年

题目&#xff1a; 分析&#xff1a;要求空间复杂度为O&#xff08;1&#xff09;&#xff0c;我们可以逆向假设可以开空间&#xff0c;得出一种思路&#xff0c;然后对这种思路优化空间即可得到O&#xff08;1&#xff09; 思路一&#xff1a;假设开空间 思考&#xff1a;再开…