【入门】保研/考研408机试-基本知识点(输入/出、基本数学、字符串)

目录

一、基础结构方面

1.1调用标准库*

1.2输入输出方面

1.2.1保留几位小数输出*

1.2.2字符/字符串*

1.2.3输入n个数(循环用)

1.3i++和++i

二、数学方面

2.1绝对值

2.2幂次方

2.3取整问题

2.4涉及分数计算

三、字符串方面

3.1字符比较

[例题:KY45 skew数](#例题:KY45 skew数)


练习笔记记录基于王道计算机考研------机试指南(第二版) ,部分院校的机试题在:考研真题_牛客网高校计算机考研复试_历年真题+题解_牛客题霸_牛客网

每篇会贴上几个机试原题和我找到题(leetcode、洛谷等)及我的解题思路。

(立个flag 要每天刷一道题 至少一周一更)

这些是比较基础容易忘的,适合小白入手 ,加星*是我认为比较重要的。

我自己的三条经常踩坑注意事项:

1.设数组要到int main()的外面去。

2.数组设置要稍微大一些,如10*10,不要设成a1111,要a1515

3.(有找不出的bug时),尽量多用scanf

4.平常练习时,有找不出的bug可以问chatgpt,很好用

一、基础结构方面

1.1调用标准库*

当题目不是太复杂时,调用库可以直接调用标准库,其包含了几乎所有的C++库,不用在整cmath、iostream等库了。

cpp 复制代码
#include<bits/stdc++.h>

1.2输入输出方面

1.2.1保留几位小数输出*

cpp 复制代码
// 使用%.2f来指定保留两位小数
    printf("%.2f", number);

f符号代表double和浮点数

1.2.2字符/字符串*

使用scanf/printf输入输出时,

c表示单个字符,s表示字符串,如

cpp 复制代码
  scanf("%s", name);

输入字符串(string)不用cin,用getline(cin,string1);

输入n个字符串:

复制代码
while(getline(cin,str)

1.2.3输入n个数(循环用)

cpp 复制代码
while(scanf("%d",&x)==1);
cpp 复制代码
while(cin>>a[i++])

1.3i++和++i

自行调整,一般是i++,测试输出差一位调整为++i

二、数学方面

2.1绝对值

cpp 复制代码
a=abs(n);

2.2幂次方

10的n次方↓

cpp 复制代码
a=pow(10,n);

2.3取整问题

cpp 复制代码
ceil()

向上取整,比如1.1->2

cpp 复制代码
int()

向下取整,如4.5->4 (注:常规取整没说明就用int)

2.4涉及分数计算

如计算三分之一(1/3)的计算,要整成浮点数除法,如

cpp 复制代码
double q = i * 5 + j * 3 + k * (1.0 / 3);

三、字符串方面

3.1字符比较

cpp 复制代码
strcmp(a,b)

当值==0时,a=b; <0时,a<b; >0时,a>b。

例题:KY45 skew数

描述

在 skew binary 表示中,第 k 位的值 xk 表示 xk×(2^(k+1)-1)。每个位上的可能数字是 0 或 1,最后面一个非零位可以是 2,例如,10120(skew) = 1×(2^5-1) + 0×(2^4-1) + 1×(2^3-1) + 2×(2^2-1) + 0×(2^1-1) = 31 + 0 + 7 + 6 + 0 = 44。前十个 skew 数是 0、1、2、10、11、12、20、100、101、以及 102。

输入描述:

输入包括多组数据,每组数据包含一个 skew 数。

输出描述:

对应每一组数据,输出相应的十进制形式。结果不超过 2^31-1。

示例1

输入:

复制代码
10120
200000000000000000000000000000
10
1000000000000000000000000000000
11
100
11111000001110000101101102000

复制输出:

复制代码
44
2147483646
3
2147483647
4
7
1041110737

**分析:**长度明显超了一般的数据类型(int),用字符串-'0'处理,同时不定输入用while(getlin(cin,str))处理,其实这种'简单'的送分题有时候也不好做对,因为涉及的知识点可能很细很杂......

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

int main() {
    string s;
    while(getline(cin,s)){
        int sum=0;
        int l=s.size();
        for(int i=0;i<s.size();i++){
            sum+=(s[i]-'0')*(pow(2,l)-1);
            l--;
        }
        cout<<sum<<endl;
        
    }
}
相关推荐
学传打活5 天前
【边打字.边学昆仑正义文化】_进阶篇5 宇宙星系的运转(续3)
微信公众平台·1024程序员节·汉字·昆仑正义文化
学传打活11 天前
【边打字.边学昆仑正义文化】_进阶篇5 宇宙星系的运转(续1)
微信公众平台·1024程序员节·汉字·昆仑正义文化
fangzhanpeng16818 天前
快速掌握C#语言基础知识点(1.基础数据类型)
开发语言·c#·1024程序员节
无己心21 天前
面向多平台 AI 搜索引擎的适配层架构设计
前端·人工智能·搜索引擎·ai·1024程序员节
u0103055271 个月前
AI驱动的安卓UI自动生成功能实现
人工智能·1024程序员节
u0103055271 个月前
长株潭智能体赋能腾讯元器链接共享
1024程序员节
云贝贝贝1 个月前
OceanBase认证体系介绍与备考指南
运维·服务器·oceanbase·1024程序员节
u0103055271 个月前
Java图像处理实战指南
人工智能·1024程序员节
u0103055271 个月前
Java AWT鼠标事件全解析
人工智能·1024程序员节
u0103055271 个月前
Java实用类应用精讲
人工智能·1024程序员节