当前位置: 首页 > news >正文

机试准备第11天

第一题是浮点数加法,目前写过最长的代码。

#include <stdio.h>
#include <string>
#include <iostream>
#include <vector>
using namespace std;
int main() {
    string str1;
    string str2;
    while (getline(cin, str1) && getline(cin, str2)) { //读入两个数
        int pointpos1, pointpos2; //确定小数点位置
        for (int i = 0; i < str1.size(); i++) {
            if (str1[i] == '.') pointpos1 = i;
        }
        for (int i = 0; i < str2.size(); i++) {
            if (str2[i] == '.') pointpos2 = i;
        }
        //分割小数部分与整数部分
        string integer1;
        string intrger2;
        string xiaoshu1;
        string xiaoshu2;
        integer1 = str1.substr(0, pointpos1);
        intrger2 = str2.substr(0, pointpos2);
        xiaoshu1 = str1.substr(pointpos1, str1.size() - pointpos1);
        xiaoshu2 = str2.substr(pointpos2, str2.size() - pointpos2);
        //将小数转化为0.XXXXX,位数相同的形式
        xiaoshu1.insert(0, "0");
        xiaoshu2.insert(0, "0");
        int size1 = xiaoshu1.size();
        int size2 = xiaoshu2.size();
        if (size1 > size2) {
            for (int i = 0; i < (size1 - size2); i++) {
                xiaoshu2.push_back('0');
            }
        } else if (size2 > size1) {
            for (int i = 0; i < (size2 - size1); i++) {
                xiaoshu1.push_back('0');
            }
        }//将小数填充为位数相同
        xiaoshu1.erase(xiaoshu1.begin() + 1);
        xiaoshu2.erase(xiaoshu2.begin() + 1);

        int size3 = xiaoshu1.size();
        string xiaoshu3 = xiaoshu1;
        vector<int> jingwei(size3);
        for (int i = 0; i < size3; i++) {
            jingwei[i] = 0;
        }
        for (int i = size3 - 1; i >= 1; i--) {
            if ((xiaoshu1[i] - '0') + (xiaoshu2[i] - '0') + jingwei[i] >= 10) {
                jingwei[i - 1]++;
                xiaoshu3[i] = '0' + ((xiaoshu1[i] - '0') + (xiaoshu2[i] - '0') - 10) +
                              jingwei[i];
            } else xiaoshu3[i] = '0' + ((xiaoshu1[i] - '0') + (xiaoshu2[i] - '0')) +
                                     jingwei[i];
        }
        int zhengshujingwei = 0;
        if (jingwei[0] == 1) zhengshujingwei = 1;
        xiaoshu3[0] = '.';
        //printf("%d", zhengshujingwei);



        int sizeofzhengshu1 = integer1.size();
        int sizeofzhengshu2 = intrger2.size();
        if (sizeofzhengshu1 > sizeofzhengshu2) {
            for (int i = 0; i < (sizeofzhengshu1 - sizeofzhengshu2); i++) {
                intrger2.insert(0, "0");
            }
        } else if (sizeofzhengshu2 > sizeofzhengshu1) {
            for (int i = 0; i < (sizeofzhengshu2 - sizeofzhengshu1); i++) {
                integer1.insert(0, "0");
            }
        }
        integer1.insert(0, "0");
        intrger2.insert(0, "0");
//      printf("%s\n",integer1.c_str());
//      printf("%s\n",intrger2.c_str());




        int size5 = integer1.size();
        vector<int> jingwei2(size5);
        for (int i = 0; i < size5; i++) {
            jingwei2[i] = 0;
        }
        string res = integer1;
        for (int i = size5 - 1; i >= 1; i--) {
            if (i == (size5 - 1)) {
                if (((integer1[i] - '0') + (intrger2[i] - '0') + zhengshujingwei) + jingwei2[i]
                        >= 10) {
                    jingwei2[i - 1]++;
                    res[i] = '0' + (integer1[i] - '0') + (intrger2[i] - '0') - 10 + jingwei2[i] +
                             zhengshujingwei;
                } else {
                    res[i] = '0' + (integer1[i] - '0') + (intrger2[i] - '0') + jingwei2[i] +
                             zhengshujingwei;
                }
            } else {
                if ((integer1[i] - '0') + (intrger2[i] - '0') + jingwei2[i] >= 10) {
                    jingwei2[i - 1]++;
                    res[i] = '0' + (integer1[i] - '0') + (intrger2[i] - '0') - 10 + jingwei2[i];
                } else {
                    res[i] = '0' + (integer1[i] - '0') + (intrger2[i] - '0') + jingwei2[i];
                }
            }
        }
        //printf("%s\n", res.c_str());
        if (jingwei2[0] == 1) res[0] = 1;
        else res.erase(res.begin());
        //printf("%s\n", res.c_str());
        //printf("%s\n", res.c_str());
        printf("%s", (res + xiaoshu3).c_str());
    }
}

第二题是w的密码。燃尽了。 

#include <stdio.h>
#include <vector>
#include <string>
#include <iostream>
#include <map>
using namespace std;
struct Word{
	char letter;
	int seq;
};
int main(){
	int k1,k2,k3;
	while(scanf("%d%d%d", &k1, &k2, &k3)!=EOF){
	    cin.ignore();
		if(k1==0&&k2==0&&k3==0) break;
		string str1;
		getline(cin, str1);//读入字符串
		vector<Word> vec1;//第一组别字母的原始位置
		vector<Word> vec2;
		vector<Word> vec3;
		for(int i = 0; i<str1.size();i++){
			Word mid;
			mid.letter = str1[i];
			mid.seq = i;
			if(str1[i]>='a'&&str1[i]<='i') vec1.push_back(mid);
			else if(str1[i]>='j'&&str1[i]<='r') vec2.push_back(mid);
			else if((str1[i]>='s'&&str1[i]<='z')||str1[i]=='_') vec3.push_back(mid);
		}//记录3个组别元素出现的位置
		vector<Word> res1;//各组别字母的变换后位置
		vector<Word> res2;
		vector<Word> res3;
		for(int i = 0; i< vec1.size();i++){
			Word mid;
			mid.letter = vec1[(i+vec1.size() - (k1%vec1.size()))%vec1.size()].letter;
			mid.seq = vec1[i].seq;
			res1.push_back(mid);
		}
		for(int i = 0; i< vec2.size();i++){
			Word mid;
			mid.letter = vec2[(i+vec2.size() - (k2%vec2.size()))%vec2.size()].letter;
			mid.seq = vec2[i].seq;
			res2.push_back(mid);
		}
		for(int i = 0; i< vec3.size();i++){
			Word mid;
			mid.letter = vec3[(i+vec3.size() - (k3%vec3.size()))%vec3.size()].letter;
			mid.seq = vec3[i].seq;
			res3.push_back(mid);
		}
		map<int, char> map1;//记录改变后s
		for(int i = 0; i < res1.size();i++){
			map1.insert({res1[i].seq, res1[i].letter});
		}
		for(int i = 0; i < res2.size();i++){
			map1.insert({res2[i].seq, res2[i].letter});
		}
		for(int i = 0; i < res3.size();i++){
			map1.insert({res3[i].seq, res3[i].letter});
		}
		for(int i = 0; i<str1.size();i++){
			str1[i] = map1[i];
		}
//		for(int i = 0; i<res1.size();i++){
//			printf("%c",res1[i].letter);
//		}
		printf("%s\n", str1.c_str());
	}
}

第三题是寻找变化前的01序列。

#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;
int main(){
	int n;
	scanf("%d", &n);
	for(int i = 0; i < n;i++){
		char arr[200];
		scanf("%s", arr);
		string str = arr;
		int res = 0;
		for(int i = 0; i<str.size();i++){
			if(res == 5) res=0;
			else {
				if(str[i]=='1') res++;
				else res=0;
				printf("%c", str[i]);
			}
		}
		printf("\n");
	}
}

第四题是复制剪切。

#include <stdio.h>
#include <string>
using namespace std;
void copy(string &str, string &t, int l, int r){
    t.clear();
    for(int i =l; i<=r;i++){
        t.push_back(str[i]);
    }
    printf("%s\n", str.c_str());
}
void cut(string &str, string &t, int l, int r){
    t.clear();
    t = str.substr(l, r-l+1);
    string cutafter;
    for(int i = 0;i < str.size();i++){
        if(i <l || i>r) cutafter.push_back(str[i]);
    }
    str = cutafter;
     printf("%s\n", str.c_str());
}
void paste(string &str, string &t, int pos){
    str.insert(pos+1, t);
     printf("%s\n", str.c_str());
}
int main(){
    char arr[200];
    scanf("%s", arr);
    string str = arr;
    int n;
    scanf("%d", &n);
    string t;
    for(int i = 0;i<n;i++){
        char arr1[10];
        scanf("%s",arr1);//读入控制符
        string oper = arr1;
        if(oper == "COPY") {
            int l1,r1;
            scanf("%d%d", &l1, &r1);
            copy(str, t, l1,r1);}
        else if(oper == "CUT") {
            int l2,r2;
            scanf("%d%d", &l2, &r2);
            cut(str, t , l2, r2);}
        else if(oper == "PASTE") {
            int pos;
            scanf("%d", &pos);
            paste(str, t, pos);}
    }
}

第五题是skew数。

#include <stdio.h>
#include <string>
#include <cmath>
using namespace std;
int main() {
    char arr[100];
    while (scanf("%s", arr) != EOF) {
        string str = arr;
        long res = 0;
        int shuwei = 1;
        for (int i = str.size() - 1; i >= 0; i--) {
            res += (str[i] - '0') * (pow(2,shuwei) - 1);
            shuwei++;
        }
        printf("%ld\n", res);

    }
}

第六题是首字母大写,记住大写字母的ASCII值是小写字母的-32就行。

#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;
int main() {
    string str;
    while (getline(cin, str)) {
        if (str[0] >= 'a' && str[0] <= 'z') str[0] = str[0] - 32;
        for (int i = 1; i < str.size(); i++) {
            if (str[i - 1] == ' ' || str[i - 1] == '\t' || str[i - 1] == '\r' ||
                    str[i - 1] == '\n') {
                if (str[i] >= 'a' && str[i] <= 'z') str[i] = str[i] - 32;
            }
        }
        printf("%s\n", str.c_str());
    }
}

第七题是大整数排序,注意cmp函数的返回值。

#include <stdio.h>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
bool cmp(string left, string right){
    //列举出不交换的情况为true
    if(left.size()<right.size()) return true;
    else if(left.size() == right.size()){
        for(int i = 0;i<left.size();i++){
            if(left[i]<right[i]) return true;
            else if(left[i]>right[i]) return false;
        }
    }
    else return false;
}
int main(){
    int n;
    scanf("%d", &n);
    vector<string> vec1;
    for(int i = 0; i <n;i++){
        char arr[2000];
        scanf("%s",arr);
        string str = arr;
        vec1.push_back(str);//读入所有整数
    }
    sort(vec1.begin(), vec1.end(),cmp);
    for(int i = 0; i<vec1.size();i++){
        printf("%s\n", vec1[i].c_str());
    }
}

字符串函数总结:substr(beginpos, len),insert(beginpos, string),erase(size_t pos = 0, size_t n = npos),erase(iterator first, iterator last),find(const string &s, int pos=0)在 string 字符串中 , 从 pos 索引位置 ( 包括该位置索引自身 ) 开始查找 string 类型字符串 s 在当前字符串的位置 , 如果没有查到就返回 -1 。

相关文章:

  • HarmonyOS ArkTS声明式UI开发实战教程
  • Ascend开发板镜像烧录、联网、其他设备访问
  • Laya中runtime的用法
  • 显示器长时间黑屏
  • 【音视频】ffmpeg命令提取音视频数据
  • SYSU-大数据原理与技术-课程知识点-第一章概述
  • git的坑
  • Nginx 缓存清理
  • 【CF】Day1
  • python监控系统资源使用率并钉钉报警脚本
  • C++:string容器(上篇)
  • DeepSeek与浏览器自动化AI Agent构建指南
  • 【Leetcode 每日一题】2597. 美丽子集的数目
  • P10周:Pytorch实现车牌识别
  • 编译Telegram Desktop
  • Flutter——最详细原生交互(MethodChannel、EventChannel、BasicMessageChannel)使用教程
  • Odoo 企业版用户实施手册 第二章 Odoo 实施方法论 2.4 企业需求分析和目标定义
  • 100天精通Python(爬虫篇)——第115天:爬虫在线小工具_Curl转python爬虫代码工具(快速构建初始爬虫代码)
  • 国产编辑器EverEdit - 宏功能介绍
  • deepseek 3FS编译
  • 白羊影院/网站seo优化效果
  • 江门企业免费建站/小程序定制开发公司
  • 福州建设工程质量监督网站/b2b自动发布信息软件
  • 化妆品瓶子怎么做网站/如何自建网站
  • 挂马网站教程/百度关键词刷搜索量
  • 番禺网站制作设计/自建站怎么推广