



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C、C++编程题目和代码3目录.矩阵左转 …,…2.函数指针(函数调TOC\o"1-5"\h\z用) 4.数字判断(指针为函数参数) 6.字符串比较(字符指针) 8.秘钥加密法(指针应用) 10.谁是老二(结构体) 12.抄袭查找(结构体+指针+函数) 14.结构和链表初步(指针+结构)(冒泡排序) 18.堆栈练习(类和对象实验一) 2010.随机数练习(类和对象实验TOC\o"1-5"\h\z—) 221L买彩游戏(类和对象实验一) 24.堆栈练习扩展(类和对象实验一) 27.堆栈排序练习(类和对象实验一) 30.Date(类与对象) 32.点和圆(类与对象) 35.分数类 .......39.软件备份(拷贝构造函TOC\o"1-5"\h\z数) 44.电话号码升位(拷贝构造函数) 47.Equation(类与对象) 49.Complex(类与对TOC\o"1-5"\h\z象) 50身份证设定(复合类) 51Point_Array(类与对象) 55Array(类与对象) 59软件备份(拷贝构造函数) 62分数类 65=======================================================1.矩阵左转输入ー个2*3的矩阵,将这个矩阵向左旋转90度后输出比如现在有2*3矩阵:123456向左旋转90度后的矩阵变为:14要求:除了矩阵创建和数据输入可以使用数组和数组下标的方法,其他过程对矩阵的任何访问都必须使用指针提示:m行n列的二维矩阵,第i行第j列的元素与首元素的距离为i*n+j,序号从。开始计算输入第一行输入t表示有t个测试实例连续两行输入一个2*3的矩阵的数据依次输入t个实例输出依次输出左转后的矩阵结果在输出的每行中,每个数据之间都用空格隔开,最后ー个数据后面也带有空格样例输入2123456456样例输出362514695847#include<iostream>usingnamespacestd;voidchange(int*p,int*q);intmain()(inta[2][3Lb[3][2];inti,j,t;cin>>t;while(t-)(for(i=0;i<2;i++)for(j=0;j<3;j++)cin>>a[i][j];change(a[0],b[0]);})voidchange(int*p,int*q){inti,j;for(i=0;i<2;i++)for(j=0;j<3;j++)*(q+4-2*j+i)=*(p+3*i+j);// b[2-j](i]=a[i][j];for(i=0;i<3;i++)()}for(j=0;j<2;j++)cout<<*(q+2*i+j)<<"cout<<endl;函数指针(函数调用)定义并实现三个函数:第一个函数是整数函数,返回类型为整数,参数是ー个整数变量,操作是求该变量的平方值第二个函数是浮点数函数,返回类型为浮点数,参数是ー个浮点数变量,操作是求该变量的平方根值。求平方根可以使用函数sqrt(浮点参数),将返回该参数的平方根,在VC中需要头文件cmath。第三个函数是字符串函数,无返回值,参数是ー个字符串指针,操作是把这个字符串内所有小写字母变成大写。要求:定义三个函数指针分别指向这三个函数,然后根据调用类型使用函数指针来调用这三个函数。不能直接调用这三个函数。如果类型为I,则通过指针调用整数函数;如果类型为F,则通过指针调用浮点数函数;如果类型为S,则通过指针调用字符串函数输入第一行输入一个t表示有t个测试实例每行先输入一个大写字母,表示调用类型,然后再输入相应的参数依次输入t行输出每行输出调用函数后的结果样例输入5SshenzhenI25F6.25I31SChina样例输出SHENZHEN6252.5961CHINA#include<iostream>#include<cmath>#include<cstring>usingnamespacestd;intfuckl(inta);floatfuck2(floata);voidfuck3(char*a);intmain()int(*INT)(int);float(*FLOAT)(float);void(*CHAR)(char*a);charch,b[30];inta,t;floatc;cin>>t;while(t-)(cin>>ch;if(ch=='l')(INT=fuckl; cin>>a;cout<<INT(a)<<endl;}elseif(ch=='F') {FLOAT=fuck2; cin>>c;cout<<FLOAT(c)<<endl;}elseif(ch=='S') {CHAR=fuck3;cin>>b;CHAR(b);cout<<b<<endl;)intfuckl(inta)(returna*a;}floatfuck2(floata)(returnsqrt(a);}voidfuck3(char*a)(inti,l=strlen(a);for(i=0;i<l;i++)if(*(a+i)>='a'&&*(a+i)<='z')*(a+i)=*(a+i)-32;数字判断(指针为函数参数)输入ー个字符串,判断这个字符串是否ー个完全整数值的字符串,例如输入"1234",那么表示整数1234,输入"12a3"就表示只是ー个字符串,不是ー个整数要求编写函数isNumber,参数是ー个字符指针,返回值是整数类型如果字符串表示ー个整数,则计算出这个整数并且返回如果字符串不是表示一个整数,则返回ー1主函数必须调用isNumber来判断字符串,不能使用任何C++自带或第三方的类似函数输入输入t表示有t个测试实例每行输入一个字符串依次输入t行输出每行输出判断结果样例输入31234567a0890样例输出1234-1890#include<iostream>#include<cstring>usingnamespacestd;intisnumber(char*a);intl,k=O,t;chara[20];char*p;P=a;cin>>t;while(t-)(cin>>a;cout<<isnumber(p)<<endl;})intisnumber(char*a)(inti,j,l,m=O;l=strlen(a);for(i=0;i<l;i++) {if(isdigit(a[i]))m=m*10+a[i]-'0';elsereturn-1;returnm;}=======================================================4.字符串比较(字符指针)编写ー个函数比较两个字符串,参数是两个字符指针(要求显式定义,例如char*S,char*T),比较字符串S和T的大小。如果S大于T,则返回1,如果S小于T则返回ー1,如果S与T相等则返回O。比较规则:.把两个字符串的相同位置上的字符进行比较,字符的大小比较以ASCI!值为准.在比较中,如果字符串S的字符大于字符串T的字符的数量超过小于的数量,则认为S大于T,如果等于则S等于T,如果小于则S小于T例如S为aaccdd,T为eebbbb»每个位置比较得到S前两个字母都小于T,但后4个字母都大于T,最终认为S大于T.如果两个字符串长度不同,则更长的字符串为大在主函数中输入两个字符串,并调用该函数进行判断,在判断函数中必须使用函数参数的指针进行字符比较输入输入t表示有t个测试实例接着每两行输入两个字符串依次输入t个实例输出每行输出ー个实例的比较结果样例输入3aaccddeebbbbAAbb++aaEE*-zznnkkaaaaaaa样例输出1-1#include<iostream>#include<cstring>usingnamespacestd;intbijiao(char*a,char*b);
chara[30],b[30];intt;cin>>t;while(t-)(cin>>a>>b;cout<<bijiao(a,b)<<endl;}}intbijiaofchar*a,char*b)(inti,x=0,y=0,m,n;m=strlen(a);n=strlen(b);if(m>n)return1;elseif(m<n)return-1;elsefor(i=0;*(a+i)!='\0';i++) {if(*(a+i)>*(b+i)) x++; elseV++; }if(x>y)return1;elseif(x==y)return0;elsereturn-1;if(x>y)return1;elseif(x==y)return0;elsereturn-1;=======================================================5.秘钥加密法(指针应用)有一种方式是使用密钥进行加密的方法,就是对明文的每个字符使用密钥上对应的密码进行加密,最终得到密文例如明文是abcde»密钥是234,那么加密方法就是a对应密钥的2,也就是a偏移2位转化为c;明文b对应密钥的3,就是b偏移3位转化为e,同理c偏移4位转化为g。这时候密钥已经使用完,那么又重头开始使用。因此明文的d对应密钥的2,转化为f,明文的e对应密钥的3转化为h。所以明文abcde,密钥234,经过加密后得到密文是cegfho如果字母偏移的位数超过26个字母范围,则循环偏移,例如字母z偏移2位,就是转化为b,同理字母x偏移5位就是转化为c要求:使用三个指针p、q、s分别指向明文、密钥和密文,然后使用指针p和q来访问每个位置的字符,进行加密得到密文存储在指针s指向的位置。除了变量定义和输入数据,其他过程都不能使用数组下标法,必须使用三个指针来访问明文、密钥和密文。提示:当指针q已经移动到密钥的末尾,但明文仍然没有结束,那么q就跳回密钥头输入第一行输入t表示有t个测试实例第二行输入一个字符串,表示第一个实例的明文第三行输入一个数字串,表示第一个实例的密钥依次输入t个实例输出每行输出加密后的密文样例输入2abcde234XenOS56样例输出cegfhCksUX#include<iostream>#include<cstring>usingnamespacestd;voidchangelfchar*d,int*b);voidchange2(char*a,int*b,char*c,intI);intmain()chara[30],d[30],c[30],*p,*s;inti,l,b[30],*q,t;cin>>t;while(t-)(cin>>a>>d;changel(d,b);l=strlen(d);change2(a,b,c,l);for(i=0;*(c+i)!='\0';i++)cout<<c[i];cout<<endl;})voidchangel(char*d,int*b)(inti,l=strlen(d);for(i=0;i<l;i++)b[i]=d[i]-'0';)voidchange2(char*a,int*b,char*c,intI){inti,j;)for(i=0;*(a+i)!='\0';i++){ if(*(a+i)>='a'&&*(a+i)<='z')*(c+i)=((*(a+i)+*(b+i%l)-97)%26+97);else*(c+i)=((*(a+i)+*(b+i%l)-65)%26+65); } *(c+i)='\0';=======================================================6.谁是老二(结构体)题目描述定义ー个结构体,包含年月日,表示一个学生的出生日期。然后在一群学生的出生日期中找出谁的出生日期排行第二要求:出生日期的存储必须使用结构体,不能使用其他类型的数据结构。要求程序全过程对出生日期的输入、访问、输出都必须使用结构。输入第一行输入t表示有t个出生日期每行输入三个整数,分别表示年、月、日依次输入t个实例输出输出排行第二老的出生日期,按照年一月一日的格式输出样例输入61980561981831980319198053198391219811123样例输出1980-5-3#include<iostream>usingnamespacestd;intsheng(inty,intm,intd);structstudent(intyear;intmonth;intday;intsheng;};intmain()(studenta[10];studentb;intn,i,j;cin>>n;for(i=0;i<n;i++)cin>>a[i].year;cin>>a[i].month;cin>>a[i].day;}for(i=0;i<n-l;i++)for(j=0;j<n-l-i;j++)if(a[j].year>a[j+l].year){b=aU],a[j]=a[j+l];a[j+l]=b;}for(i=0;i<3;i++)a[i].sheng=sheng(a[i].year;a[i].month,a[i].day);for(i=0;i<2;i++)for(j=0;j<2-i;j++)if(a[j].sheng>a[j+l].sheng){b=a[j],a[j]=a[j+l];a[j+l]=b;}cout<<a[l].year<<"-";cout<<a[l].month<<"-";cout<<a[l].day<<endl;}intsheng(inty,intm,intd)intdis=O;switch(m)casel:dis+=31;case2:if(y%400==011y%4==0&&y%100!=0)dis+=29;elsedis+=28;case3:dis+=31;case4:dis+=30;case5:dis+=31;case6:dis+=30;case7:dis+=31;case8:dis+=31;case9:dis+=30;case10:dis+=31;casell:dis+=30;case12:dis+=31;returndis-d;.抄袭查找(结构体+指针+函数)题目描述已知一群学生的考试试卷,要求对试卷内容进行对比,查找是否有抄袭。每张试卷包含:学号(整数类型)、题目1答案(字符串类型)、题目2答案(字符串类型)、题目3答案(字符串类型)要求:使用结构体来存储试卷的信息。定义ー个函数,返回值为一个整数,参数是两个结构体指针,函数操作是比较两张试卷的每道题目的答案,如果相同题号的答案相似度超过90%,那么就认为有抄袭,函数返回抄袭题号,否则返回。。相似度是指在同一题目中,两个答案的逐个位置上的字符两两比较,相同的数量大于等于任一个答案的长度的90%,就认为抄袭。输入第一行输入t表示有t张试卷第二行输入第1张试卷的学生学号第三行输入第1张试卷的题目1答案第四行输入第1张试卷的题目2答案第五行输入第1张试卷的题目3答案每张试卷对应4行输入依次输入t张试卷的数据输出在一行中,把发现抄袭的两个学号和题目号,数据之间用单个空格隔如果发现是题目1抄袭,题目号为1,以此类推输出顺序按照输入的学号顺序进行输出样例输入52088150555aabcdefllZZ887766ddCC33447799ZZ2088150333abedef00AABBCCDDEEZZ668899cc2088150111AABBCCDDEEZZ668899ccabedef002088150222AABBCFDDeEZZ889966ddabcdefOOO2088150444aabcdefOOAABBCDDDEECC668899ZZ样例输出208815033320881504442208815011120881502223#include<iostream>#include<cstring>usingnamespacestd;intxiao(inta,intb);structpaper(intno;chara[100];charb[100];charc[100];};intcompare(paper*p,paper*q);intmain()(paper*a;intn,i,j,k;//freopen("c:\\123.txt","r",stdin); cin>>n;a=newpaper[n];for(i=0;i<n;i++)(cin>>a[i].no;cin>>a[i].a;cin>>a[i].b;cin>>a[i].c;)for(i=0;i<n-l;i++)for(j=i+l;j<n;j++)(k=compare(&a[i],&a[j]); if(k!=O)cout<<a[i].no<<""<<a[j].no<<""<<k<<endl;))intcompare(paper*p,paper*q)(intiJ,m,x=O;l=strlen(p->a);m=strlen(q->a);l=xiao(l,m);for(i=0;i<l;i++)if(p->a[i]==q->;a[i])x++;if(x>=l*9/10)return1;x=0;l=strlen(p->b);m=strlen(q->b);l=xiao(l,m);for(i=0;i<l;i++)if(p->b[i]==q->b[i])x++;if(x>=l*9/10)return2;x=0;l=strlen(p->c);m=strlen(q->c);l=xiao(l,m);for(i=0;i<l;i++)if(p->c[i]==q->c[i])x++;if(x>=l*9/10)return3;return0;}intxiao(inta,intb)(if(a<b)returna;elsereturnb;.结构和链表初步(指针+结构)(冒泡排序)#include<iostream>usingnamespacestd;structstudent(inta;student*next;};student*create();voidfuck(student*head);intmain()(fuck(create());)student*create()(student*head/ps,*pend;head=NULL;ps=newstudent;cin>>ps->a;pend=ps;while(ps->a)(if(head==NULL)head=ps;elsepend->next=ps;pend=ps;ps=newstudent;cin>>ps->a;pend->next=NULL;deleteps;return(head);)voidfuck(student*head)(student*endpt; 〃控制循环比较student*p; 〃临时指针变量student*pl,*p2;pl=newstudent;pl->next=head; 〃注意理解:我们增加一个节点,放在第一个节点的前面,主要是为了便于比较。因为第一个节点没有前驱,我们不能交换地址head=pl; 〃让head指向pl节点,排序完成后,我们再把pl节点释放掉for(endpt=NULL;endpt!=head;endpt=p) 〃结合第6点理解(for(p=pl=head;pl->next->next!=endpt;pl=pl->next)(if(pl->next->a>pl->next->next->a)〃如果前面的节点键值比后面节点的键值大,则交换p2=pl->next->next; 〃结合第1点理解pl->next->next=p2->next; 〃结合第2点理解p2->next=pl->next; 〃结合第3点理解pl->next=p2; 〃结合第4点理解p=pl->next->next;〃结合第6点理解pl=head; 〃把pl的信息去掉head=head->next;〃让head指向排序后的第一个节点deletepl; 〃释放plpl=NULL; 〃pl置为NULL,保证不产生“野指针”,即地址不确定的指针变量while(head->next)}{cout<<head->a<<"";head=head->next;}cout<<head->a<<endl;.堆栈练习(类和对象实验ー)题目描述堆栈是程序设计里面一个很重要的数据结构,也是指针应用的一个重点,请同学们设计ー个可以放N个学生姓名的堆栈,如果满栈则提示不能再放,如果出栈时为空,则提示没有信息可取,用C语言实现该要求。输入第一行输入堆栈的大小:第二行输入元素数目;第三行起依次输入堆栈各元素的值,如果栈满,则提示:满栈!。输出按出栈顺序每行输出各元素的值,如果栈空则提示:栈空!样例输入34TomTimJohnMarry样例输出满栈!JohnTimTom#include<iostream>usingnamespacestd;classfuckprivate:intm,n,i,k;char**a;public:voidset(intmu,intnu,char**b){k=0;inti;m=mu;n=nu;a=newchar*[m];for(i=0;i<m;i++)a[i]=newchar;for(i=0;i<n;i++)(a[i]=b[i];k++;if(i>=m-l){cout<<"满栈!"<<endl;break;}}if(k==O)cout<<"栈空!"<<endl;elsefor(i=m-l;i>=0;i-)cout<<a[i]<<endl;}};intmain()(fucksb;char**a;intm,n,i,j,k;cin>>m>>n;a=newchar*[n];for(i=0;i<n;i++)a[i]=newchar;for(i=0;i<n;i++)}cin>>a[i];sb.set(m,n,a);.随机数练习(类和对象实验ー)题目描述我们知道福利彩票销售中也有通过机选随机生成你需要的号码,现假设福利彩票共有七个号码,每个号码的区间为0-30,现在请你利用C语言设计ー个生成七个福利彩票号码的随机数模拟器,当用户确定下注后,输出七个不同的号码。(需要利用随机函数rand()、srand。,具体用法参见参考书)。输入第一行输入要生成福利彩票的组数;第二行输入买入彩票的客户名称;输出第一行输出客户名称;第二行为第一组彩票号码,第三行为第二组彩票号码,以此类推。。。。。。样例输入2Tom样例输出提示#include<iostream>#include<ctime>#include<stdlib.h>usingnamespacestd;classcaipiaoprivate:intzu;charname[20];int**haoma;public:voidset(inta,charn[20])(zu=a;inti=0;while(n[i]!='\0')(name[i]=n[i];i++;}name[i]='\0';haoma=newint*[zu];for(i=0;i<zu;i++)haoma[i]=newint[7];}voidfuzhi()(inti,j;srand(unsigned(time(NULL)));for(i=0;i<zu;i++)for(j=0;j<7;j++)haoma[i][j]=rand()%31;}voidprintf()(inti=O,j;while(name[i]!='\0')(cout<<name[i];i++;}cout<<endl;for(i=0;i<zu;i++)(for(j=0;j<6;j++)cout<<haoma[i][j]<<"cout<<haoma[i][j]<<endl;int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年小学英语能力测试试题及答案
- 2025年粮食安全与农业发展考试试题及答案
- 2025年国家安全法相关知识测试卷及答案
- 2025年公共英语等级考试试卷及答案
- 2025年供应链金融理论与实践考试试题及答案
- 物资管理计划管理制度
- 物资验收安全管理制度
- 特殊员工工时管理制度
- 特殊学生安全管理制度
- 特殊气体存放管理制度
- 2025年佛山市南海区民政局招聘残疾人专项工作人员题库带答案分析
- 2025年凉山昭觉县委社会工作部选聘社区工作者题库带答案分析
- 2024北京高考一分一段表
- 出租房合同责任免除协议书
- 中国科技课件
- 2025年希腊语A2等级考试官方试卷
- 学习通《形势与政策》2025春章节测试答案
- 年产40万吨甲醇合成工艺设计
- DDS307电导率以说明书
- 满语语法入门拉丁版
- 钢琴键盘大谱表对照表-直接打印版(共6页)
评论
0/150
提交评论