数组练习题(编程题)

2023-11-17

1.从终端(键盘)读⼊20个数据到数组中,统计其中正数的个数,并计算这些正数之和

    int sum = 0;
	int count = 0;
	int input;
	int arr[20] = {0};//初始化处理 arr	0x0000002d1b13f8c0 {-858993460, -858993460, -858993460, -858993460, -858993460, -858993460, -858993460, ...}	int[20]
	cout << arr << endl;//输出首地址 +		arr	0x0000002d1b13f8c0 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}	int[20]
	for (int i = 0; i <= 19; i++)
	{
		cin >> arr[i];	
	}
	for (int b = 0; b < 20; b++) {
		if (arr[b] > 0) {
			count++;
			sum += arr[b];
		}
	}
	printf("正数个数为为:%d", count);
	printf("正数之和为:%d", sum);

2、 从终端(键盘)将5个整数输⼊到数组a中,然后将a逆序复制到数组b中,并输出b中各元素的值。

    int arr[5] = { 0 };
	int brr[5];
	for (int i = 0; i <= 4; i++)
	{
		cin >> arr[i];
		brr[4 - i] = arr[i];
	}
	for (int b = 0; b <= 4; b++)
	{
		cout << brr[b] << "\t";
	}

悲哀you!冒泡排序又忘了

3.随机产⽣N个两位⾃然数,降序排列后输出。(设N为20)

    const int N = 20;
	int arr[N];
	srand(time(NULL));//产生N个那就N次循环  这里是随机数种子
	for (int i = 0; i < N; i++) {
		arr[i] = rand() % 90 + 10;//第一步生成20个数据
	}
	for (int i = 0; i < N; i++) {
		cout << arr[i] << "\t";
	}
	cout << "----------------------------------------------------------------------------------" << endl;
	//第二步排序
	for (int i = 0; i < N; i++) {
		for (int j = i + 1; j < N; j++) {
			if (arr[i] < arr[j]) {
				arr[i] = arr[i] ^ arr[j];
				arr[j] = arr[j] ^ arr[i];
				arr[i] = arr[i] ^ arr[j];
			}
		}
	}
	//第三步输出
	for (int i = 0; i < N; i++) {
		cout << arr[i] << "\t";
	}

4、 从键盘输⼊10个战⼠的⾝⾼,输出最⾼、最低的⾝⾼。

int hrr[10] = {0};
int x;
int y;

for (int i = 0; i<10; i++) {
	
	cin >> hrr[i];
}
for (int i = 0; i < 10; i++) {
	x = hrr[0];
	if (hrr[i] <= hrr[i + 1]) {
		x = hrr[i];//最小值
	}
	else if (hrr[i] > hrr[i + 1]) {
		y = hrr[i];//最大值
	}
}
std::cout << "最大身高是"<< x << " "<<"最小身高是" << y << endl;

5、 实现随机打乱⼤⼩为5的数组,要求所有元素不能出现在原位上。

214214

10、输⼊⼀⾏字符,统计其中有多少个字母(包括⼤写字母和⼩写字母)。

    int count = 0;
	string line;
	getline(cin,line);
	for (int i = 0; i < line.length(); i++) {
		char str = line[i];
		if ((str >= 'a' && str <= 'z') || (str >= 'A' && str <= 'Z')) count++;
	}
	cout << "总共有字母:" << count << "个" << endl;

11、输⼊⼀个字符串,判断它是否是对称串。如”abcdcba”是对称串,”123456789”不是。

string str;
getline(cin,str);
int a = 0;
int b = str.length() - 1;
while (a < b) {
	if (str[a] != str[b]) {
		return false;
		cout << "不是对称字符串" << endl;
	}
	else {
		a++;
		b--;
		cout << "是对称字符串" << endl;
	}
}

12、从键盘输⼊两个字符串,判断它们是否相同。

string str1;
string str2;
getline(cin, str1);
getline(cin, str2);
int i,j;
if (str1.length() !=  str2.length()) {
	return false;
}
else {
	for (i = 0,j = 0; i < str1.length(),j < str2.length(); i++, j++) {
		if (str1[i] != str2[j]) {
			return false;
		}
		else {
			cout << "两字符串相同" << endl;
		}
	}
}

string s1, s2;
cin >> s1 >> s2;
if (s1 == s2) {//问题:直接这么比就行了,那么我前面那种方法是不是多余了?
	cout << "Yes" << endl;
}
else {
	cout << "No" << endl;
}

for (int i = 0; i < str.length(); i++) {
	if (str[a] == str[b]) {
		a++;
		b--;
	}
	else {
		return false;
	}
}

13、从键盘输⼊两个字串,输出其中较短的那个字串,并输出它的长度。

string str1, str2;
cin >> str1 >> str2;
//法一
str1.length() > str2.length() ? cout << str2.length() << endl : cout << str1.length() << endl;
//法二
if (str1.length() < str2.length()) {
	cout << str1.length() << endl;
}
else {
	cout << str2.length() << endl;
}

14、从键盘输⼊长度不等的两个字串,将短串连接于长串之后输出。(有问题)

为啥第一个方法会报出这样的弹窗??

char str2[10];
char str1[10];
cin >> str1 >> str2;
int len = -1;
int len1 = -1;
while (str1[++len] != '\0') {};
while (str2[++len1] != '\0') {};
if (len == len1)return false;
if (len > len1) {
	for (int i = 0; (str1[i + len] = str2[i]) != '\0'; i++);
	cout << str1;
}
else {
	for (int j = 0; (str2[j + len1] = str1[j]) != '\0'; j++);
	cout << str2;//问题:为啥汇报个弹窗警告
}

string str1, str2;
cin >> str1 >> str2;
int len = -1;
string str3;
if (str1.length() == str2.length()) {
	return false;
}
else {
	if (str1.length() > str2.length()) {
		while (str1[++len] != '\0');
		cout << len;
		//for (int i = 0; (str3[i + len] = str2[i]) != '\0'; i++);用于字符数组
		cout << str1 << endl;
	}
}

15、从键盘输⼊长度不等的两个字串,将长串连接于短串之后输出。

char str2[10];
char str1[10];
cin >> str1 >> str2;
int len = -1;
int len1 = -1;
while (str1[++len] != '\0') {};
while (str2[++len1] != '\0') {};
if (len == len1)return false;
if (len > len1) {
	for (int i = 0; (str1[i + len] = str2[i]) != '\0'; i++);
	cout << str1;
}
else {
	for (int j = 0; (str2[j + len1] = str1[j]) != '\0'; j++);
	cout << str2;//问题:为啥汇报个弹窗警告
}

string str1, str2;
cin >> str1 >> str2;
int len = -1;
string str3;
if (str1.length() == str2.length()) {
	return false;
}
else {
	if (str1.length() > str2.length()) {
		while (str1[++len] != '\0');
		cout << len;
		//for (int i = 0; (str3[i + len] = str2[i]) != '\0'; i++);用于字符数组
		cout << str1 << endl;
	}
}

16、从键盘输⼊两个字串,输出其中较长的那个字串,并输出它的长度。

char str[100] = { 0 };
char str1[100] = { 0 };
cin >> str >> str1;
strcmp(str, str1) == 1 ? cout << strlen(str) : cout<< strlen(str1);

17、输⼊任意⼀⾏字符,降序排列之。

char str[100];
cin >> str;
for (int i = strlen(str) - 1; i >= 0; i--) {
	cout << str[i];
}


string str1;//char str[10] = {0};
getline(cin, str1);//cin>>str1;
for (int i = str1.length() - 1; i >= 0; i--) {
	cout << str1[i];
}

18、输⼊⼀⾏字符串,按如下规则加密:如果是英⽂字母则⼤写变⼩写、⼩写变⼤写,对⾮英⽂字符则保持不变。试写加密程序。

问题:有什么优化吗?????第一种方法

char str[10];
cin >> str;
int i = -1;
while (str[++i] != '\0') {
	if ((str[i] >= 'A' && str[i] <= 'Z')) {
		str[i] += 32;
	}
	else if(str[i] >= 'a' && str[i] <= 'z'){
		str[i] -= 32;//问题:有什么优化吗?????
	}
}
string str;
cin >> str;
for (int i = 0; i < str.length(); i++) {
	if ((str[i] >= 'A' && str[i] <= 'Z')) {
		str[i] = str[i] + 32;
	}
	else if(str[i] >= 'a' && str[i] <= 'z'){
		str[i] = str[i] - 32;
	}
}
cout << str;

19、输⼊⼀⾏⼩写英⽂字母,按如下规则加密:a→c、b→d、…、x→z、y→a、z→b,试写加密程序。

有个问题就是,他要每个单词之间有间隔,但是最后一个单词我没有在他后面加上空格

这个有点问题?????????,感觉逻辑上没有错呀!

char str[100];
cin >> str;
int count = 0;
if (str[0] == ' ') {
	count++;//只有一个单词的情况
}
for (int i = 0; i < strlen(str) ; i++) {
	if (str[i] == ' ' || str[i+1] == '\0') {
		count++;//有问题还是不会改
	}
}
cout << count << endl;
//这个方法没得毛病
string s;
getline(cin, s);
int result = 0;
if (s[0] == ' ') {
	result++;//只有一个单词的情况
}
for (int i = 0; i < s.length(); i++) {
	if (s[i] == ' ' || s[i+1] == '\0') {
		result++;//有个问题就是,他要每个单词之间有间隔,但是最后一个单词我没有在他后面加上空格键,漏了
	}
}
cout << "单词数是:" << result << endl;

20、输⼊⼀⾏英⽂,已知各单词之间⽤1个空格相隔(设第⼀个单词前没有空格),统计这⾏英⽂有多少个单词

char c;
    while (cin >> c) {
        if (c >= 'a' && c <= 'z') {
            if (c <= 'x') {
                c += 2;
            } else {
                c -= 24;
            }
        }
        cout << c;
    }


string s;
cin >> s;
for (int i = 0; i < s.length(); i++) {
	if (s[i] >= 'a' && s[i] <= 'z') {
		s[i] = 'a' + (s[i] - 'a' + 2) % 26;
	}
}
cout << s << endl;

编写程序,求⼀个整数任意次⽅的最后三位数。即求x^y值的最后三位数,要求x,y从键盘输⼊

    int x, y;
	cin >> x >> y;
	int res = 1;
	for (int i = 0; i < y; i++)
	{
		res *= x;
		res = res % 1000;
	}
	cout << fixed << setprecision(0) << x << "^" << y << "的最后三位数为:" << setw(3) << res << endl;
	cout << x << "^" << y << "的最后三位数为:" << setfill('0') << setw(3) << res << endl;

编写程序,找出1⾄99之间的全部同构数。同构数是这样⼀组数:它出现在平⽅数的右边。例如,5是25右边的数,25是625右边的数, 5和25就是同构数。

有啥优化的办法??

for (int i = 1; i <= 99; i++) {
		int sqrt = i * i;
		int qb = sqrt % 10;
		int qc = sqrt % 100;
		if (qb == i || qc == i) {
			cout << i << " ";
		}
	}
有啥优化的办法??

每个苹果0.8元,第⼀天买2个苹果,第⼆天开始买前⼀天的2倍,直⾄购买的苹果个数达到不超过100的最⼤值。编写程序求每天平均花 多少钱。

    int total_apples = 0;  // 已经购买的苹果个数
	double total_cost = 0.0;  // 已经花费的总金额
	int apples = 2;  // 第一天购买的苹果个数
	double cost = 0.8 * apples;  // (第一天的)花费
	total_apples += apples;
	total_cost += cost;
	while (apples * 2 <= 100 - total_apples) {  // 每天购买的苹果个数不能超过100个
		apples *= 2;
		cost = 0.8 * apples;
		total_apples += apples;
		total_cost += cost;
	}
	double average_cost = total_cost / total_apples;  // 每天平均花费的金额
	cout << "每天平均花费:" << average_cost << "元" << endl;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数组练习题(编程题) 的相关文章

随机推荐

  • Java无向图链表、邻接表实现以及深度优先遍历广度优先遍历

    概述 图的存储形式中链表是通过数组加LinkedList 不一定是LinkedList 可以自己写链 也可以选择其他的集合数据结构 邻接表采用的是二维数组的结构 链表存储形式的相关实现 数据存储结构与基础操作 初始化数据存储结构 priva
  • mysql5.7小版本升级-windows

    mysql5 7小版本升级 windows 应用场景 mysql 5 7 20升级到当前最新的5 7 31 Windows环境 官网下载链接 https dev mysql com downloads mysql 5 7 html 注意 操
  • 区间预测

    区间预测 MATLAB实现GARCH分位数时间序列预测 目录 区间预测 MATLAB实现GARCH分位数时间序列预测 效果一览 基本介绍 模型描述 程序设计 研究总结 参考文献 效果一览 基本介绍 GARCH代表广义自回归条件异方差 它是一
  • 2015~2019年教育大数据会议期刊汇总及论文总结(不再更新)

    以下论文大部分与个性化导学相关 1 数据挖掘会议 AAAI AAAI 17 Question dif culty prediction for reading problems in standard tests AAAI 18 Medic
  • ftp服务器密码为空,ftp服务器无密码设置密码

    ftp服务器无密码设置密码 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 如果在创建弹性云服务器时未设置密码 或密码丢失
  • 可以自定义公式的计算器_超多的计算器 总有一个用得上

    本期为大家分享几款计算器 这几款计算器足以满足你所有需求 功能强大 你值得拥有 01 Symbolab Practice 你的私人数学导师 以步骤展示任何数学问题解决步骤 数学计算Symbolab计算器将能为你解决 1 代数 等式 不等式
  • 单链表(数组模拟:静态链表)

    单链表 实现一个单链表 链表初始为空 支持三种操作 向链表头插入一个数 删除第 kk 个插入的数后面的数 在第 kk 个插入的数后插入一个数 现在要对该链表进行 MM 次操作 进行完所有操作后 从头到尾输出整个链表 注意 题目中第 kk 个
  • MySQL 临时表与内存表的区别

    文章目录 1 临时表 2 内存表 3 区别 4 小结 在 MySQL 中 Temporary Table 临时表 和 Memory Table 内存表 是两种不同的表类型 它们有一些重要的区别和用途 1 临时表 临时表 Temporary
  • PAA介绍

    ECCV 2020 的一篇文章 论文地址 https arxiv org abs 2007 08103 目录 一 简介 摘要 整个策略流程为 二 相关背景介绍 三 提出的方法 3 1 概率Anchor分配算法 3 2 测试阶段加入预测IoU
  • 我用ChatGPT写2023高考语文作文(一):全国甲卷

    2023年 全国甲卷 适用地区 广西 贵州 四川 西藏 人们因技术发展得以更好地掌控时间 但也有人因此成了时间的仆人 这句话引发了你怎样的联想与思考 请写一篇文章 要求 选准角度 确定立意 明确文体 自拟标题 不要套作 不得抄袭 不得泄露个
  • 怎么修复老照片?给你推荐这几个修复方法

    相信大家的家里都有老照片吧 那在你们翻看这些老照片的时候 有没有发现有些老照片变得有些破旧 泛黄 模糊等情况呢 看到这些情况 大家是不是会很心疼呢 因为这些老照片都充满了各种各样的回忆 根本拍不出第二张同样的照片 但其实我们可以使用软件来修
  • 设计模式原则-开闭原则

    设计模式原则 开闭原则 1 概述 开闭原则 Open Closed Principle 是编程中最基础 最重要的设计原则 一个软件实体如类 模块和函数应该对扩展开放 对提供方 对修改关闭 对使用方 用抽象构建框架 用实现扩展细节 当软件需要
  • 8个Python实用脚本,赶紧收藏

    脚本写的好 下班下得早 程序员的日常工作除了编写程序代码 还不可避免地需要处理相关的测试和验证工作 例如 访问某个网站一直不通 需要确定此地址是否可访问 服务器返回什么 进而确定问题在于什么 完成这个任务 如果一味希望采用编译型语言来编写这
  • java调用webservice接口 三种方法

    摘自其它 webservice的 发布一般都是使用WSDL web service descriptive language 文件的样式来发布的 在WSDL文件里面 包含这个webservice暴露在外面可供使用的接口 今天搜索到了非常好的
  • python 协程可以嵌套协程吗_Python学习后有哪些方向可以选择?Python有什么好的学习方法吗?(附教程)...

    随着人工智能的发展 Python近两年也是大火 越来越多的人加入到Python学习大军 对于毫无基础的人该如何入门Python呢 这里整理了一些个人经验和Python入门教程供大家参考 如果你是零基础入门 Python 的话 建议初学者至少
  • 3.1 向量的模和单位向量

    向量的长度和单位向量 向量的长度 模 u 3 4 该向量的大小是多少 u 5 二范数 欧拉距离 在二维空间中 可以直接根据勾股定理计算出 u OP 2 3 5 该向量的大小是多少 n维向量 求模 同理 单位向量 在向量上记 为单位向量 长度
  • 股票数据API整理

    最近在做股票分析系统 数据获取源头成了一大问题 经过仔细的研究发现了很多获取办法 这里整理一下 方便后来者使用 获取股票数据的源头主要有 数据超市 雅虎 新浪 Google 和讯 搜狐 ChinaStockWebService 东方财富客户
  • k8s--基础--23.1--认证-授权-准入控制--介绍

    k8s 基础 23 1 认证 授权 准入控制 介绍 1 介绍 k8s对我们整个系统的认证 授权 访问控制做了精密的设置 对于k8s集群来说 apiserver是整个就集群访问控制的唯一入口 我们在k8s集群之上部署应用程序的时候 可以通过宿
  • 数据结构_课程设计——最小生成树:室内布线

    转载请注明出处 http blog csdn net lttree 这道课程设计 费不少时间 太麻烦了 明明是能力不够 最小生成树 室内布线 题目要求 装修新房子是一项颇为复杂的project 如今须要写个程序帮助房主设计室内电线的布局 首
  • 数组练习题(编程题)

    1 从终端 键盘 读 20个数据到数组中 统计其中正数的个数 并计算这些正数之和 int sum 0 int count 0 int input int arr 20 0 初始化处理 arr 0x0000002d1b13f8c0 85899