国家二级C++机试(操作题)模拟试卷557
基本操作题
1.使用VC6打开考生文件夹下的源程序文件modi1.cpp。本程序要求输入一字符串,然后将其中的小写字母改变成大写字母,字符可能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到界面。
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//******error******的下面。
1 #include<iostream.h>
2 void main()
3 {
4 int i=0;
5 char str[120];
6 cout<<’’Enter a string endwith’?’.’’<<end1;
7 //********error********
8 cin.getline(str,120);
9 //********error********
10 while(str)
11 {
12 //********error********
13 if(str[i]>=’a’)
14 str[i] =str[i] -’a’+’A’;
15 i++;
16 }
17 cout<<str<<end1;
18 return;
19 }
(1)cin.getline(str,120,’?’);
(2)while(str[i])
(3)if(str[i]>=’a’&&str[i]<=’z’)
解析:同一英文字母的大写和小写形式的ASCII码值相差32,因此,要将小写字母转换为大写字母,只要将其对应的ASCII码值减去32即可,程序中给出的语句中,减去字符’a’的ASCII码再加上字符’A’的ASCII码正好是减去32。
(1)题目中要求以输入字符“?”为结束,用于字符输入的流成员函数getline函数读入一行字符,格式cin.getline(字符数组,字符个数,终止标志字符),所以第1个标识下为“cin.getline(str,120,’?’):”。(2)第2个标识下的“while(str)”语句应该是判断字符串str中的每一个字符是否为尾符,若不是尾符在循环中判断每一个字符是否为小写,若为小写,转换。所以应该修改为“while fstr[i])”。
(3)第3个标识下的“if(str[i]>=’a’)”语句是判断字符str[i]是否为小写字符,而现有的语句只是判断字符是否大于’a’,但是小写字符应该是’a’到’z’,所以修改为“if(str[i]>=’a’&& str[i]<=’z’)”。
简单应用题
2.使用VC6打开考生文件夹下的源程序文件modi2.cpp。完成函数fun(chaur*str,char*s)空出部分。函数fun(char*str,char*s)的功能是:将在字符串str中下标为偶数位置上的字符,紧随其后重复出现一次,放在一个新串s中,s中字符按原字符串中字符的顺序排列。(注意0为偶数)
例如:当str中的字符串为:’’abcdef’’时,s中的字符串应为:’’aaccee’’。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
1 #include<iostream.h>
2 void fun(char*str,char*s)
3 {
4
5 }
6 void main()
7 {
8 char str[100],s[100];
9 cout<<’’P1ease enter string string:’’<<end1;
10 cin.getline(str,100);
11 fun(str,s);
12 cout<<’’The reSUlt is:’’<<s<<end1;
13 return;
14 }
1 int i;
2 for(i=0;str[i]!=0;i++) //循环判断每一个字符
3 {
4 if(i%2==0) //判断字符串中下标为偶数位置
5 {
6 s[i]=str[i];
7 s[i+1]=str[i];
8 s[i+2]=’\0’;//新串添加尾符
9 }
10 }
解析:(1)该程序功能是找出在字符串中下标为偶数位置上的字符,紧随其后重复出现一次,放在一个新串。它的解题思路,解题过程利用if条件判断表达式选择符合条件的字符,然后将符合条件的字符放入指定的字符串。
(2)从己给部分源程序的main主函数开始入手,核心函数void fun(char*str,char*s)中的str参数为输入的字符串,其中s为新串。
(3)判断一个字符串中的某一字符下标i是否为偶数,可用“i%2==0”来判断。
(4)对串str中各个字符串逐个进行考查,满足条件的字符就顺序放在新串s中,否则就不存放。
(5)所有字符处理完后,记得在新串s的末尾加上结束符“’\0’”。
综合应用题
3.使用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了用于表示日期的类Date,但类Date的定义并不完整,按要求完成下列操作,将类的定义补充完整。
(1)定义私有成员变量year、month、day,分别表示年、月、日,类型为int。请在注释//********1********后添加适当的语句。
(2)完成构造函数,分别给year、month、day赋值,请在注释//********2********后添加适当的语句。
(3)完成重载符号“+=”的定义,请在注释//********3********后添加适当的语句。
(4)完成print()打印函数,如2008年8月8日到屏幕和文件modi3.txt格式相同,请在注释//********4********后添加适当的语句。
注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。
1 #include<iostream.h>
2 #include<fstream>
3 #include<iomanip>
4 #include<cmath>
5 using namespace std;
6 void WriteFile(int c)
7 {
8 ofstream out1;
9 out1.open(’’modi3.txt’’,ios_base::app);
10 out1<<c<< ’ ’;
11 out1.close();
12 }
13 void WriteFile(char* str)
14 {
15 ofstream out1;
16 out1.open(’’modi3.txt’’,ios_base::app);
17 out1<<str;
18 out1.close();
本文档预览:3600字符,共5693字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载