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盘根目录下,供阅卷用 |