1:计算0~100之间所有能被3整除和带3的数字之和
int i=0;//循环变量 int sum=0; while(i<100){ if((i%3==0)||(i%10==3)||(i/10==3)){ sum+=i; } i++; } printf("0~100之间所有能被3整除和带3的数字之和为%d",sum); |
2:打印100~1000之间所有水仙花数,并统计其个数:如==>153=1^3+5^3+3^3
int i=100;//循环变量 int count=0,ge,shi,bai,he;//统计水仙花数 do{ ge=i%10;//获取个位 shi=i/10%10;//获取十位 bai=i/100; //获取百位 he=ge*ge*ge+shi*shi*shi+bai*bai*bai; if(he==i){ printf("%d ",i); count++; } i++; }while(i<1000); printf(" 100~1000之间共有%d个水仙花数",count); |
3:李白闲来无事街上走,提壶去买酒,遇店加一倍,遇花喝一斗,五遇花和店喝光壶中酒,李白壶中原有多少酒? ===>逆向思维
//分析:假设原有壶中有x斗酒;===>遇到花之前(x+1);遇到店之前(x+1)/2
#include <stdio.h> void main(){ float x=0;//壶中原有酒的斗数 int i=0; while(i<5){ x=(x+1)/2;//遇到花和店之前的壶中酒的斗数 i++; } printf("李白壶中原有%.3f斗酒",x);//%.3f保留小数点后三位 }