怎样才能把这个二维数组和二进制结合啊,求指点目前感觉很迷茫,数组学的不够好
2条回答 默认 最新
- 技术专家团-小桥流水 2022-11-25 07:37关注
你的题目具体要求是什么啊?
这个显示都是16个数,
第一组是 16-31,数字依次递增1
第二组是 每8个数字一组,第二小组是再第一小组基础上+8
第三、四组是 每4个数字一组
第五组是等差数列
这题目的数字二进制也没看出什么特别的规律。。你这个题目可以定义一个int a[5][32]的二维数组,并初始化为0,把每组出现的数字再a对应的行中设为1,根据输入的数字选择在所有组中都出现的数字。(这个数字不一定是唯一的,输入1、2、5、-1的时候,25 27 29 31都在3个组中都出现了,25只是第一个出现的数,可能是只输出1个)
代码:
#include <iostream> using namespace std; int main() { int nmb[5][16] = { {16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31}, {8,9,10,11,12,13,14,15,24,25,26,27,28,29,30,31}, {4,5,6,7,12,13,14,15,20,21,22,23,28,29,30,31}, {2,3,6,7,10,11,14,15,18,19,22,23,26,27,30,31}, {1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31} }; int a[5][32] = { 0 }; int b[32] = { 0 }; int i, j, op[5], k=0; //存在的数置1 for (i = 0; i < 5; i++) { for (j = 0; j < 16; j++) { a[i][nmb[i][j]] = 1; } } while (1) { cin >> op[k]; if (op[k] != -1) k++; else break; } //遍历所有输入行,累加出现次数 for (i = 0; i < k; i++) { int row = op[i]-1; //行号 for (j = 0; j < 32; j++) { if (a[row][j] == 1) b[j] += 1; } } int flag = 0; for (i = 0; i < 32; i++) { if (b[i] >= k) //出现 { flag = 1; cout << "您看上的数字是" << i; break; } } if (flag == 0) cout << "没有您看上的数字"; return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 stm32代码移植没反应
- ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
- ¥100 连续两帧图像高速减法
- ¥15 组策略中的计算机配置策略无法下发
- ¥15 如何绘制动力学系统的相图
- ¥15 对接wps接口实现获取元数据
- ¥20 给自己本科IT专业毕业的妹m找个实习工作
- ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
- ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
- ¥50 mac mini外接显示器 画质字体模糊