江苏科技大学计算机二级VC经典编程题整理

上传人:仙*** 文档编号:37296336 上传时间:2021-11-02 格式:DOC 页数:9 大小:61KB
返回 下载 相关 举报
江苏科技大学计算机二级VC经典编程题整理_第1页
第1页 / 共9页
江苏科技大学计算机二级VC经典编程题整理_第2页
第2页 / 共9页
江苏科技大学计算机二级VC经典编程题整理_第3页
第3页 / 共9页
点击查看更多>>
资源描述
如果您需要使用本文档,请点击下载按钮下载!江苏科技大学计算机二级经典编程题整理1、 设计一个程序,求出5100之间的所有素数,要求每行输出5个数。判断一个整数是否为素数时用一个函数来实现。#includeint f(int n)for(int i=2;in;i+)if(n%i=0)break;if(!(in)return 1;else return 0;void main()int count=0;for(int n=5;n=100;n+)if(f(n)coutnt;if(+count%5=0)coutendl;2、 试编写一个函数求n!。#includeint f(int n)if(n=1|n=0)return 1;else return n*f(n-1);void main()int n;cinn;coutf(n)endl; 3、编写一个程序求分数相加,要求其结果为最简形式,如3/10+1/6=7/15。(此题包含:求最大公约数(经典算法)#includeint f(int m,int n) /求m,n的最大公约数for(int i=m;i-)if(m%i=0&n%i=0)return i;void main()int fz1,fm1,fz2,fm2,fz,fm;coutfz1fm1;coutfz2fm2;fz=fz1*fm2+fz2*fm1;fm=fm1*fm2;int t=f(fz,fm);fz/=t;fm/=t;cout两分数之和为:fz/fmendl;4、编程实现对序列6,9,5,1,3,4,8,7进行升序排列。#includevoid f(int s,int n) /自定义函数实现数组排序,参数传递是双向的地址传递for(int i=0;in;i+)for(int j=i+1;jsj)int t=si;si=sj;sj=t;void main()int s=6,9,5,1,3,4,8,7;f(s,8);for(int i=0;i8;i+)coutsit;1 / 8如果您需要使用本文档,请点击下载按钮下载! 5、设n是一个两位正整数,s1是n的各位数之和,s2是2*n的各位数之和。输出所有满足条件s1等于s2的n、s1、s2。要求用函数实现求各位数之和。#includeint f(int n) /自定义函数求n的各位数之和int sum=0;while(n)sum+=n%10;n/=10;return sum;void main()for(int n=10;n=99;n+)if(f(n)=f(2*n)coutntf(n)tf(2*n)endl;6、【2010秋真题】试定义一个类Array,将4行5列二维数组的各列前3个元素依次拼接成一个整数,再将该整数赋值给相应列的最后一个元素。例如, (1)私有数据成员: int a45; (2)公有成员函数: Array(int b5,int n):构造函数,用二维数组b初始化数组a,参数n表示数组b的行数。 void val(int j):将成员数组a第j列的前3个元素依次拼接成一个整数赋值给第4个元素。 void fun():利用成员函数vaLl()依次处理数组a的各列,完成题目的要求。 void print():按矩阵形式打印数组a (3)在主函数中完成对该类的测试。 输出示例: 原数组: 1 2 0 4 1 16 11 21 0 2 2 0 3 1 3 0 0 0 0 0 处理后的数组: l 2 0 4 1 16 11 21 0 2 2 0 3 1 3 1162 2110 213 401 123#includeclass Arrayint a45;public:Array(int b5,int n);void val(int j);void fun();void print();Array:Array(int b5,int n)for(int i=0;in;i+)for(int j=0;j5;j+)aij=bij;void Array:val(int j)for(int i=0;i3;i+) /把aij连接到a3j中,分两步实现:一、根据aij的位 数计算a3j*=10;二、然后a3j+=aij; int t=aij; do a3j*=10; t/=10; while(t); a3j+=aij;void Array:fun()2 / 8如果您需要使用本文档,请点击下载按钮下载!for(int i=0;i5;i+)val(i);void Array:print()for(int i=0;i4;i+)for(int j=0;j5;j+)coutaijt;coutendl;/内循环代表某一行中的各列,内循环结束后输入换行符号实现换行void main()int b45=1,2,0,4,1,16,11,21,0,2,2,0,3,1,3;Array array(b,4);array.fun();array.print(); 7、 请查找字符串we are student,you are student”中的子串student,并在对应位置后面加上字符s。#includevoid main()char s150=we are student,you are student,*p1=s1;char s2=student,*p2=s2;while(*p1)p2=s2;/新一轮的检查,字符数组s2须从头开始while(*p1=*p2)if(*(p2+1)=0)/如果if为真,说明找到了子串,此后添加字符char *p3=p1;while(*+p3);while(p3p1)*(p3+1)=*p3; p3-;*(p1+1)=s;p1+,p2+;p1+;cout添加字符s后的字符串为:s1endl; 8、【题目】试定义一个类NUM,实现求大于整数m的最小的k个自反数。若将某个整数各位数字反序排列后得到的整数与原数相等,则称这个整数为自反数。如整数1234逆序后为4321,两个数不相等,1234不是自反数;整数2332逆序后为2332,逆序前后的两个数相等,2332是自反数。具体要求如下: 1.私有数据成员 (1)int *p; /p指向用于存储满足条件的k个自反数的动态数组。 (2)int m, k; 2.公有成员函数 (1)NUM(int t1,int t2);构造函数,用参数t1,t2分别初始化m、k,并为p分配相应的存储空间。 (2)int isinv(int n);判断整数n是否为自反数,如果是,则返回1,否则返回0. (3)void fun();根据题意将求得的自反数按从小到大的顺序存放到p所指的动态数组中。要求利用成员函数isinv()来判断某个整数是否为自反数。 (4)void print();按输出示例格式输出满足条件的自反数。 (5)NUM();析构函数,释放动态内存。 3.在主函数中对该类进行测试。 输入/输出示例(带下划线部分为键盘输入): 请输入m和k:1000 6 大于1000的6个自反数为:1001 1111 1221 1331 1441 1551#include3 / 8如果您需要使用本文档,请点击下载按钮下载!class NUMint *p;int m,k;public:NUM(int t1,int t2);int isinv(int n);void fun();void print();NUM()if(p)delete p;NUM:NUM(int t1,int t2)m=t1;k=t2;p=new intk;int NUM:isinv(int n)/验证n是否是自反数有很多种方法,其中之一就是求出其反序的整数,比较两者是否相等int t=n,s=0;while(t)/求出n的反序整数ss*=10;s+=t%10;t/=10;if(s=n)return 1;return 0;void NUM:fun()for(int i=m+1,count=0;countk;i+)if(isinv(i)pcount+=i;void NUM:print()cout大于m的k个自反数为:;for(int i=0;ik;i+)coutpit;void main()int m,k;coutmk;NUM num(m,k);num.fun();num.print();9、【题目】试定义一个类STR,实现求两个字符串的交集。两个字符串的交集是指同时属于两个字符串的字符的集合,且该集合中的字符各不相同。具体要求如下: (1)私有数据成员: char s150,s250,s050;字符串s0用于存放字符串s1和字符串s2的交集。 (2)公有成员函数: STR(char *p1,char *p2);构造函数,分别用参数p1和p2初始化成员数组s1和s2。 int isin(char *p,char c);判断字符c是否出现在字符串p中,如果是,则返回值为1,否则返回0。 void fun();求成员数组s1和s2的交集,并将结果存放在成员数组s0中。提示:利用函数isin(char *,char)依次判断一个字符串中的每个字符是否包含于另一个字符串中,如果包含,且该字符不包含于成员数组s0中,则将该字符加入到成员数组s0中。 void print();按输出示例的格式输出所有数据成员。 (3)在主函数中对该类进行测试。 输出示例: 字符串1:abcdef123abc12 字符串2:acef123ace124 两个字符串的交集:acef123#include#includeclass STRchar s150,s250,s050;public:STR(char *p1,char *p2);int isin(char *p,char c);void fun();void print();4 / 8如果您需要使用本文档,请点击下载按钮下载!;STR:STR(char *p1,char *p2)strcpy(s1,p1);strcpy(s2,p2);for(int i=0;i50;i+)s0i=0;int STR:isin(char *p,char c)while(*p) if(*p+=c)return 1;return 0;void STR:fun()/求成员数组s1和s2的交集,并将结果存放在成员数组s0中。char *p1=s1,*p2=s2,*p3=s0;while(*p1)/检验s1中的每一个字符是否在s2中if(isin(s2,*p1)&!isin(s0,*p1)*p3+=*p1;/isin(s2,*p1) 就说满了*p1就是交集;/!isin(s0,*p1)这个交集是不曾出现过的p1+;void STR:print()cout字符串1:s1endl;cout字符串2:s2endl;cout字符串的交集:s0endl;void main()char p1=abcdef123abc12,p2=acef123ace124;STR str(p1,p2);str.fun();str.print();/*主函数功能:测试类(把类的成员函数都调用一遍,通过对象)1、生成对象(会自动调用构造函数,须检查构造函数是否需要实参)2、通过对象挨个调用成员函数 10、 【题目】试定义一个类STR,将一个字符串中指定位置的连续字符拼接到另一个字符串尾部。具体要求如下:(1)私有数据成员:char *p;存放一个字符串。(2)公有成员函数:STR(char *s);构造函数。为数据成员p动态分配内存,并利用参数s初始化数据成员p。 void fun(char *s,int n1,int n2),将字符串s从第n1个字符(从0开始计数)开始的连续n2个字符拼接到数据成员p所指向的字符串之后,形成一个新的字符串。注意:必须要为p重新分配内存空间。 void print();按输出示例格式输出数据成员p。 STR();析构函数,释放动态内存。(3)在主函数中完成对该类的测试。输入/输出示例(带下划线部分为键盘输入):字符串1:abcdefg字符串2:12345678输入起始位置和字符个数: 2 5处理后的字符串1为:abcdefg34567#include#includeclass STRchar *p;public:STR(char *s);void fun(char *s,int n1,int n2);void print();STR();STR:STR(char *s)p=new charstrlen(s)+1;strcpy(p,s);5 / 8如果您需要使用本文档,请点击下载按钮下载!void STR:fun(char *s,int n1,int n2)char s3100;strcpy(s3,p);p=new charstrlen(s3)+n2+1;strcpy(p,s3);char *q1=p;while(*+q1);for(int i=0;in2;i+)/起始地址 s+n1*(q1+)=*(s+n1+i);*q1=0;void STR:print()coutpendl;STR:STR()if(p)delete p;void main()char s1100,s2100;couts1;couts2;int n1,n2;coutn1n2;STR str(s1);str.fun(s2,n1,n2);str.print();11、【题目】试定义一个类Array,实现由一个数组派生出另一个数组。派生规则如下:新数组的元素取值为原数组中相同位置元素的左、右两个相邻元素前后拼接后形成的整数(左邻元素在前,右邻元素在后)。规定最左(右)列元素的左(右)邻元素为该元素所在行的最右(左)侧的元素。具体要求如下:(1)私有数据成员: int a 34; 原数组。 int b 34; 派生数组。(2) 公有成员函数 Array(int t4,int n);构造函数,利用参数t的前n行元素初始化数据成员a。 int nn(int t1,int t2);返回t1,t2拼接后形成的整数(t1在前,t2在后)。 void fun();按题意生成新数组,并将结果存放到数据成员b中。 void print();按矩阵形式输出成员数组。(3)在主函数中对该类进行测试。输出示例:原数组:41 67 34 069 24 78 5862 64 5 45派生数组:67 4134 670 34415824 6978 2458 78694564 625 6445 562*/#include#includeclass Arrayint a34,b34;public:Array(int t4,int n);int nn(int t1,int t2);void fun();void print();Array:Array(int t4,int n)for(int i=0;in;i+)for(int j=0;j4;j+)aij=tij;int Array:nn(int t1,int t2)int t=t2;dot1*=10;6 / 8如果您需要使用本文档,请点击下载按钮下载!while(t/=10);return t1+t2; void Array:fun()int i,j;for(i=0;i3;i+)for(j=0;j4;j+)if(j=0) bij=nn(ai3,ai1);if(j=1|j=2)bij=nn(aij-1,aij+1);if(j=3)bij=nn(ai2,ai0);void Array:print()int i,j;cout原数组:endl;for(i=0;i3;i+)for(j=0;j4;j+)coutaijt;coutendl;cout派生数组:endl;for(i=0;i3;i+)for(j=0;j4;j+)coutbijt;couts1;couts2;int n1,n2;coutn1n2;STR str(s1);str.fun(s2,n1,n2);str.print(); 12、 【题目】试定义一个数组类ARRAY,实现对数组a中的n(0n100)个整数从小到大进行编号,要求不改变数组a中元素的顺序,且相等的整数具有相同的编号,编号的结果存放在另一个数组b中。例如:当a=5,3,4,7,3,5,6时,a的第2和第5个元素值都为3,均是最小元素,因此其编号都为1,即b的第2和第5个元素均为1;a的第3个元素为4,为a的次小元素,编号为2,因此b的第3个元素值为2;依此类推,得到b=3,1,2,5,1,3,4。具体要求如下:(1)私有成员: int *a; 原数组。 int *b; 存放数组a的元素的编号。 int len; 数组a,b中实际元素的个数(2)公有成员: ARRAY(int *x,int n);构造函数。为数组a和b动态分配储存空间,分别利用x和n初始化数组a和整数len。 void number();对数组a的元素从小到大进行连续编号并保存在数据成员b中; void print();按输出示例的格式输出数据成员。 ARRAY();释放相应的动态存储空间。(3) 在主函数中对该类进行测试。输出示例:数组a=5,3,4,7,3,5,6数组b=3,1,2,5,1,3,4*/7 / 8如果您需要使用本文档,请点击下载按钮下载!#include#includeclass ARRAYint *a,*b,len;public:ARRAY(int *x,int n);void number();void print();ARRAY() if(a)delete a;if(b)delete b; ;ARRAY:ARRAY(int *x,int n)a=new intn;b=new intn;len=n;for(int i=0;in;i+) ai=xi; bi=1;void ARRAY:number( )int i,j;for(i=0;ilen;i+)for(j=0;jaj)int flag=1;for(int k=0;kj;k+)if(aj=ak)flag=0;if(flag)bi+;void ARRAY:print()cout数组a=;for(int i=0;ilen;i+)coutai,; coutendl;cout数组b=;for(i=0;ilen;i+)coutbi,; coutendl;void main()int x=5,3,4,7,3,5,6;ARRAY array(x,7);array.number();array.print(); (注:可编辑下载,若有不当之处,请指正,谢谢!) 8 / 8
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!