1、c+基础例题100道c+基础例题100道/* 3、求Sn=a+aa+aaa+aaa之值,其中a是一个数字。例如:2+22+222+22222(此时n=5),n由键盘输入。*/#includevoid main() double a,sn=0.0,sum=0.0; int n,i; couta; coutn; sn=a; sum=a; for(i=2;i=n;i+) sum=sum*10+a; sn+=sum; coutSn=snendl;/* 4、一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过了多少米?第10次反弹多高?*/#includevoi
2、d 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; coutsum=sum h1=h1endl;/* 5、猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉了一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩一个桃子了。求第一天共摘了多少桃子。*/#includevoid main() int number,i; number=1; for(i=10;i1;i-) n
3、umber=(number+1)*2; coutnumber=numberendl;第4章 函数/* 1、写一函数用气泡法对输入的10个字符按由小到大的顺序排列。*/#includevoid main() int i,j,temp,a10; coutplease input ten numbers:n; for(i=0;iai; for(i=0;i10;i+) /每循环一次确定数组中一个数的位置 for(j=i+1;jaj) temp=aj; aj=ai; ai=temp; coutresort result=; for(i=0;i10;i+) coutai 1) */#includedoub
4、le fun (double,double);void main() double n,x,sum; coutinput n and xnx; sum=fun(n,x); coutPn(x)=sum1) return (2*n1-1)*x1*fun(n1-1,x1)-(n1-1)*fun(n1-2,x1)/n1;/* 3、编写一函数,由实参传来一字符串,统计此字符串中字母、数字、空格、和其它字符的个数,并在主函数中输入字符串以及输出上述结果。 */#includevoid judge(char a);void main() const int size=100; char asize; cin
5、.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=A&ai=0 & ai=9) number+;/统计数字个数 else others+;/统计其他数个数 i+; coutletter=letter number=number others=othersendl;/* 4、给出年、月、日,计算该日是该年的第几天。 */#includeint lead(int);void main() int ly,year,mo
6、nth,date,i,sum=0; coutyearmonthdate; 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;imonth-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;/不
7、是闰年/* 5、写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。 */#includeint cdivisor(int,int);int cmultiple(int,int,int);void main() int x,y,d,m; coutxy; d=cdivisor(x,y); m=cmultiple(x,y,d); coutcommon divisor is dendlcommon multiple is mendl;int cdivisor(int x1,int y1)/最大公约数 int r,temp; if (x1y1)
8、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#includevoid main() const int size=100; char asize,bsize; coutinput two string:endl; cin.getl
9、ine(a,size); cin.getline(b,size); strcat(a,b); couta=aendl;/* 7、写一函数,将一个字符串的元音字母复制到另一个字符串,然后输出。 */#include#includevoid scpy(char *,char *);void main() const int size=100; char asize=Hello world; char bsize=Net; couta= ab= bendl; scpy(a,b); couta= aendl;void scpy(char *p,char *q) while(*q!=0) if (*q=
10、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#includevoid 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;i4;i+) coutai ; el
11、se coutinput error.endl;第5章 数组/* 1、将一个数组中的值按逆序重新存放,例如,原来顺序为:a、b、c、d。要求改为:d、c、b、a。 */#includevoid back(char *);void main() char a50=abcdefg; couta=aendl; back(a);#includevoid back(char *p) int i=0; while(*p!=0) p+;/把指针定位到字符串末尾 i+;/统计字符个数 cout0;i-)/逆序输出 p-; cout*p; coutendl;/* 2、打印出杨辉三角形(要求打印出前15行)。(杨
12、辉三角最本质的特征是,它的两条斜边都是由数字1组成的,而其余的数则是等于它肩上的两个数之和。) */#includevoid tri(int a15);void main() int i,j,a1515; tri (a); couta= ; for(i=0;i15;i+)/遍历整个数组 for(j=0;j=i;j+) cout=1&aij=9)/当输出个位数之后输出4个空格保持整齐 cout=10&aij=99)/当输出十位数之后输出3个空格保持整齐 cout=100&aij=999)/当输出百位数之后输出2个空格保持整齐 cout ; else cout ;/当输出百位数之后输出1个空格保持
13、整齐 coutendl ;/每行输出结束后换行 void tri(int a1515) int i,j; for(i=0;i15;i+) for(j=0;j=i;j+) if(j=0|j=i)/三角形第一列和对角线被赋值为1 aij=1; else aij=ai-1j-1+ai-1j;/算出其余的数组元素 /* 3、编一程序,将两个字符串连接起来,不要用strcat函数。 */#include#includevoid scat(char *,char *);void main() const int size=100; char asize=Hello; char bsize=Bye; cou
14、ta=a b=bendl; scat(a,b); couta=a after link a and bendl;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介魔方阵,但每介只输出一种。#includevoid square(int a10,int k,int n);void m
15、ain() int n,i,j,k,a1010=0; coutinput an odd number:n; k=n/2;/确定第一个数列数 square(a,k,n); for(i=0;in;i+) for(j=0;jn;j+) couttaij; coutendl; 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=n)/当数组行列都越出范围时候,确定数组正确位置 j+=2;k-=1; else if(j=n)/当数组列越出范围时候,确定数组正确位置 k-=n;
16、else if(ajk!=0)/当数组原位置有数时候,确定数组位置 j+=2;k-=1; ajk=i; /方法二:输出N介魔方阵所有魔方阵。#include #include #include using namespace std;void printA(int *p,int n)/输出这个n阶魔方阵 coutendl下面是一个n阶魔方阵:endl; int i,j; for(i = 0;i n;i+) for(j = 0;j n;j+) coutsetw(4)pij; coutendl; coutendlendl;bool Judge(int *p,int n)/判断是否为n阶魔方阵 in
17、t 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 =
18、false; goto END; NowSum = 0; for(i = 0,j = 0;i n,j = 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 = -
19、1;/一维数组首地址的值赋-1 c0-1 while(b_val0 m) /-1 if(+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 ./ 876543210 for(k = 0;k c;k+) /是否与前面数字重复,如有重复元素跳出,否则使K下标等于C下标 if(b_valk = b_valc) break; i
20、f(k = c)/如果没有重复元素,就可以确定当前元素值,并继续排列下一个下标的数组元素 if(c+1 m) /1 2 3.7 8 如果不满足条件,则生成了一组排列方式,否则继续排列下一个元素/ 8 +c; /1 2 3.7 8 b_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); else c-; delete b_val;void evaluate(in
21、t *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阶方阵的阶数n couts; 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; else n = atoi(s.c_str(); if(n1) 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;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1