深圳技术大学 数组2

57e18107987647a381a5cb5bf673bbc8.png

#include <stdio.h>
int a[10][10] = { 0 };
int main()
{
	int m, n;
	scanf("%d%d", &m, &n);
	for (int i = 0; i < m; i++)
	{
		for (int j = 0; j < n; j++)
		{
			scanf("%d", &a[i][j]);
		}
	}
	for (int i = 0; i < m; i++)
	{
		int num = 0;
		for (int j = 0; j < n; j++)
		{
			num += a[i][j];
		}
		printf("%d\n", num);
	}
	return 0;
}

 47a91c84047e45fd947806024a579a96.png

注意对角线下的元素的特性就是j<i,然后就很简单了 

#include <stdio.h>
#include <stdlib.h>
int a[15][15] = { 0 };
int main()
{
	int t;
	scanf("%d", &t);
	int n;
	while (t--)
	{
		int flag = 1;
		scanf("%d", &n);
		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)
				{
					if (a[i][j] != 0)
					{
						flag = 0;
					}
				}
			}
		}
		if (flag == 0)
		{
			printf("NO\n");
		}
		else 
		{
			printf("YES\n");
		}
		memset(a, 0, sizeof(int) * 15 * 15);
	}
	return 0;
}

 6a63cf97b59a4cdb9d261cde731a3048.png

这题乍一看很难,但是我们可以在原先二维数组的基础上在右边复制一个,然后对m的值 对n取模,再之间输出就行了

#include <stdio.h>
#include <stdlib.h>
int a[15][15] = { 0 };
int main()
{
	int m, n;
	scanf("%d%d", &m, &n);
	m = m % n;
	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 = n; j < n + n; j++)
		{
			a[i][j] = a[i][j - 3];
		}
	}
	for (int i = 0; i < n; i++)
	{
		for (int j = m - 1; j < m + n - 1; j++)
		{
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}
	return 0;
}

fced7b836f09422d81c07ff456448a6b.png

一道模拟题,过程稍微复杂一点,需要考虑怎么才能绕一圈

#include <stdio.h>
#include <stdlib.h>
int a[15][15] = { 0 };
int main()
{
	int n;
	scanf("%d", &n);
	int k = 1;
	for (int i = 0; i <= n / 2; i++) 
	{	
		int x = i, y = i;
		for (; y < n - i - 1; y++) 
		{		//行向右
			a[x][y] = k;
			k++;
		}
		for (; x < n - i - 1; x++) 
		{		//列向下
			a[x][y] = k;
			k++;
		}
		for (; y > i; y--) 
		{		//行向左
			a[x][y] = k;
			k++;
		}
		for (; x > i; x--) 
		{		
			a[x][y] = k;
			k++;
		}
	}
	if (n % 2 == 1)	
	{
		a[n / 2][n / 2] = n * n;
	}
	for (int x = 0; x < n; ++x) 
	{
		for (int y = 0; y < n; ++y) 
		{
			printf("%3d", a[x][y]);
		}
		printf("\n");
	}
	return 0;
}

 2b3ac29f63f84c749e7d8f5acec25ae9.png

这道题定义一个字符二维数组然后慢慢判断就好了,稍微长一点,细节处容易出错 

#include <stdio.h>
#include <stdlib.h>
char a[15][15] = { 0 };
int main()
{
	int n;
	scanf("%d", &n);
	int nn = n;
	n = n * 2;
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			scanf(" %c", &a[i][j]);
		}
	}
	int k;
	scanf("%d", &k);
	int kk = k;
	int wrong = 0;
	int ac = 0;
	int win = 0;
	while (kk--)
	{
		int x1, y1, x2, y2;
		scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
		if (a[x1][y1] == a[x2][y2] && a[x1][y1]!='*' && a[x2][y2] != '*')//答对的情况
		{
			a[x1][y1] = '*';
			a[x2][y2] = '*';
			ac++;//正确次数
			if (ac == (2 * nn * nn))
			{
				printf("Congratulations!\n");
				break;
			}
			for (int i = 1; i <= n; i++)
			{
				for (int j = 1; j <= n; j++)
				{
					printf("%c", a[i][j]);
					if (j != n)
					{
						printf(" ");
					}
				}
				printf("\n");
			}
		}
		else
		{
			printf("Uh-oh\n");
			wrong++;//错误次数
		}

		if (wrong == 3)
		{
			printf("Game Over\n");
			break;
		}

		
	}
	return 0;
}

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值