【C++】苏大期中考试前第二次模拟

这篇具有很好参考价值的文章主要介绍了【C++】苏大期中考试前第二次模拟。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一. 题目

二. 代码 

三. 总结


一. 题目

考试说明

  1. 考试时间:合计2小时。选择题部分30分钟交卷,允许提前交卷。
  2. 考试过程中,不能连接未经指定网站或服务器。
  3. 闭卷考试部分,不能查阅任何类型的参考资料。
  4. 开卷考试部分,可以查阅纸质文档,不能查阅任何类型的电子文档。
  5. 考试过程中,不得使用任何形式的电子存储设备,不可使用手机。
  6. 违反上述2-5条者,视为考试作弊。

选择题答题方式(20分,闭卷,严禁使用vs编程环境进行尝试

  1. 打开浏览器,在地址栏中输入http://192.168.125.3,点击相应链接进入登录页面。
  2. 按要求输入两遍自己的学号。
  3. 点击“登录”按钮即可进入答题页面。如考试尚未开始,系统会进入等待页面并倒计时。考试开始时间到,系统会自动进入答题页面。
  4. 在页面左侧选择题号,页面右侧即会显示相应的题目。考生只需点击选择相应的选项。
  5. 答题过程中如关闭浏览器或出现系统故障导致计算机重新启动,系统不会丢失之前已经完成的题目的答案。考生可以打开浏览器重新登录并继续考试。
  6. 答题完成后,点击“交卷”按钮即可完成交卷。交卷后不能再次登录系统继续考试。
  7. 考试结束时间到,系统会自动收卷。

编程题提交方式(80分,开卷)

  1. 提交前务必关闭vs2005vs2008或vs2010编程环境。
  2. 所有源程序内容必须仅包含在一个源程序文件(CPP文件)中。
  3. 在浏览器的地址栏中输入http://192.168.125.3,点击相应链接进入提交页面。
  4. 按要求输入两遍自己的学号。
  5. 点击“选择文件”按钮,选择自己的源程序文件。点击“提交”按钮提交。
  6. 如提交成功,系统会显示相关信息。如果提交不成功,请重复步骤16-18。
  7. 提交成功后,可点击“查看内容”按钮检查提交的内容。


按以下要求编写程序

题目说明

请各位考生课程信息发布网站下载数据文件input.txt,然后将该数据文件手动保存D盘根目录下。该文件中的数据以文本形式存储,包含若干个以空格间隔的单词,且不包含任何标点符号。

请按要求依次完成如下操作:

  1. 编写一个函数ReadFile。读取input.txt文件中的所有单词,并将它们存放在string类型的A向量中。
  2. 编写一个函数ShowData。显示第1步中生成的string类型的A向量。要求每行显示X个单词,每个单词占Y列,左对齐,右补空格。该函数要求将每行显示单词个数X、每个单词显示列数Y都作为函数参数来进行处理。如不设定,则每行显示5个单词,每个整数占8列。
  3. 编写一个函数GetNumbers,提取出A向量中所有形式为整数数值的单词,并将其转换为整数,将计算结果保存在另一个int类型的向量B中。
  4. 编写一个函数ShowData。显示第3步中生成的int类型的B向量。要求每行显示X个整数,每个整数占Y列,左对齐,右补空格。该函数要求将每行显示单词个数X、每个单词显示列数Y都作为函数参数来进行处理。如不设定,则每行显示5个整数,每个整数占5列。
  5. 编写一个函数SortData。对第3步中生成的向量B按照各元素的“权重”进行增序排序。所谓“权重”是指某整数的各位数字的总和除以该整数位数所得到的计算结果,该结果为double类型。例如:356的权重计算过程为:(3+5+6)/3=4.66667;4457的权重计算过程为:(4+4+5+7)/4=5.0
  6. 编写一个函数WriteFile。将经过第5步处理的向量B中所有整数写入到指定文本文件中,要求每行显示4个整数,每个整数占5列,右对齐,左补空格字符。
  7. main函数如下:

void main()

{

string ifname="d:\\input.txt",ofname="d:\\result.txt";

vector<string> A;

vector<int> B;

ReadFile(ifname,A);

cout<<"文件读取操作完成后的A向量为:"<<endl;

ShowData(A);

cout<<endl;

B=GetNumbers(A);

cout<<"整数提取操作完成后的B向量为:"<<endl;

ShowData(B);

cout<<endl;

SortData(B);

cout<<"排序操作完成后的B向量为:"<<endl;

ShowData(B,6);

cout<<endl;

WriteFile(ofname, B);

}

注意: 不允许修改main函数,每修改一处,扣3分;


评分标准

(编程题满分为80分)

大项

子项

评分项

应得分

实得分

70

结果(70分)

编译子项5分

ReadFile函数

15

ShowData函数(string向量版本)

10

ShowData函数(int向量版本)

10

GetNumbers函数

13

SortData函数

12

WriteFile函数

10

上述各项都不得分

编译子项

本项不得分

程序运行出现异常

-10

程序死循环

-10

修改main函数

-3(每处修改)

编译(5分)

编译连接均通过(无warning)

5

编译连接均通过(有warning)

4

编译通过、连接不通过

3

编译、连接均不通过

0

10分

缩进对齐(4分)

正确运用缩进对齐规则

4

有缩进对齐但不完全符合要求

2

没有使用缩进对齐规则

0

注释(3分)

有详细且正确的注释

3

有注释,但不够详细

2

完全没有注释

0

变量命名(3分)

变量命名有规则

3

变量命名有规则、但规则使用不一致

2

变量命名无规则

0

总分(满分80分)

二. 代码 

#include<iostream>
#include<vector>
#include<fstream>
#include<string>
#include<iomanip>
#include<sstream>
#include<algorithm>
#include<cmath>
using namespace std;

void ReadFile(string ifname,vector<string>&a){
    ifstream ifile(ifname);
    while(!ifile.eof()){
        string s;
        if(ifile>>s){
            a.push_back(s);
        }
    }
    ifile.close();
}

void ShowData(const vector<string>&a,int X=5,int Y=8){
    /*要求每行显示X个单词,
    每个单词占Y列,左对齐,右补空格。
    该函数要求将每行显示单词个数X、每个单词显示列数Y都作为函数参数来进行处理。
    如不设定,则每行显示5个单词,每个整数占8列。*/
    int cont=0;
    for(int i=0;i<a.size();i++){
        cout<<left<<setw(Y)<<setfill(' ')<<a[i];
        cont++;
        if(cont==X){
            cont=0;
            cout<<endl;
        }
    }
}

vector<int>GetNumbers(const vector<string>&a){
    /*
    提取出A向量中所有形式为整数数值的单词,
    并将其转换为整数,
    将计算结果保存在另一个int类型的向量B中
    */
    vector<int>tempB;
    for(int i=0;i<a.size();i++){
        /*
        int n;
        istringstream s(a[i]);
        if(s>>n){
            tempB.push_back(n);
        }
        */
        int j=0;
        if(a[i][j]=='-' or (a[i][j]<='9' and a[i][j]>='0')){
            for(j=1;j<a[i].size();j++){
                if(a[i][j]<'0' or a[i][j]>'9'){
                    break;
                }
            }
        }

        if(j==a[i].size()){
            int n;
            istringstream s(a[i]);
            if(s>>n){
                tempB.push_back(n);
            }
        }     
    }
    return tempB;
}

void ShowData(const vector<int>&b,int X=5,int Y=8){
    /*要求每行显示X个单词,
    每个单词占Y列,左对齐,右补空格。
    该函数要求将每行显示单词个数X、每个单词显示列数Y都作为函数参数来进行处理。
    如不设定,则每行显示5个单词,每个整数占8列。*/
    int cont=0;
    for(int i=0;i<b.size();i++){
        cout<<left<<setw(Y)<<setfill(' ')<<b[i];
        cont++;
        if(cont==X){
            cont=0;
            cout<<endl;
        }
    }
}

int getNum(int a){
    a=abs(a);
    double cont=0;
    double s=0;
    while(a){
        s+=a%10;
        cont++;
        a=a/10;
    }
    return s/cont;
}
bool cmp(int a,int b){
    int aNum=getNum(a);
    int bNum=getNum(b);
    return aNum<bNum;
}

void SortData(vector<int>&b){
    /*
    5、对第3步中生成的向量B按照各元素的“权重”进行增序排序。
    所谓“权重”是指某整数的各位数字的总和除以该整数位数所得到的计算结果,
    该结果为double类型。
    例如:356的权重计算过程为:(3+5+6)/3=4.66667;4457的权重计算过程为:(4+4+5+7)/4=5.0。
    */
    sort(b.begin(),b.end(),cmp);
}

void WriteFile(string s,const vector<int>&b){
    /*
    将经过第5步处理的向量B中所有整数写入到指定文本文件中
    要求每行显示4个整数,
    每个整数占5列,右对齐,左补空格字符
    */
    ofstream ofile(s);
    int cont=0;
    for(int i=0;i<b.size();i++){
        ofile<<setw(5)<<right<<setfill(' ')<<b[i];
        cont++;
        if(cont==4){
            ofile<<endl;
            cont=0;
        }
    }
    ofile.close();
}

int main()
{
	//string ifname="d:\\input.txt",ofname="d:\\result.txt";
    string ifname="/Users/apple/Downloads/1-2/阅卷用数据文件/input.txt",ofname="/Users/apple/Downloads/1-2/阅卷用数据文件/result.txt";
	vector<string> A;
	vector<int> B;

	ReadFile(ifname,A);
	
	cout<<"文件读取操作完成后的A向量为:"<<endl;
	ShowData(A);
	cout<<endl;

	B=GetNumbers(A);
	cout<<"整数提取操作完成后的B向量为:"<<endl;
	ShowData(B);
	cout<<endl;

	SortData(B);
	cout<<"排序操作完成后的B向量为:"<<endl;
	ShowData(B,6);
	cout<<endl;

	WriteFile(ofname, B);
}

三. 总结

期中考试三件套:

1. 读写文件

2. vector操作

3. sstream(即stringstream)

这次差点被坑,在GetNumbers里本来是直接用istringstream ss(a[i])把数放进int中去的,毕竟如果ss>>n成功的话就说明是int,结果我忘记了,只要是包含int的部分都会被塞进去

结果就是,12a这样一个字符串在我的程序里面将12提出来当成int塞进B里了。

判断的时候又忘记要把负号单独拿出来判断了。

好吧,我说怎么真的会十分钟了事嘞。文章来源地址https://www.toymoban.com/news/detail-417174.html

到了这里,关于【C++】苏大期中考试前第二次模拟的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构期中模拟

    1.二叉树就是度为 2 的树。(F) 二叉树的度=2 2.线性表采用链式存储表示时,所有结点之间的存储单元地址可以连续也可以不连续。(T) 在顺序表中,逻辑上相邻的元素,其物理位置一定相邻。在单链表中,逻辑上相邻的元素,其物理位置不一定相邻。 3. 队列适合解决处理顺

    2024年02月02日
    浏览(25)
  • 第二次博客作业

    这是第二次博客作业,总结了近三次PTA大作业的完成情况,这三次的大作业难度逐渐增大,完全理不清逻辑,真的越想越混乱,代码写的也是很乱,没有一个整体的框架结构,读起来很困难,没有学到java程序编写的真谛,总之对于我,一个逻辑很差很差的人来说,越来越复杂

    2024年02月05日
    浏览(44)
  • RHCE第二次作业

    问题:如何让两台虚拟机相互免密登录 (1)server2虚拟机配置 先查看其ip地址,IP地址为192.168.119.131  让server2免密登录到REDHAD_ROOT 结果 (2)REDHAD_ROOT配置 先查看其ip地址,IP地址为192.168.119.130 让REDHAD_ROOT免密登录到server2  结果

    2024年02月08日
    浏览(34)
  • 安全第二次

    一,iframe   iframe标签用于在网页里面嵌入其他网页。     1,sandbox属性     如果嵌入的网页是其他网站的页面,因不了解对方会执行什么操作,因此就存在安全风险。为了限制iframe的风险,HTML 提供了sandbox属性 。 allow-forms:允许提交表单。 allow-modals:允许提示框,即允许

    2024年02月12日
    浏览(30)
  • MySQL第二次

    作业要求: 作业代码实现: 结果:

    2024年01月16日
    浏览(38)
  • web前端(第二次作业)

    1、计算用户指定的数值内的奇数和。例如用户输入的是 10,则计算 1 + 3 + 5 + 7 + 9 的和 运行截图: 2.使用递归计算 1 ~ 100 的和 运行结果;

    2024年01月17日
    浏览(32)
  • web前端第二次作业

    1,计算用户指定的数值内的奇数和 效果运行图: 代码: 2,使用递归计算 1 ~ 100 的和 效果运行图: 代码:

    2024年01月16日
    浏览(35)
  • 数据库第二次作业

    目录 一、要求 二、操作 建表 插入数据  1、显示所有职工的基本信息 2、查询所有职工所属部门的部门号,不显示重复的部门号  ​编辑 3、求出所有职工的人数​编辑 4、列出最高工和最低工资 ​5、列出职工的平均工资和总工资 6、创建一个只有职工号、姓名和参加工作的

    2024年02月13日
    浏览(32)
  • 网络服务第二次作业

      [root@localhost ~]# vim /etc/httpd/conf.d/vhosts.conf  Virtualhost 192.168.101.200:80           #虚拟主机IP及端口         DocumentRoot  /www/openlab        #网页文件存放目录         ServerName www.openlab.com      #服务器域名 /VirtualHost Directory /www         AllowOverride none                      

    2024年02月11日
    浏览(31)
  • 和导师的第二次探讨

    Jason提问: 导师,最近读文献的方面我碰到两个问题: 一:就是感觉读的太杂了,人工智能方向太大,文章五花八门 二:内容刚接触感觉晦涩难懂,特别是英文文献,而且用翻译软件意思有时候翻译成中文就感觉也不对 我应该如何解决呢 导师回答: 对于问题一:先看综述

    2024年02月15日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包