通师高专科技创新社团队训练赛(20211028)题解报告

网站链接

A 矩阵边缘之和

题目链接

题意

输入应该整数矩阵。
输出所有第一行和最后一行的元素之和然后进行相加。

思路

  • 1 第一行第一列最后一行最后一行的和减去四个角的数 。

坑点

  • 1.for循环的使用。
  • 2.输出格式。

代码

#include<stdio.h>
int num[100000][100000] ;//定义行和列的范围 
int main()
{ 
  int n,m;//定义n行m列 
  scanf("%d %d",&n,&m);//输入n行m列 
  for(int i=0;i<n;i++)//先循环 n行 
  {
  		for(int j=0;j<m;j++)//再循环m列 
  		{
  			scanf("%d",&num[i][j]);//循环里输入i行j列 
		}
  }
  int sum=0;//定义和sum为0 
  for(int i=0;i<m;i++)//循环m列 先从0开始循环 到m列之前结束 
  {
  	sum=sum+num[0][i];//加上第一行的数
	sum=sum+num[n-1][i];//加上最后一行的数 
  }	
  for(int i=0;i<n;i++)//循环n行  先从0开始循环 到n行之前结束
  {
  	sum=sum+num[i][0];//加上第一列的数
	sum=sum+num[i][m-1];//加上最后一列的数 
  }	
	printf("%d",sum-num[0][0]-num[0][m-1]-num[n-1][0]-num[n-1][m-1]);//输出的值是 和(sum)减去四个重复加过的 
	
	return 0; 
 
 } 

总结

难度中等 循环的嵌套 for的判断。

B 二维数组右上左下遍历

题目链接

题意

输入一个二维数组,输出右上左下遍历。

思路

  • 1.右上左下遍历。

坑点

  • 1.输入输出的用法。
  • 2.break的使用。

代码

#include<stdio.h>
int num[1000][1000]; //定义num数组的范围 
int main() 
{
  int n,m;//定义n行m列  
  scanf("%d %d",&n,&m);//输入n行m列 
  for(int i=0;i<n;i++)//整个循环先从n行开始循环       从0开始,到n行结束 
  {
  	for(int j=0;j<m;j++)//再从m列开始循环   从0开始,到m列结束 
  	{
  		scanf("%d",&num[i][j]);//输入num[i][j]的数组 
  	}
  } 
	for(int i=0;i<m;i++)//左上部分的循环 
	{
	 	int x=0;//行 
		int y=i; //列    i是变动的 
		for(int j=0;j<n;j++)//每条线上最多n个数。比如(n行n列的对角线) 
		{
		 	if(x>=0&&x<n&&y>=0&&y<m)//行和列需要在合法的区间内 
		 	{
		 		printf("%d\n",num[x][y]);//合法则输出 
		 		x++;//行+1 
		 		y--;//列-1 
			 }
			else
			 {
			 	break;//不合法则打断它,进入到下一个起点 
			 }
		} 
	} 
	for(int i=1;i<n;i++)//右下半部分 
	{
		int x=i;//行 
		int y=m-1; //列  
		for(int j=0;j<n;j++)//每条线上最多n个数。比如(n行n列的对角线) 
		{
			if(x>=0&&x<n&&y>=0&&y<m)//行和列需要在合法的范围内
			{
				printf("%d\n",num[x][y]);//输出x行y列 
		 		x++;//行+1 
		 		y--;//列-1		
			}
                         else
			{
				break;//不合法输出就打断它 
			}
		}
	} 
	
	return 0; 
	  
	}   

总结

难度困难 冒泡排序 break。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霖承科技 LinChance

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值