【入门】保研/考研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,不要设成a[11][11],要a[15][15]

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 位的值 x[k] 表示 x[k]×(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;
        
    }
}
相关推荐
jamison_11 个月前
文心一言与 DeepSeek 的竞争分析:技术先发优势为何未能转化为市场主导地位?
人工智能·ai·chatgpt·gpt-3·1024程序员节
NaZiMeKiY1 个月前
HTML5前端第六章节
前端·html·html5·1024程序员节
jamison_11 个月前
颠覆未来:解锁ChatGPT衍生应用的无限可能(具体应用、功能、付费模式与使用情况)
ai·chatgpt·1024程序员节
NaZiMeKiY1 个月前
HTML5前端第七章节
1024程序员节
earthzhang20211 个月前
《Python深度学习》第四讲:计算机视觉中的深度学习
人工智能·python·深度学习·算法·计算机视觉·numpy·1024程序员节
明明真系叻2 个月前
2025.3.2机器学习笔记:PINN文献阅读
人工智能·笔记·深度学习·机器学习·1024程序员节·pinn
bitenum2 个月前
【C++/数据结构】队列
c语言·开发语言·数据结构·c++·青少年编程·visualstudio·1024程序员节
IT学长编程2 个月前
计算机毕业设计 基于SpringBoot的智慧社区管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·后端·毕业设计·课程设计·论文笔记·1024程序员节
qq_382391332 个月前
WPF框架学习
学习·wpf·1024程序员节
✿ ༺ ོIT技术༻2 个月前
Linux:TCP和守护进程
linux·运维·服务器·网络·tcp/ip·1024程序员节