#include <stdio.h>
#include <iostream>
using namespace std;
int fun1(int m,int n){
//辗转相除法
int temp;
while(n != 0){
temp = m % n;
m = n;
n = temp;
}
return m;
//或递归调用
//if(m % n == 0){
// return n;
//}
//return fun1(m , m % n);
}
int fun2(int m,int n){
//最小公倍数=m*n/最大公约数
int temp = fun1(m,n);
int res = m * n / temp;
return res;
}
int main(){
int m,n;
scanf("%d,%d",&m,&n);
int a = fun1(m,n);//最大公约数
int b = fun2(m,n);//最小公倍数
printf("最大公约数:%d\n",a);
printf("最小公倍数:%d\n",b);
return 1;
}
#include <stdio.h>
#include <iostream>
using namespace std;
int main(){
int n;
printf("请输入要判断字符的最大长度:");
scanf("%d",&n);
char s[n];
int a = 0;//用于记录中英文数
int b = 0;//用于记录空格数
int c = 0;//用于记录数字个数
int d = 0;//用于记录其他字符
scanf("%s",&s);
for(int i = 0 ; i < n ; ++i){
if(s[i]>=65 && s[i]<= 90){
//记录A-Z
++a;
}else if(s[i]>= 97 && s[i]<= 122){
//记录a-z
++a;
}else if(s[i] == " "){
//记录空格
++b;
}else if(s[i] >= 48 && s[i] <= 57){
//记录0-9
++c;
}else if(s[i] != '/0'){
//记录其他字符
++d;
}else{
break;
}
}
printf("英文字母共有:%d,空格有:%d,数字有:%d,其他字符有:%d\n",a,b,c,d);
return 1;
}
#include <stdio.h>
#include <iostream>
#include <math.h>
using namespace std;
long int gen(int n, int a){
long int res = 0;
if(n == 0)
return a;
for(int i = n; i > 0 ; --i){
res += a*pow(10,i);
}
res += a;
return res;
}
int main(){
int a;
int n;
scanf("%d,%d",&a,&n);
long int res = 0;
for(int i = 0 ; i < n ; ++i){
res += gen(i,a);
}
printf("Sn = %d\n",res);
return 1;
}
#include <iostream>
#include <stdio.h>
using namespace std;
long int fac(int n){
long int res = 0;
for(i = 1 ; i< = n ; ++i){
res *= i;
}
return res;
}
int main(){
int n = 20;
long int res = 0 ;
for(int i = 1 ; i <= n ; ++i){
res += fac(i);
}
printf("sum(20!) = %d\n",res);
return 1;
}
#include <stdio.h>
#include <iostream>
#include <math.h>
using namespace std;
int main(){
double res = 0;
for(int i = 1 ; i <= 100 ; ++i){
res += i;
}
for(int i = 1 ; i <= 50 ; ++i){
res += i*i;
}
for(int i = 1 ; i <= 10 ; ++i){
res += 1/i;
}
printf("sum = %f\n",res);
return 1;
}
水仙花数是指一个三位数其个位数字的立方和等于该数本身
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
int main(){
int a,b,c,sum;
for(int i = 100 ; i < 1000 ; ++i){
a = i/100;
b = (i-a*100)/10;
c = i-a*100-b*10;
sum = pow(a,3)+pow(b,3)+pow(c,3);
if(sum == i)
printf("%d是水仙花数\n",i);
}
return 1;
}
一个数恰巧等于它的因子之和,称为完数。
#include <stdio.h>
#include <iostream>
using namespace std;
int main(){
int sum = 0;
for(int i = 1 ; i <= 1000 ; ++i){
for(int j = 1 ; j < i ; ++j){
if(i%j == 0)
sum += j;
}
if(sum == i)
printf("%d 是完数\n",i);
sum = 0;
}
return 1;
}
2/1,3/2,5/3,8/5,13/8,21/13,···
#include <iostream>
#include <stdio.h>
using namespace std;
int main(){
int a = 1;
int b = 2;
int c;
double res = 0;
for(int i = 0; i < 20 ; ++i){
res += b/a;
c = a;
a = a+b;
b = c;
}
printf("sum = %f\n",res);
return 1;
}
#include <iostream>
#include <stdio.h>
using namespace std;
int main(){
double h = 100;
double distance = 0;
double reback = 0;
for(int i = 0 ; i < 10 ; ++i){
distance += 1.5*h;
h /= 2;
reback = h;
}
h -= reback;
printf("球在第10次落地时共经过%fm,第10次反弹%fm\n",distance,reback);
}
猴子第一天摘下若干桃子,当即吃了一半还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上再想吃时就剩下一个桃子了,求第一天共摘了多少个桃子。
#include <iostream>
#include <stdio.h>
using namespace std;
int main(){
int peach = 1;
for(int i = 0 ; i < 9 ; ++i){
peach += 1;
peach *= 2;
}
printf("Total peach is %d\n",peach);
return 1;
}
Xn+1 = 1 / 2( Xn + a / Xn ),其中前后两次求出x的差的绝对值小于10-5
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
int main(){
double a,x0,x1;
scanf("%lf",&a);
x0 = a;
x1 = (x0 + a / x0) / 2;
double abs = pow(10,-5);
while (fabs(x0 - x1) >= abs) {
x0 = x1;
x1 = (x0 + a / x0) / 2;
}
printf("x = %f\n",x1);
printf("x = sqrt(%lf) = %f\n",a,sqrt(a));
return 1;
}
2x3-4x2+3x-6=0
#include <stdio.h>
#include <iostream>
#include <math.h>
using namespace std;
int main(){
//牛顿迭代法思路就是Xn+1 = Xn - F(x)/F'(X)
double x0,x1;
x0 = 1.5;
x1 = 0;
int count = 0;
double abs = pow(10,-5);
while(fabs(x1-x0) >= abs){
x0 = x0 - (2*x0*x0*x0-4*x0*x0+3*x0-6)/(6*x0*x0-8*x0+3);
x1 = x0 - (2*x0*x0*x0-4*x0*x0+3*x0-6)/(6*x0*x0-8*x0+3);
++count;
printf("第%d次迭代:x0 = %f,x1 = %f\n",count,x0,x1);
}
printf("共迭代%d次\n",count);
printf("%f\n",x1);
return 1;
}
暂略,后序补上
#include <stdio.h>
#include <iostream>
using namespace std;
int main() {
//分两次处理,第一次处理前4行,第二次处理后三行
//以中间点为中心,从两边向中间输出“ ”
int n = 3;
for(int i = 0 ; i < 4 ; ++i){
char c[] = "*******";
for(int j = 0 ; j < n; ++j){
c[j] = ' ';
c[6-j] = ' ';
}
--n;
printf("%s\n",c);
if(n < 0)
break;
}
n = 1;//让n从1开始重新计数
//后3行思路与上面相似
for(int i = 0 ; i < 3 ; ++i){
char c[] = "*******";
for(int j = 0 ; j < n ; ++j){
c[j] = ' ';
c[6-j] = ' ';
}
++n;
printf("%s\n",c);
if(n > 3)
break;
}
return 1;
}
#include <stdio.h>
#include <iostream>
using namespace std;
int main(){
char A,B,C;
for(B='X';B<='Z';++B){
//B无限制,故先循环B
for(A = 'X' ; A <= 'Z' ; ++A){
//A不允许和X比赛,则如果A==X终止当前循环
if(A == 'X')
continue;
else{
for(C = 'X' ; C < 'Z' ; ++C){
//C不允许和X,Z比赛,并且此时还应该满足A!=B!=C
if(C == 'X' || A == B || A == C || B == C)
continue;
else{
//均满足时,输出结果
printf("%c,%c,%c",A,B,C);
}
}
}
}
}
return 1;
}