#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;
}
注意对角线下的元素的特性就是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;
}
这题乍一看很难,但是我们可以在原先二维数组的基础上在右边复制一个,然后对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;
}
一道模拟题,过程稍微复杂一点,需要考虑怎么才能绕一圈
#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;
}
这道题定义一个字符二维数组然后慢慢判断就好了,稍微长一点,细节处容易出错
#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;
}