2-1水仙花
#include <iostream>
using namespace std;
int main(){
for(int i = 100;i<=999;i++){
int a = i/100;
int b = i%100/10;
int c = i%10;
if(i == a*a*a+b*b*b+c*c*c) printf("%d\n",i);
}
}
2-2 韩信点兵
#include <iostream>
using namespace std;
int main(){
int a,b,c;
while(scanf("%d %d %d",&a,&b,&c)==3){
for(int i = 10;i<=100;i++){
if(a==i%3&&b==i%5&&c==i%7) //这里若变成i%3==a便出错,为什么?
printf("%d\n",i);
}
}
return 0;
}
2-3 倒三角
#include <iostream>
using namespace std;
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
//数量
int l = n-i;
int t = 1;
while(l--) t+=2;
//位置
int j = i;
while(--j) cout<<' ';//while(--i) cout<<' '; 这里我把i改变了,导致循环变量发生变化,死循环
while(t--) cout<<'*';
cout<<endl;
}
return 0;
}
2-4 子序列的和 不知道坑在哪里
#include <iostream>
using namespace std;
int main(){
int a,b;
while(scanf("%d %d",&a,&b)==2&&(a||b)){
double n = a,m = b;
double sum = 0;
for(double i = n;i<=m;i+=1){
sum += 1/i/i;
}
printf("%.5lf",sum);
}
return 0;
}
2-5分数化小数
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int a,b,c;
while(scanf("%d %d %d",&a,&b,&c)==3&&(a||b||c)){
float d = float(a)/b; //0.166667
int m = d*pow(10,c)+0.5;//1666->1667(四舍五入)
d = m/pow(10,c);
cout<<d;
}
return 0;
}
2-6 排列(待升级)(正确未知)
#include <iostream>
#include <cmath>
using namespace std;
int main(){
for(int q1=1;q1<=9;q1++)
for(int q2=1;q2<=9;q2++)
for(int q3=1;q3<=9;q3++)
for(int q4=1;q4<=9;q4++)
for(int q5=1;q5<=9;q5++)
for(int q6=1;q6<=9;q6++)
for(int q7=1;q7<=9;q7++)
for(int q8=1;q8<=9;q8++)
for(int q9=1;q9<=9;q9++)
if(q1*100+q2*10+q3 == 2*(q4*100+q5*10+q6)&&q1*100+q2*10+q3==3*(q7*100+q8*10+q9)) cout<<q1*100+q2*10+q3<<endl;
return 0;
}
题目2:
#include <iostream>
#include <cmath>
using namespace std;
int main(){
double i;
for(i = 0;i!=10;i+=0.1) printf("%.1f\n",i);
return 0;
}
我的主观感觉是0.1~10。显然结果并不是。
循环条件是i<=10时是0.1~10,条件是i!=10时,表现为起始数值不定,进入死循环一样的状态。
taesimple博客知道----浮点数陷阱:
1.c语言中double类型数据计算是有误差的,也就是说你每次加0.1,可能永远得不到整10,有可能是0.900001
eg:
if(0.1+0.1+0.1 == 0.3)
printf("equal\n");
else
printf("not equal\n");
不会输出"equal"。实际浮点数运算时,0.1+0.1+0.1 != 0.3
原因:
计算机中所有的数都是由二进制表示的,一定有些数二进制是无法表示的,例如0.1,就像十进制无法精确表示10/3一样。
再者,浮点数是采用分数+指数来表示的
0.5 = 1/2;
0.75 = 1/2+1/(2^2);
0.1 = 1/2+1/(2^2)+...