欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    c++基础例题100道(37页).doc

    • 资源ID:36348595       资源大小:312.50KB        全文页数:37页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    c++基础例题100道(37页).doc

    -c+基础例题100道-第 37 页/* 1、打印出所有的"水仙花数"。所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153 = 13 + 53 + 33。 */#include<iostream.h>void main()int i, a=0, b=0, c=0;for(i=100;i<1000;i+)a=i%10;b=i/10%10;c=i/100%10;if(a*a*a+b*b*b+c*c*c=i)cout<<"i="<<i<<endl;/* 2、一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如,6的因子为1、2、3,而6 = 1 + 2 + 3,因此6是"完数"。编程序找出1000之内的所有完数,并按下面的格式输出其因子:6 -1,2,3 */#include<iostream.h>void main()int i,j,sum=0,a50,k,t;for(i=1;i<=1000;i+)sum=0;for(j=1;j<i;j+)if(i%j=0)sum+=j;ak+=j;t=k;if(sum=i)cout<<i<<"->"for(k=0;k<t;k+)cout<<ak;if(k<t-1)cout<<","cout<<endl;k=0;/* 3、求Sn=a+aa+aaa+aaa之值,其中a是一个数字。例如:2+22+222+22222(此时n=5),n由键盘输入。*/#include<iostream.h>void main()double a,sn=0.0,sum=0.0;int n,i;cout<<"please input a number"cin>>a;cout<<"please input n number"cin>>n;sn=a;sum=a;for(i=2;i<=n;i+)sum=sum*10+a;sn+=sum;cout<<"Sn="<<sn<<endl;/* 4、一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过了多少米?第10次反弹多高?*/#include<iostream.h>void main()double h1=100,h2=100,sum=0.0;int i;for(i=1;i<=10;i+)sum+=h2;h1=h1/2.0;h2=h1*2;cout<<"sum="<<sum<<" "<<"h1="<<h1<<endl;/* 5、猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉了一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩一个桃子了。求第一天共摘了多少桃子。*/#include<iostream.h>void main()int number,i;number=1;for(i=10;i>1;i-)number=(number+1)*2;cout<<"number="<<number<<endl;第4章 函数/* 1、写一函数用"气泡法"对输入的10个字符按由小到大的顺序排列。*/#include<iostream.h>void main()int i,j,temp,a10;cout<<"please input ten numbers:n"for(i=0;i<10;i+)cin>>ai;for(i=0;i<10;i+) /每循环一次确定数组中一个数的位置for(j=i+1;j<10;j+) /每次循环对比一个数的大小if(ai>aj)temp=aj;aj=ai;ai=temp;cout<<"resort result="for(i=0;i<10;i+)cout<<ai<<" "/* 2、用递归方法求n阶勒让得多项式的值,递归公式为1. (n = 0)Pn(x) = x (n = 1)(2n-1)*x*Pn-1(x)-(n-1)*Pn-2(x)/n (n > 1) */#include<iostream.h>double fun (double,double);void main()double n,x,sum;cout<<"input n and x"<<endl;cin>>n>>x;sum=fun(n,x);cout<<"P"<<n<<"("<<x<<")"<<"="<<sum<<endl;double fun(double n1,double x1)if (n1=0)return 1;else if (n1=1)return x1;else if (n1>1)return (2*n1-1)*x1*fun(n1-1,x1)-(n1-1)*fun(n1-2,x1)/n1;/* 3、编写一函数,由实参传来一字符串,统计此字符串中字母、数字、空格、和其它字符的个数,并在主函数中输入字符串以及输出上述结果。 */#include<iostream.h>void judge(char a);void main()const int size=100;char asize;cin.getline(a,size);judge(a);void judge(char a100)/判断字符类型int letter=0,number=0,others=0,i=0;while(ai!='0')if (ai>='a'&&ai<='z')|(ai>='A'&&ai<='z') letter+;/统计字母个数else if (ai>='0' && ai<='9') number+;/统计数字个数else others+;/统计其他数个数i+;cout<<"letter="<<letter<<" number="<<number<<" others="<<others<<endl;/* 4、给出年、月、日,计算该日是该年的第几天。 */#include<iostream.h>int lead(int);void main()int ly,year,month,date,i,sum=0;cout<<"input year、month、date: "cin>>year>>month>>date;int a12=31,0,31,30,31,30,31,31,30,31,30,31;ly=lead(year);if (ly=1)a1=29;/366天else a1=28;/365天for(i=0;i<month-1;i+) /当前月之前所有月天数累加和sum+=ai;sum+=date; /加上当前月天数cout<<"你输入的日期是当年的第"<<sum<<"天"int lead(int y)/判断闰年if(y%4=0&&y%100!=0)|(y%400=0) return 1;/是闰年else return 0;/不是闰年/* 5、写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。 */#include<iostream.h>int cdivisor(int,int);int cmultiple(int,int,int);void main()int x,y,d,m;cout<<"input two number: "cin>>x>>y;d=cdivisor(x,y);m=cmultiple(x,y,d);cout<<"common divisor is "<<d<<endl<<"common multiple is "<<m<<endl;int cdivisor(int x1,int y1)/最大公约数int r,temp;if (x1<y1)temp=x1;x1=y1;y1=temp;while(x1%y1)/当较大数除以较小数余数等于0时,较小数为最大公约数r=x1%y1;x1=y1;y1=r;return y1;int cmultiple(int x2,int y2,int d1)/最小公倍数return x2*y2/d1;/两数相乘结果除以它们的最大公约数为最小公倍数/* 6、写一函数,将两个字符串连接。 */#include<iostream.h>#include<string.h>void main()const int size=100;char asize,bsize;cout<<"input two string:"<<endl;cin.getline(a,size);cin.getline(b,size);strcat(a,b);cout<<"a="<<a<<endl;/* 7、写一函数,将一个字符串的元音字母复制到另一个字符串,然后输出。 */#include<iostream.h>#include<string.h>void scpy(char *,char *);void main()const int size=100;char asize="Hello world"char bsize="Net"cout<<"a= "<<a<<"b= "<<b<<endl;scpy(a,b);cout<<"a= "<<a<<endl;void scpy(char *p,char *q)while(*q!='0')if (*q='a'|*q='A'|*q='e'|*q='E'|*q='i'|*q='I'|*q='o'|*q='O'|*q='u'|*q='U')*p+=*q;q+;/* 8、写一函数,输入一个四位数字,要求输出这4个数字字符,但每两个数字间空一空格。如输入1990,应输出"1 9 9 0"。 */#include<iostream.h>#include<string.h>void outs(char a);void main()const int size=10;char asize;cin.getline(a,size);outs(a);void outs(char a10)int i;if(strlen(a)<=4)for(i=0;i<4;i+)cout<<ai<<" "else cout<<"input error."<<endl;第5章 数组/* 1、将一个数组中的值按逆序重新存放,例如,原来顺序为:a、b、c、d。要求改为:d、c、b、a。 */#include<iostream.h>void back(char *);void main()char a50="abcdefg"cout<<"a="<<a<<endl;back(a);#include<iostream.h>void back(char *p)int i=0;while(*p!='0')p+;/把指针定位到字符串末尾i+;/统计字符个数cout<<"a="for(;i>0;i-)/逆序输出p-;cout<<*p;cout<<endl;/* 2、打印出杨辉三角形(要求打印出前15行)。(杨辉三角最本质的特征是,它的两条斜边都是由数字1组成的,而其余的数则是等于它肩上的两个数之和。) */#include<iostream.h>void tri(int a15);void main()int i,j,a1515;tri (a);cout<<"a= "for(i=0;i<15;i+)/遍历整个数组for(j=0;j<=i;j+)cout<<aij;if(aij>=1&&aij<=9)/当输出个位数之后输出4个空格保持整齐cout<<" "else if (aij>=10&&aij<=99)/当输出十位数之后输出3个空格保持整齐cout<<" "else if(aij>=100&&aij<=999)/当输出百位数之后输出2个空格保持整齐cout<<" "else cout<<" "/当输出百位数之后输出1个空格保持整齐cout<<endl<<" "/每行输出结束后换行void tri(int a1515)int i,j;for(i=0;i<15;i+)for(j=0;j<=i;j+)if(j=0|j=i)/三角形第一列和对角线被赋值为1aij=1;else aij=ai-1j-1+ai-1j;/算出其余的数组元素/* 3、编一程序,将两个字符串连接起来,不要用strcat函数。 */#include<iostream.h>#include<string.h>void scat(char *,char *);void main()const int size=100;char asize="Hello"char bsize="Bye"cout<<"a="<<a<<" b="<<b<<endl;scat(a,b);cout<<"a="<<a<<" after link a and b"<<endl;void scat(char *p,char *q)while(*p!='0')/确定数组a的插入位置p+;while(*q!='0')*p=*q;p+;q+;/* 4、打印"魔方阵"。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如:三阶魔方阵:8 1 63 5 74 9 2 要求打印由1到n2的自然数构成的所有魔方阵。 */方法一:输出N介魔方阵,但每介只输出一种。#include<iostream.h>void square(int a10,int k,int n);void main()int n,i,j,k,a1010=0;cout<<"input an odd number:"<<endl;cin>>n;k=n/2;/确定第一个数列数square(a,k,n);for(i=0;i<n;i+)for(j=0;j<n;j+)cout<<"t"<<aij;cout<<endl;void square(int a10,int k,int n)int i,j;for(i=1,j=0;i<=n*n;i+,j-,k+)/n为阶数,从1开始给数组赋值if(j<0&&k>=n)/当数组行列都越出范围时候,确定数组正确位置j+=2;k-=1;else if(j<0)/当数组行越出范围时候,确定数组正确位置j+=n;else if(k>=n)/当数组列越出范围时候,确定数组正确位置k-=n;else if(ajk!=0)/当数组原位置有数时候,确定数组位置j+=2;k-=1;ajk=i;/方法二:输出N介魔方阵所有魔方阵。#include <string>#include <iomanip>#include <iostream>using namespace std;void printA(int *p,int n)/输出这个n阶魔方阵cout<<endl<<"下面是一个"<<n<<"阶魔方阵:"<<endl;int i,j;for(i = 0;i < n;i+)for(j = 0;j < n;j+)cout<<setw(4)<<pij;cout<<endl;cout<<endl<<endl;bool Judge(int *p,int n)/判断是否为n阶魔方阵int i,j,sum = 0,NowSum = 0;bool YesOrNo = true;for(j = 0;j < n;j+)/第一行总和sum += p0j;for(i = 1;i < n;i+)/判断每行总和是否相等NowSum = 0;for(j = 0;j < n;j+)NowSum += pij;if(NowSum != sum)YesOrNo = false;goto END;for(i = 0;i < n;i+)/每列是否相等NowSum = 0;for(j = 0;j < n;j+)NowSum += pji;if(NowSum != sum)YesOrNo = false;goto END;NowSum = 0;for(i = 0,j = 0;i < n,j < n;i+,j+)/主对角线是否相等NowSum += pij;if(NowSum != sum)YesOrNo = false;goto END;NowSum = 0;for(i = n-1,j = 0;i >= 0,j < n;i-,j+)/次对角线是否相等NowSum += pij;if(NowSum != sum)YesOrNo = false;goto END;END:return YesOrNo;void combination(int *p,int n,int *a)/求m = n*n个数(1,2,3.m)的全排列int m = n*n;static int Num = 0;int *b_val = new intm;int c = 0,k,i,j;b_valc = -1;/一维数组首地址的值赋-1 c0-1while(b_val0 < m) /-1if(+b_valc < m) /分别从0开始累加每个元素值,并限制不超出最大阶数/b00 10 11 20 21 22.66.70.77 80.88 判断魔方 89 012345678/ 78 80.87 判断魔方 88 89 012345687/ 67.70.76 88 012345768/ 012345786/ 012345867 ./ 876543210for(k = 0;k < c;k+) /是否与前面数字重复,如有重复元素跳出,否则使K下标等于C下标if(b_valk = b_valc)break;if(k = c)/如果没有重复元素,就可以确定当前元素值,并继续排列下一个下标的数组元素if(c+1 < m) /1 2 3.7 8 如果不满足条件,则生成了一组排列方式,否则继续排列下一个元素/ 8+c; /1 2 3.7 8b_valc = -1;/ continue;else /生成了一组排列方式k = -1;for(i = 0;i < n;i+)for(j = 0;j < n;j+)pij = ab_val+k; /a0-a8/判断是否为n阶魔方阵if(Judge(p,n)printA(p,n);elsec-;delete b_val;void evaluate(int *p,int n)/给n阶方阵的元素赋值int i;int *AllNum = new int3*3;for(i = 1;i <= n*n;i+)AllNumi - 1 = i;combination(p,n,AllNum);delete AllNum;void main()int i,n,*a;string s;do/输入n阶方阵的阶数ncout<<"请输入n阶方阵的阶数n(退出程序按e或E键):"cin>>s;if(!strcmp(s.c_str(),"e") | !strcmp(s.c_str(),"E")break;else if(s.find_first_not_of("0123456789") != string:npos)cout<<"请输入有效的数字,不能含有非数字的字符。"<<endl;continue;elsen = atoi(s.c_str();if(n<1)cout<<"请输入有效的数字,必须 >= 1。"<<endl;continue;/分配内存a = new int*n;for(i = 0; i < n; i+)ai = new intn;cout<<"正在运算,请等待。"<<endl;/给n阶方阵的元素赋值evaluate(a,n);cout<<"运算结束!"<<endl;for(i = 0; i < n; i+)delete ai;delete a;while(1);return;/* 5、求一个3x3矩阵对角线元素之和。*/#include<iostream.h>int dia(int a3);void main()int i,j,sum,a33=2,3,5,6,2,3,1,9,0;cout<<"a= "for(i=0;i<3;i+)for(j=0;j<3;j+)cout<<aij;cout<<endl<<" "sum=dia(a);cout<<"nsum="<<sum<<endl;int dia(int a33)int i,j,sum=0;for(i=0;i<3;i+)/主对角线之和for(j=i;j<=i;j+)sum+=aij;for(j=0;j<3;j+)/另一个对角线之和for(i=2-j;i<=2-j;i+)if(i!=j)/避免重复累加两个对焦向重合的元素sum+=aij;return sum;/返回对角线员素之和/* 6、编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中。不用strcpy函数。拷贝时,'0'也要拷贝过去。 '0'后面的字符不拷贝。*/#include<iostream.h>void scopy(char a,char b);void main()int i;char a10;char b10="Hello"scopy(a,b);for(i=0;ai!='0'i+)cout<<ai;cout<<endl;void scopy(char a,char b)int i;for(i=0;bi!='0'i+)ai=bi;ai='0'/* 7、用筛选法求100之内的素数。(所谓素数就是除了1和它本身以外,不能再被别的整数整除,这种数称作素数(也称质数)。)*/#include<iostream.h>void main()int i,j;for(i=1;i<=100;i+)for(j=2;j<i;j+)/判断素数if(i%j!=0);else break;/不是素数if(i=j)/相等为素数cout<<" "<<i;cout<<endl;/* 8、用选择法对10个整数排序。*/#include<iostream.h>void csort(int a10);void main()int i;int a10=6,4,2,7,9,0,1,6,3,0;for(i=0;i<10;i+)/输出原数组数据顺序cout<<ai;cout<<endl;csort(a);for(i=0;i<10;i+)/输出排序后的顺序cout<<ai;cout<<endl;void csort(int a10)/排序int i,j,k,temp=0;for(i=1;i<10;i+)k=i;for(j=k+1;j<10;j+)/找出最小数的数组下标if(ak>aj)k=j;if(k!=i)temp=ai;/把数放到正确位置ai=ak;ak=temp;第6章 指针/* 1、在主函数中输入10个字符串。用另一函数对它们排序。然后在主函数输出这10个已排好序的字符串。(用指针实现)*/#include<iostream.h>void psort(int *p);void main()int i,a10;cout<<"please input ten numbers:n"for(i=0;i<10;i+)cin>>ai;psort(a);cout<<"resort result="for(i=0;i<10;i+)cout<<ai<<" "void psort(int *p)int i,j,temp;for(i=0;i<10;i+) /每循环一次确定数组中一个数的位置for(j=i+1;j<10;j+) /每次循环对比一个数的大小if(pi>pj)temp=pj;pj=pi;pi=temp;/* 2、输入一个字符串,内有数字和非数字字符,如A123x456 1233?8997jhlkll将其中连续的数字作为一个整数,依次存放到一数组a中,统计共有多少个整数,并输出这些数。*/#include<iostream.h>#include<string.h>#include <windows.h>int charge(int *,char *);void main()int a50,i,numb;char b50;cout<<"please input a character string:"<<endl;cin.getline(b,50);system("cls");cout<<"your character string is "cout.write(b,strlen(b)<<endl;numb=charge(a,b);for(i=0;i<numb;i+)cout<<" a"<<i<<"="<<ai;cout<<endl<<"total numbers="<<numb<<endl;int charge(int *q,char *p)/*q指向新数组,*p指向初始数组int numb=0;for(;*p!='0'p+)/判断每个字符if(*p>='0'&&*p<='9')*q=(*p)-'0'/将字符型整数转换成整型整数赋值给新数组p+;while(*p>='0'&&*p<='9')/判断是否有连续字符型整数*q=(*q)*10+(*p)-'0');/将连续字符型整数转换成一个整型整数赋值给新数组p+;q+;numb+;/统计整数的个数return numb;/* 3、用指向指针的指针的方法对5个字符串排序并输出。*/#include <iostream.h>#include <string.h>void sort(char *str);void main()int i;char *string5;cout<<"输入5个字符串:"<<endl;for(i=0;i<5;i+)stringi = new char10;cin.getline(*(string+i),50);sort(string);for(i=0;i<5;i+)delete stringi;void sort(char *str)int i=0,j;char *p=0;for(i=0;i<4;i+)for(j=i+1;j<5;j+)if(strcmp(*(str+i),*(str+j)<0)p=*(str+i);*(str+i)=*(str+j);*(str+j)=p;cout<<"after sort the chars :"<<endl;for(i=0;i<5;i+)cout<<*(str+i)<<endl;/* 4、统计一字符串在另一个字符串中出现的次数。*/#include<iostream.h>#include<string.h>int change(char *,char *);void main()int sum;char a10="dog"char b20="sdlkdogsddydodog"cout.write(a,10)<<endl;cout.write(b,20)<<endl;sum=change(a,b);cout<<"sum="<<sum<<endl;int change(char *p,char *q)int sum=0,i=0;while(*q!='0')while(*p=*q&&*p!='0')/对比是否含有相等字符串*p+;*q+;i+;if(*p='0')sum+=1;/含有字符串个数p=p-i;/第一个字符串重新定位q=q-i;/第二个字符串重新定位i=0;/重新累加移动次数q+;return sum;/* 5、有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数.n和m从键盘输入。*/#include<iostream.h>#include<string.h>void charge(int a,int,int);void main()int i,n,m,a50;cout<<"请输入n的值:"cin>>n;cout<<"请输入移动位数:"cin>>m;cout<<"请输入整数:"for(i=0;i<n;i+)cin>>ai;cout<<"您输入的整数为:"for(i=0;i<n;i+)cout<<ai<<" "cout<<endl;charge(a,n,m);cout<<"移动后的整数为:"for(i=0;i<n;i+)cout<<ai<<" "cout<<endl;void charge(int a,int n, int m)/n为整数个数,向右移动m个位置int i,j;for(j=0;j<m;j+)/移动m个位置for(i=n-1;i>=0;i-)/移动一个位置就要移动每一个数组元素ai+1=ai;a0=an;/* 6、有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。*/#include<iost

    注意事项

    本文(c++基础例题100道(37页).doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开