二维数组pic[4][4]表示一4x4的二值图像,1表示白色像素,0表示黑色像素,编写程序,输出白色像素最多的行号和列号。(数量相同的输出最小行和列号。对于本题示例,输出结果为行号:2,列号:4)

二维数组pic[4][4]
{0 1 1 0
1 0 1 1
1 1 0 1
0 0 0 1}表示一4x4的二值图像,1表示白色像素,0表示黑色像素,编写程序,输出白色像素最多的行号和列号。(数量相同的输出最小行和列号。对于本题示例,输出结果为行号:2,列号:4)

#include <iostream>
using namespace std;

int main() {
    int pic[4][4] = {{0, 1, 1, 0}, {1, 0, 1, 1}, {1, 1, 0, 1}, {0, 0, 0, 1}};
    int row[4] = {0}, col[4] = {0}; // 初始化为0

    // 统计每行每列的白色像素数量
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) {
            if (pic[i][j] == 1) {
                row[i]++;
                col[j]++;
            }
        }
    }

    // 找出行列白色像素数量最大值
    int max_row = 0, max_col = 0;
    for (int i = 1; i < 4; i++) {
        if (row[i] > row[max_row])
            max_row = i;
        if (col[i] > col[max_col])
            max_col = i;
    }

    // 输出结果
    cout << "行号:" << max_row+1 << ",列号:" << max_col+1 << endl;

    return 0;
}
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/741039
  • 除此之外, 这篇博客: 有关循环的练习讲解中的 4、编写代码,模拟用户登录情景,并且只能登录三次 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 要求:只允许输入三次密码,如果密码正确则提示登录成功,如果三次均输入错误,则退出程序。

    #define _CRT_SECURE_NO_WARNINGS 
    #include <stdio.h>
    int main()
    {
    	int i = 0;
    	char password[20] = { 0 };
    	int flag = 0;
    	for (i = 1; i < 4; i++)
    	{
    		printf("请输入密码:");
    		scanf("%s", password);//数组名就是地址
    		if (password == "123456")
    		{
    			printf("登录成功\n");
                flag == 1;
    			break;
    		}
    		else
    		{
    			printf("第%d次密码错误\n", i);
    		}
    	}
    	if (flag == 0)
    	{
    		printf("三次密码均输入错误,退出程序\n");
    	}
    	return 0;
    }

     这代码看似没毛病,其实运行起来却和我们想象的不太一样

    我假设的密码不就是123456,为什么还是提醒我密码错误了呢?

    原因很简单,判断两个字符串是否相等,要使用strcmp函数,不能直接使用”==“,同时,这个函数会接收一个返回值,

    如果第一个字符串小于第二个字符串,返回<0的数字。(它们比的是ASCII)

    如果第一个字符串大于第二个字符串,返回>0的数字。

    如果第一个字符串等于第二个字符串,返回==0。

    所以最后正确的代码在下面:

    #include <stdio.h>
    int main()
    {
    	int i = 0;
    	char password[20] = { 0 };//字符串数组,可以存放字符串
    	int flag = 0;
    	for (i = 1; i < 4; i++)
    	{
    		printf("请输入密码:");
    		scanf("%s", password);   //数组名本质就是地址,所以不需要取地址
    		if (strcmp(password,"123456") == 0)
    		{
    			printf("登录成功\n");
    			flag = 1;
    			break;
    		}
    		else
    		{
    			printf("第%d次密码错误\n", i);
    		}
    	}
    	if (flag == 0)
    	{
    		printf("三次密码均输入错误,退出程序\n");
    	}
    	return 0;
    }