怎样才能把这个二维数组和二进制结合啊,求指点目前感觉很迷茫,数组学的不够好
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 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
- ¥60 pb数据库修改与连接
- ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
- ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
- ¥20 神经网络Sequential name=sequential, built=False
- ¥16 Qphython 用xlrd读取excel报错
- ¥15 单片机学习顺序问题!!
- ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
- ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
- ¥15 相敏解调 matlab