国家二级C++机试(操作题)模拟试卷312
简单应用题
1.使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码。补充函数convert(long S,long*str),使之从低位开始取出长整型变量S中奇数位上的数,依次存放在数str中。
例如,当S中的数为:7654321时,str中的数为:7531。
注意:请勿改动主函数。
#include
void convert(long s,long*str)
{
}
Void main()
{
long s,res;
cout<<\\
long s1=10;
*str=s%10;//先取个位数
while(s>0)
{
s=s/100; //每次除以100,
*str=s%10*s1+*str; //取除以100后的个位数,str增加1位
s1=s1*10;
}
解析:(1)由审题分析可知,奇数位即为个位数、百位数、万位数……,取个位数比较简单,s%10便得到了个位数。获取百位数可由s/100后,再和10取余得到,同样万位数可由s/10000,再和10取余得到,从百位数开始后面的奇数位都是在上次的基础上再除以100后再取余数,因此可利用循环。
(2)在循环外先取s的个位数,然后进入循环,s=s/100,获取除以100的个位数方法为s%10,这个数是*str的高一位,乘以它所在*str中的位置的权值,然后和以前的值相加便得到这次*str值,如此循环,直到s为0为止。
综合应用题
2.使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:
(1)定义类的私有变量a、b,请在注释//********1********后添加适当的语句。
(2)完成类的构造函数,对变量a、b赋值,缺省两个变量值为1,在注释//********2********之后添加语句。
(3)完成打印函数display(),打印出“a*b=c”格式的一个乘法算式,在注释//********3********之后添加语句。
(4)补充主函数,使得打印9×9的乘法口诀。在注释//********4********后添加语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
#include
class CMyFormula
{
private:
//********1********
public:
//********2********
{
this一>a=a;
this->b=b;
}
void set(int x,int y)
{
a=x;
b=y;
}
void display()
{
//********3********
}
};
int main()
{
CMyFormula formular(1,1);
for(int i=1;i<=9;i++)
{
//********4********
for(int j=1;j++)
{
formular.set(j,i);
formular.display();
cout<<\\
(1)添加语句:int a,b;
(2)添加语句:CMyFormula(int a=1,int b=1)
(3)添加语句:cout<<a<<’*’<<b<<’=’<<a*b;
(4)将“for(int j=1; j++)”补充完整为:for(int j=1;j<=i;j++)
解析:(1)第1个标识下完成CMyFormula类的私有变量a、b的定义,从函数set(int x,int y)的参数类型可以看出a和b均为int型变量,故第1个标识下应添加“hat a,b;”。
(2)第2个标识下添加构造函数声明,完成对变量a、b赋值,该构造有两个参数a和b,且a和b缺省值为1,因此第2个标识下应添加“CMyFormula(inta=1,intb=1)”。
(3)打印函数display()在屏幕上打印出“a*b=c”格式的一个乘法算式,因此第3个标识下应添加“cout<<a<<’*’<<b<<’=’<<a%;”。
(4)观察可知第4个标识下的for循环是死循环,j没有判断退出条件,会一直循环下去得不到想到的9×9的口诀表,外层循环变量i从1开始变化至9,循环9次,内部循环变量i应该从1变化到i,输出一行,j<=i,这样保证输出的是倒9×9口诀,因此第4个标识下应改为“for(intj=1;j<=i.j++)”。
本文档预览:3600字符,共2691字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载