首页 > 编程语言 >C18.【C++ Cont】OJ测试用例的各种输入情况汇总

C18.【C++ Cont】OJ测试用例的各种输入情况汇总

时间:2025-01-15 18:00:28浏览次数:3  
标签:字符 Cont OJ 输出 int 个数 cin C18 输入

目录

1.思维导图

2.单组测试用例

3.多组测试用例

1.测试数据组已知(输入)类

模版

例题

2.测试数据组未知

模版

3.特殊值结束测试数据

模版

1.逐个字符处理

2.一次读一行

例题

4.应对空格的处理方法

1.一次读一行

模板

2.一次读一个单词

5.应对数字的处理方法

两个认知

1.呈现在控制台上的内容(输入或输出)是由单个的字符组成的

2.如何解析这些字符取决于依赖编译器对变量类型的识别

例题

方法1:按字符串处理

提交结果

方法2:按整数处理

提交结果

结论


1.思维导图

2b547c86180241beafbdaa57406672a7.png

2.单组测试用例

如:明确给出单组要输入多少个数,程序运行一次只处理一组数据,之后直接打印结果,程序结束

3.多组测试用例

1.测试数据组已知(输入)类

如:先输入组数n,再输入n组数据,因此程序运行一次会处理多组数据

模版

cin>>n
while (n--)//n次询问
{
    //do_something
}

注:n次询问参见C9.【C++ Cont】n次询问、向上取整和向下取整

例题

B2064 斐波那契数列

题目描述

斐波那契数列是指这样的数列:数列的第一个和第二个数都为 1,接下来每个数都等于前面 2 个数之和。

给出一个正整数 a,要求斐波那契数列中第 a 个数是多少。

输入格式

第 1 行是测试数据的组数 n,后面跟着 n 行输入。每组测试数据占 1 行,包括一个正整数 a(1≤a≤30)。

输出格式

输出有 n 行,每行输出对应一个输入。输出应是一个正整数,为斐波那契数列中第 a 个数的大小。

输入输出样例

输入 #1

4
5
2
19
1

输出 #1

5
1
4181
1

两个方法:1.每给一个a算一次第a个斐波那契数 2.打表,查找第a个斐波那契数

显然第二个方法只算一次,运行速度快!

打表,让arr[a]直接对应第a个斐波那契数,因此arr[0]要弃置不用,因此arr至少能容纳31个数

代码

#include <iostream>
#include <string>
using namespace std;
int main()
{
	int a,n;
	int arr[31];
	//打表 
	arr[1]=1;
	arr[2]=1;
	for (int i=3;i<31;i++)
	{
		arr[i]=arr[i-1]+arr[i-2];
	}
	
	cin>>n; 
	//n次询问 
	while (n--)
	{
		cin>>a;
		cout<<arr[a]<<endl; 
	}

	return 0;
}

提交结果

bdbbfdba309d4a7a9a8c0a75b1ae06a6.png

2.测试数据组未知

如:输入包含多组数据(并没有告诉一共多少组),每组数据输入一行,包含......

模版

//写法1
while(cin>>a)
{
    //do_something
}

//写法2
while (scanf("%d",&a) != EOF)
{
    //do_something
}

//写法3
while ((ch = getchar()) != EOF)
{
    //do_something
}

//写法4
while(getline())//getline的返回值类型为istream&,不能和EOF比较
{
    //do_something
}

写法1具体参见C17.【C++ Cont】遍历字符串的两种方式以及按单词去读取字符串文章

3.特殊值结束测试数据

如:输入一串字符,以某个字符结束,要求......

模版

1.逐个字符处理

输入一串字符,以“?”结束

	char ch;
    while((ch=getchar())!='?')
	{
        //do_something
	} 
2.一次读一行
    string s;
    getline(cin,s);
    //do_something

例题

字符统计

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

题目描述

输入一串字符,以“?”结束。统计其中字母个数,数字个数,其它符号个数。

输入描述:

输入一行,包含若干个字符,以”?”结尾。

输出描述:

输出三行,每行包含一个整数,依次为字母个数,数字个数,其他符号个数。

示例1

输入

ab123!?

ab123!?

输出

Letters=2 Digits=3 Others=1

Letters=2
Digits=3
Others=1

备注:

空格也可能是一个字符
#include <iostream>
#include <cctype>
using namespace std;
int main()
{
	string s;
	int Letters=0;
	int Digits=0;
	int Others=0;

	getline(cin,s);//不能用cin>>s,可能有空格!!!
	s.pop_back();//尾部删除?字符
	
	for (auto a:s) 
	{
		if (isalpha(a))
			Letters++;
		else if (isdigit(a))
			Digits++;
		else
			Others++;
	} 
	cout<<"Letters="<<Letters<<endl;
	cout<<"Digits="<<Digits<<endl;
	cout<<"Others="<<Others;
	return 0;
}

提交结果

4.应对空格的处理方法

1.一次读一行

模板

string s;
getline(cin,s);

2.一次读一个单词

参见C17.【C++ Cont】遍历字符串的两种方式以及按单词去读取字符串文章

5.应对数字的处理方法

两个认知

1.呈现在控制台上的内容(输入或输出)是由单个的字符组成的

如下图输入123456,在屏幕上呈现的是由单个字符1,2,3,4,5,6组成的数字

2.如何解析这些字符取决于依赖编译器对变量类型的识别

根据类型再将读取字符串数据转化成对应类型的数据:123456可以被解析为字符串(string s),可以被解析为整型变量(int a),还可以被解析为浮点数(float f或double d)

例题

https://www.nowcoder.com/practice/fcd30aac9c4f4028b23919a0c649824d?tpId=290

BC45 小乐乐改数字

描述

小乐乐喜欢数字,尤其喜欢0和1。他现在得到了一个数,想把每位的数变成0或1。如果某一位是奇数,就把它变成1,如果是偶数,那么就把它变成0。请你回答他最后得到的数是多少。

输入描述:

输入包含一个整数n (0 ≤ n ≤ 109)

输出描述:

输出一个整数,即小乐乐修改后得到的数字。

示例1

输入:

222222
输出:
0

示例2

输入:

123
输出:
101

方法1:按字符串处理

#include <iostream>
using namespace std;

int main() 
{
    string s;
    cin>>s;    
    for (int i=0;i<s.size();i++)
    {
        if (s[i]%2)
            s[i]='1';
        else 
            s[i]='0';  
    }
    cout<<stoi(s);
}
 

注意:最后一定要用stoi(s),不然打印s时可能会有前导0!!

(有关stoi函数参见C16.【C++ Cont】string类字符串的关系运算和与string有关的函数文章)

提交结果

方法2:按整数处理

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
	int n;
	cin >> n;
	int ret = 0;
	int i = 0; //记录权重的指数 
	while (n)
	{
		if (n % 10 % 2 ) // 为奇数
		{
			ret += pow(10, i); // pow(a, b) 
		}
		n /= 10; 
		i++; 
	}
	cout << ret << endl;
	return 0;
}
提交结果

结论

输入的数字有两种看法:按字符串读或按整数/小数读

标签:字符,Cont,OJ,输出,int,个数,cin,C18,输入
From: https://blog.csdn.net/2401_85828611/article/details/145107565

相关文章

  • pg_controldata的使用方法
    [omm@txy~]$pg_controldata/openGauss/data/dnpg_controlversionnumber:923Catalogversionnumber:201611171Databasesystemidentifier:5932367657193972969Databaseclusterstate:inproductionpg_contr......
  • {LOJ #6041. 「雅礼集训 2017 Day7」事情的相似度 题解
    \(\text{LOJ\#6041.「雅礼集训2017Day7」事情的相似度题解}\)解法一由parent树的性质得到,前缀\(s_i,s_j\)的最长公共后缀实质上就是\(i,j\)在SAM中的\(\operatorname{LCA}\)在SAM中的\(\operatorname{len}\)。让我们考虑如何处理\((l,r)\)区间内的询问。直......
  • CS61B srping 2018 proj1Gold-Autograding https://sp18.datastructur.es/ 我放弃了
    介绍和GettingtheSkeletonFiles想办法找到下面四个文件这个proj要编写一个autoGrader,提供如下文件:StudentArrayDeque.java:AbuggyimplementationofArrayDeque.有错误的ArrayDequeArrayDequeSolution.java:AcorrectimplementationofArrayDeque.正确的ArrayDequ......
  • 《鸿蒙开发-答案之书》RelativeContainer不好理解?
    《鸿蒙开发-答案之书》RelativeContainer不好理解?RelativeContainer关键是锚点,子组件要放那里?就比如我拿起这个子组件,它的右边要和父组件右边对齐。那我锚点就右边,然后去锚父组件的右。代码如下:RelativeContainer(){Text('123').width(30)......
  • DevExpress gridControl 绑定数据源之后添加非绑定列
    using(DevExpress.Utils.WaitDialogFormdlg=newDevExpress.Utils.WaitDialogForm("请稍等","查询中......",newSystem.Drawing.Size(100,50))){stringsqlString="SELECTITEM,DESCRIPTION,CATEGORY3FROMW......
  • 解决生成图像质量和美学问题!《VMix: Improving Text-to-Image Diffusion Model with C
    为了解决扩散模型在文生图的质量和美学问题,字节跳动&中科大研究团队提出VMix美学条件注入方法,通过将抽象的图像美感拆分成不同维度的美学向量引入扩散模型,从而实现细粒度美学图像生成。论文基于提出的方法训练了一个即插即用的模块,无需再训练即可应用于不同的开源模型,提升模型......
  • R语言caret包实战:构建xgboost模型(xgbDART算法、使用的dropout思想)构建回归模型、通过m
    R语言caret包实战:构建xgboost模型(xgbDART算法、使用的dropout思想)构建回归模型、通过method参数指定算法名称、通过trainControl函数控制训练过程目录R语言使用caret包构建xgboost模型(xgbDART算法、使用的dropout思想)构建回归模型、通过method参数指定算法名称、通过trainCo......
  • Proj CJI Paper Reading: A False Sense of Safety: Unsafe Information Leakage in '
    Abstract本文:Tasks:DecompositionAttacks:getinformationleakageofLLMMethod:利用LLM(称为ADVLLM)+Fewshotsexample把一个恶意的问题分成许多小的问题,发送给VictimLLMs,再使用ADVLLM把这些问题的回答拼凑出来得到答案拆分原则是最大化与impermissibleinformat......
  • 一篇文章搞懂unity编辑器中Event的rawType, type和GetTypeForControl
    简介Event.rawType就是初始的type,可以通过Event.Use()将rawType修改为EventType.Used。Event.type是经过GUIClip过滤的rawType,如果事件触发时,鼠标位置位于当前GUIClip中,返回rawType,如果鼠标不在当前GUIClip中,则设置为EventType.IgnoreEvent.GetTypeForControl相对于Event.type......
  • vscode插件continue结合ollama自动生成代码
    vscode插件continue结合ollama自动生成代码ollama安装ollama安装见https://www.cnblogs.com/jokingremarks/p/18151827中的前部分,懒得再写了vscode中continue的安装可以直接在vscode的扩展中安装插件,也可以去下载这个插件,然后应用在vscode中一般都会选择直接去扩展中安装,在......