C++ 二级测试卷及答案

1.与指定数字相同的数的个数

题目描述:输出一个整数序列中与指定数字相同的数的个数。
输入
输入包含三行:
第一行为N,表示整数序列的长度(N≤100);
第二行为N个整数,整数之间以一个空格分开;
第三行包含一个整数,为指定的数字m。
输出
输出为N个数中与m相同的数的个数。
输入样例
3
2 3 2
2
输出样例
2

#include<iostream>  
using namespace std;  
int main()  
{  
    int n,m,a[101];  
    int ans=0;  
    int i;  
      
      
    cin>>n;//共有n个数  
    for(i=1;i<=n;i++)  
        cin>>a[i];//读入n个数  
    cin>>m;//指定数m  
  
    for(i=1;i<=n;i++)//对数据逐个进行比较  
    if(a[i]==m)//若与指定数字相同  
            ans++;//计数器+1  
      
    cout<<ans<<endl;  
      
    return 0;  
}

2.图像相似度

题目描述
给出两幅相同大小的黑白图像(用0-1矩阵)表示,求它们的相似度。
说明:若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点。两幅图像的相似度定义
为相同像素点数占总像素点数的百分比。
输入
第一行包含两个整数m和n,表示图像的行数和列数,中间用单个空格隔开。1<= m<= 100,1<= n<= 100.
之后m行,每行n个整数0或1,表示第一幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。
之后m行,每行n个整数0或1,表示第二幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。
输出
一个实数,表示相似度(以百分比的形式给出)精确到小数点后两位。
样例输入
3 3
1 0 1
0 0 1
1 1 0
1 1 0
0 0 1
0 0 1
样例输出
44.44
 

解析:
解决方法:
首先我们要明确我们要做什么?
首先:输入矩阵的行号(m)和列号(n),然后输入一个(2m)*n的矩阵。
前m*n矩阵是第一幅画,后m*n矩阵是第二幅画。
然后我们要找到两幅画之间的联系,第一幅画与第二幅画对应的坐标点的行号始终保持在m个单位的距离。
而他们的列号始终相等。例如:第一幅画的某个坐标点是(2,3),那么第二幅画相对应的坐标点是(2+m,3)
其次我们要去判断,如果两幅画相对应的坐标点相同,则加一。得出总数sum。
最后进行计算:sum/(m*n);

#include <stdio.h>
#include <stdlib.h>
#define Max 101
int main()
{
    int m,n;
    int i,j;
    int sum=0;
    int matrix[Max][Max];
    int point;
    scanf("%d%d",&m,&n);
    for (i=1;i<=m;i++)
        for (j=1;j<=n;j++)
            scanf("%d", &matrix[i][j]);
    for (i=1;i<=m;i++)
        for (j=1;j<=n;j++)
        {
            scanf("%d", &point);
            if (point==matrix[i][j])
                sum++;
        }
    printf("%.2f",(float)(sum*100)/(m*n));

    return 0;
}

3.找第一个只出现一次的字符

题目描述:给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。
输入
一个字符串,长度小于100000。
1
输出
输出第一个仅出现一次的字符,若没有则输出no。
1
样例输入
abcabd
样例输出
c

#include<stdio.h>
#include<string.h>
int main()
{
	char a[100000];
	int c[100000]={0};				//存放每个字符出现的次数,初始时全为0
	gets(a);
	for(int i=0;i<strlen(a);i++)	//遍历字符串中每一个字符
	{
		for(int j=0;j<strlen(a);j++)//遍历第二次让a[j]和a[i]对比
		{
			if(a[i]==a[j])			
				c[i]++;				//如果相同c[i]++
		}
		if(c[i]==1)
		{
			printf("%c\n",a[i]);
			return 0;
		}
	}
	printf("no\n");
	return 0;
}

4.最大值和最小值的差

题目描述:输入11个整数,计算它们的最大值和最小值。
样例输入
0 1 2 3 4 5 6 7 8 9 10
样例输出
10 0 

#include<stdio.h>
int main(){
    int a[11];
    for(int i=0; i<11; i++){
        scanf("%d",&a[i]);
    }
    for(int i=0;i<11-1;i++) {
        for(int j=i+1;j<11;j++){
            if(a[i]>a[j]){
                int t = a[i];
                a[i] = a[j];
                a[j] = t;
            }
        }
    }
    printf("%d %d",a[10],a[0]);
}

5.和为给定数

题目描述:给出若干个整数,询问其中是否有一对数的和等于给定的数。
输入
第一行是整数n(0<n≤100,000),表示有n个整数。
第二行是n个整数。整数的范围是在0到108之间。
第三行是一个整数m(0≤m≤230),表示需要得到的和。
输出
若存在和为m的数对,输出两个整数,小的在前,大的在后,中间用单个空格隔开。若有多个数对满足条件,
选择数对中较小的数更小的。若找不到符合要求的数对,输出一行NO。
样例输入
4
2 5 1 4
6
样例输出
1 5

#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
#include <algorithm>
#include <cstring>
#include <string>
#include <cmath>
#include <map>
#include <cstdlib>
#define sf(a) scanf("%d\n",&a)
#define pf(a) printf("%.6lf ",a)
#define E 1e-8
#define ms(a) memset(a,0,sizeof a)
#define rep(a,b,c) for(int a=b;a<=c;a++)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int inf=0x3f3f3f3f;
const int idata=1e5+5;
ll minn=inf,maxx=-inf;
ll n,ans,t,k;
char *ch;
ll step[idata];
//ll temp[idata];
ll cnt;
ll query,judge,flag;
priority_queue< int,vector<int>,greater<int> >q;
pair<int,int>p[idata];
 
int main()
{
    while(cin>>n)
    {
        rep(i,1,n)
            cin>>step[i];
        stable_sort(step+1,step+1+n);
        cin>>query;
        rep(i,1,n-1)
        {
            int temp=query-step[i];
            if(binary_search(step+1,step+1+n,temp))
            {
                cout<<step[i]<<" "<<temp<<endl;
                return 0;;
            }
        }
        cout<<"No"<<endl;
    }
    return 0;
}

6.成绩排序

题目描述:给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。
输入
第一行为n(0<n<20),表示班里的学生数目;
接下来的n行,每行为每个学生的名字和他的成绩,中间用单个空格隔开。名字只包含字母且长度不超过20,成绩为一个不
大于100的非负整数。
输出
把成绩单按分数从高到低的顺序进行排序并输出,每行包含名字和分数两项,之间有一个空格。
输入样例
4
Kitty 80
Hanmeimei 90
Joey 92
Tim 28
输出样例
Joey 92
Hanmeimei 90
Kitty 80
Tim 28

#include<iostream>
using namespace std;
#include <stdio.h>
#include <string.h>
struct node{
    char name[30];
    int score;
}stu[30],temp;
int main()
{
    int n;
    int i,j;
 
    cin>>n;
    for(i=1;i<=n;i++)
        cin>>stu[i].name>>stu[i].score;
    for(i=1;i<=n;i++)
        for(j=i+1;j<=n;j++)
            if(stu[i].score<stu[j].score)
            {
                temp=stu[i];
                stu[i]=stu[j];
                stu[j]=temp;
            }
            else if(stu[i].score==stu[j].score&&strcmp(stu[i].name,stu[j].name)>0)
            {
                temp=stu[i];
                stu[i]=stu[j];
                stu[j]=temp;
            }
    for(i=1;i<=n;i++)
        cout<<stu[i].name<<" "<<stu[i].score<<endl;
    return 0;
}

7.计算两个日期之间的天数

计算两个日期间的天数,并在用户输入时检查月份和日期是否有误,有误时要求重新输入。

#include<stdio.h>
#include<stdlib.h>
int func1(int flag,int mon);
int func2(int mon, int day, int year);
int check(int in, int flag);
int main() 
{
	system("color F0");
	int year1,year2,mon1,mon2,day1,day2,flag,i,p,n=0,m=0;
	void input(int *year,int *mon,int *day);
	void change(int* x, int* y);
	while (1)
	{
		printf("请输入起始时间:\n");
		input(&year1, &mon1, &day1);
		printf("请输入结束时间:\n");
		input(&year2, &mon2, &day2);
		if ((year1 * 10000 + mon1 * 100 + day1) > (year2 * 10000 + mon2 * 100 + day2)){
			change(&year1, &year2);
			change(&mon1, &mon2);
			change(&day1, &day2);
		}
		p = year2 - year1;
		i = p;
		while (p >= 2)
		{
			p = p - 1;
			flag = year1 + p;
			if ((flag % 4 == 0) && ((flag % 400 == 0) || (flag % 100 != 0))) {
				n++;
			}
			else {
				m++;
			}
		}
		year1 = ((year1 % 4 == 0) && ((year1 % 400 == 0) || (year1 % 100 != 0))) ? 366 : 365;
		year2 = ((year2 % 4 == 0) && ((year2 % 400 == 0) || (year2 % 100 != 0))) ? 366 : 365;
		flag = func2(mon2, day2, year2) - func2(mon1, day1, year1);
		if (i == 0)
			printf("日期相差%d天\n\n", flag);
		else if (i == 1)
			printf("日期相差%d天\n\n", flag + year1);
		else
			printf("日期相差%d天\n\n", flag + year1 + n * 366 + m * 365);
	}
	return 0;
}
void input(int* year, int* mon, int* day)
{
	int flag;
	printf("年:");
	scanf_s("%d", year);
	printf("月:");
	scanf_s("%d", mon);
	*mon = check(*mon,12);
    flag = ((*year % 4 == 0) && ((*year % 400 == 0) || (*year % 100 != 0))) ? 1 : 0;
	flag = func1(flag, *mon);
	printf("日:");
	scanf_s("%d", day);
	*day = check(*day, flag);
}
void change(int* x, int* y)
{
	int z;
	z = *y;
	*y = *x;
	*x = z;
}
int func1(int flag,int mon)
{
	int a, b;
	a = (mon == 2) ? 1 : 0;
	b = ((mon == 1) || (mon == 3) || (mon == 5) || (mon == 7) || (mon == 8) || (mon == 10) || (mon == 12)) ? 1 : 0;
	switch (a * 4 + b * 2 + flag)
	{
	case 0:
	case 1:return 30; break;
	case 2:
	case 3:return 31; break;
	case 4:return 28; break;
	case 5:return 29; break;
	}
}
int func2(int mon, int day, int year)
{
	int flag,num=0;
	if (year == 365){
		for (flag = 1; flag < mon; flag++)
		{
			num = func1(0, flag) + num;
		}
	}
	else{
		for (flag = 1; flag < mon; flag++)
		{
			num = func1(1, flag) + num;
		}
	}
	return num + day;
}
int check(int in, int flag)
{
	if ((in <= flag) && (in >= 1))
		return in;
	else{
		printf("输入有误,请重新输入:");
		scanf_s("%d", &in);
		return check(in,flag);
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/901578.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

练习LabVIEW第十九题

学习目标&#xff1a; 刚学了LabVIEW&#xff0c;在网上找了些题&#xff0c;练习一下LabVIEW&#xff0c;有不对不好不足的地方欢迎指正&#xff01; 第十九题&#xff1a; 创建一个程序把另外一个VI的前面板显示在Picture控件中 开始编写&#xff1a; 在前面板放置一个二…

C语言教程——数组(2)

目录 系列文章目录 前言 4、数组作为函数参数 4.1冒泡函数的错误设计 4.2数组名是什么&#xff1f; 总结 前言 我们知道一维数组是连续存放的&#xff0c;随着数组下标的增长&#xff0c;地址是由低到高依次存放的&#xff0c;二维数组&#xff0c;也是在内存里面是连续存放的…

Linux | 配置docker环境时yum一直出错的解决方法

yum出错 Centos 7版本出错问题补充&#xff1a;什么是yumyum 和 apt 有什么区别&#xff1f; Centos 7版本 [rootlocalhost yum.repos.d]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)出错问题 问题1 Could not retrieve mirrorlist http://mirrorlist.ce…

SQLite 3.47.0 发布,大量新功能来袭

SQLite 开发团队于 2024 年 10 月 21 日发布了 SQLite 3.47.0 版本&#xff0c;我们来了解一下新版本的改进功能。 触发器增强 SQLite 3.47.0 版本开始&#xff0c;触发器函数 RAISE() 的 error-message 参数可以支持任意 SQL 表达式。在此之前&#xff0c;该参数只能是字符串…

论1+2+3+4+... = -1/12 的不同算法

我们熟知自然数全加和&#xff0c; 推导过程如下&#xff0c; 这个解法并不难&#xff0c;非常容易看懂&#xff0c;但是并不容易真正理解。正负交错和无穷项计算&#xff0c;只需要保持方程的形态&#xff0c;就可以“预知”结果。但是这到底说的是什么意思&#xff1f;比如和…

Nodejs使用pkg打包为可执行文件

安装pkg npm install -g pkg查看pkg命令 pkg --help修改package.json 新增bin入口配置 {"name": "takescreenshot","version": "1.0.0","bin": "app.js", // 新增bin入口配置"scripts": {"t…

day10:ssh服务-跳板机

一&#xff0c;ssh服务概述 ssh服务概述 ssh&#xff08;Secure Shell&#xff09;是一种用于在不安全网络中进行安全登录、远程执行命令及传输文件的网络协议。它通过加密技术来保证通信的保密性和完整性&#xff0c;主要用于替代不安全的telnet、rlogin、rsh等协议。ssh通常…

计算机视觉-边缘检测实验报告

实验一 边缘检测实验 一、实验目的 1&#xff0e;理解并掌握 Sobel 算子和 Canny 算子的基本原理和应用。 2&#xff0e;学习如何在图像处理中使用这两种算子进行边缘检测。 3&#xff0e;比较 Sobel 算子和 Canny 算子的性能&#xff0c;了解各自的优缺点。 4&#xff0…

【mysql进阶】4-3. 页结构

页面结构 ⻚在MySQL运⾏的过程中起到了⾮常重要的作⽤&#xff0c;为了能发挥更好的性能&#xff0c;可以结合⾃⼰系统的业务场景和数据⼤⼩&#xff0c;对⻚相关的系统变量进⾏调整&#xff0c;⻚的⼤⼩就是⼀个⾮常重要的调整项。同时关于⻚的结构也要有所了解&#xff0c;以…

HTTP协议讲解

前瞻&#xff1a; 认识URL 1.ipport 2.平时上网&#xff0c;就是进程间通信 3.上网行为&#xff0c;1.获取资源 2.上传数据 相当于I/O 4.http协议采用tcp协议 网页 图片 音乐其实都是资源 Http请求 http request Method&#xff1a;Get/Post资源/路径&#xff1a…

MyBatis缓存详解(一级缓存、二级缓存、缓存查询顺序)

固态硬盘缺陷&#xff1a;无法长时间使用&#xff0c;而磁盘只要不消磁&#xff0c;只要不受到磁影响&#xff0c;就可以长期使用&#xff0c;因此绝大多数企业还是使用磁盘来存储数据 像mysql这种关系型数据库中的数据存储在磁盘中&#xff0c;为方便查询&#xff0c;减少系统…

Linux文件类型和根目录结构

Linux文件类型和根目录结构 1.文件类型 字符文件类型说明~普通文件类似于Windows的记事本d目录文件类似于windows文件夹c字符设备文件串行端口设备&#xff0c;顺序读写&#xff0c;键盘b块设备文件可供存储的接口设备&#xff0c;随机读写&#xff0c;硬盘p管道文件用于进程…

工程项目管理软件怎么选?推荐7款实用工具

本文提及的有主流7款工程项目管理系统软件有: 1. Worktile&#xff1b;2. 广联达BIM5D&#xff1b;3. 泛普软件&#xff1b;4. 明源云工程&#xff1b;5. 飞书&#xff1b;6. Smartsheet&#xff1b;7. Procore。 很多工程项目管理人员常常头疼如何有效地管理多个项目&#xff…

保研考研机试攻略:python笔记(1)

&#x1f428;&#x1f428;&#x1f428;宝子们好呀 ~ 我来更新欠大家的python笔记了&#xff0c;从这一篇开始我们来学下python&#xff0c;当然&#xff0c;如果只是想应对机试并且应试语言以C和C为主&#xff0c;那么大家对python了解一点就好&#xff0c;重点可以看高分篇…

【机器学习】——numpy教程

文章目录 1.numpy简介2.初始化numpy3.ndarry的使用3.1numpy的属性3.2numpy的形状3.3ndarray的类型 4numpy生成数组的方法4.1生成0和1数组4.2从现有的数组生成4.3生成固定范围的数组4.4生成随机数组 5.数组的索引、切片6.数组的形状修改7.数组的类型修改8.数组的去重9.ndarray的…

接口测试(七)jmeter——参数化(RandomString函数)

一、RandomString函数 需求&#xff1a;模拟10个用户注册 1. 【工具】–>【函数助手对话框】 2. 选择RandomString函数 假设手机号码前3位设置为固定数值136&#xff0c;后8位可用RandomString函数随机产生数值 ① Random string length&#xff1a;8&#xff08;随机长度…

记录element-ui改造select显示为table,并支持多查询条件

最近遇到的一个需求 &#xff0c; 很有趣&#xff0c;是需要一个select组件&#xff0c;要求显示工号&#xff0c;员工姓名&#xff0c;以及区域 三个字段&#xff0c;并且要支持三个字段的查询。显然element原生的组件不适用&#xff0c;这时候我们需要改造一下&#xff0c;把…

基于大数据 Python Vue 美食推荐可视化系统(源码+LW+部署讲解+数据库)

&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 会持续一直更新下去 有问必答 一键收藏关注不迷路 源码获取&#xff1a;https://pan.baidu.com/s/1aRpOv3f2sdtVYOogQjb8jg?pwdjf1d 提取码: jf1d &#…

Java后端面试题:Java基础篇

目录 Java基础 1.请你说说Java中基本数据类型的bit长度&#xff1f; 2.switch支持哪些数据类型&#xff1f;支持long么&#xff1f; 3.讲一下常见编码方式&#xff1f; 4.char能不能存储中文&#xff1f; 5.为什么数组索引从0开始呢&#xff1f;假如从1开始不行吗&#xf…