江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
2008年秋江苏省计算机二级VC上机真题1

2008秋江苏省高校计算机等级考试VC++

   上机1

:改错题

以下程序的功能是:查找10—1000之间的回文素数,所谓回文素数是左右对称的素数,即从左向右和从右向左读是相同的素数

程序正确的运行结果是:

The results:

11   101   131   151   181   191   313   353

373  383   727   757   787   797   919   929

count=16

含有错误的源程序如下:

#include <iostream.h>

#include <math.h>

 

int prime(int m)             //判断是否是素数

{if(m==2)  return 1;        //2是最小的素数

  for(int i=2;i<(int)sqrt(m);i++)   //i小于等于平方根,应为i<=sqrt(m)

    if(m%i==0) return 0;

  return 1;

}

 

void main()

{int i,j,k,count;        //count没有初始化为随机数,所以应为0,因为count要判断有多少回文素数

 cout<<”The result:\n”;

 for(int s=11;s<1000;s+=2){

   if(prime(s)){       //如果是素数,则分解该素数

     i=s/100;        //i为百位数

     j=s%10/10;       //j为十位数,所以应为j=s/10%10       

     k=s%10;         //k为个位数

  }

 if(i==0 && j==k ||i!=0&&i==j){          //如果是两位素数,那么应为十位数j等于个位数k,

   cout<<s<<’\t’;                      //如果是三位素数,那么应为百位数i等于个位数k,所以应为i==k

   count++;

  if(count%8==0) cout<<endl;            //输出8个数值后转到下一行

}

}

cout<<”count=”<<count<<endl;

}

二、编程题(20分)

[题目]

    试定义一个类Torch,计算奥运火炬传递的总时间,具体要求如下:

(1)私有成员

       int d,h,m,s:分别表示奥运火炬传递的天数、小时数、分钟数及秒数

(2)公有成员

      Torch(char *p):构造函数,用指针p所指向的全部由数字构成的8位字符串初始化火炬传递时间,其中,天、时、分、秒分别用两位字符表示(假设火炬传递时间不超过99天),例如,

当char *p="06150650"时,则d=6,h=15,m=6,s=50

       void add(Torch &t):将参数t所表示的火炬传递时间加入当前对象

      void normal():将当前对象所表示的时间转化为标准形式,即当秒数超过59时进位分钟,当分钟超过59时进位小时,当小时数超过23时进位天数

      void print()  :按规定格式输出火炬传递的天数、小时数、分钟数与秒数

    在主函数中首先定义一个Torch对象t(各数据成员的初始值都为0),表示火炬传递的总时间,接着依次输入若干个不同城市火炬传递的天数,小时数,分钟数与秒数(需要为各城市定义一个Tourch对象,并判断输入数据的格式是否正确),并将火炬传递时间加入到对象t中,

输入/输出示例:

输入城市1的火炬传递时间,输入end结束:  01084523

输入城市2的火炬传递时间,输入end结束:  01091224

输入城市3的火炬传递时间,输入end结束:  011020304

输入格式不对,请重新输入

输入城市3的火炬传递时间,输入end结束:  01102030

输入城市4的火炬传递时间,输入end结束:  end

火炬传递的时间为:4天4小时18分17秒

[说明]源程序文件必须为myfb.cpp,并放在T盘根目录下,供阅卷用