#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
//1.打印1-100中不能被7整除又不包含7的数
//1>首先不能被7整除
//2>去掉17,27,37....97
//3>去掉71-79
// for (int i = 1; i<=100; i++)
// {
// if (i%7 != 0 && i%10 != 7 && i/10 != 7)
// {
// printf("%d ",i);
// }
// }
// 2.输入两个数,求最小公倍数和最大公约数
//1>先求出最小公倍数:一定在最大的数和两个数的乘积之间比较
// int num1, num2 = 0;
// printf("please input two number. ");
// scanf("%d%d",&num1,&num2);
// int max = num1>num2?num1:num2;
// for (int i = max;max<=num1*num2 ; i++)
// {
// if (i % num1 == 0 && i % num2 == 0) {
// printf("最小公倍数为:%d",i);
// break;
// }
// }
//2>再求出最小公约数:比较两个数中最小的那个
// int min = num1<num2?num1:num2;
// for (int j = min; j>=1; j--)
// {
// if (num1 % j == 0 && num2 % j == 0 )
// {
// printf("最大公约数为:%d",j);
// break;
// }
// }
// 3.随机产生20个[10,100]的正整数,输出这些数以及他们中的最大数
// unsigned int a = 0;
// int max = 0;
// for (int i = 1; i<=20; i++)
// {
// a =arc4random();
// int c = a%91+10;
// printf("c=%d ",c);
// if (max<c) {
// max = c;
// }
// }
// printf("max=%d ",max);
// 4.编程将所有"水花仙数"打印出来,并打印其总个数,"水花仙数"是一个各个位立方之和等于该整数的三位数
int num = 100;
int count = 0;
for (int i = num; i<=999; i++)
{
int a = i % 10;//个位
int b = (i/10)%10;//十位
int c = (i/10)/10;//百位
if (i == a*a*a+b*b*b+c*c*c)
{
printf("%d ",i);
//printf("%d%d%d ",c,b,a);
count++;
}
}
printf("count=%d ",count);
// 5.使用循环打印三角形
for (int i = 0; i<=3; i++) {
for (int j = 0; j<3-i; j++) {
printf(" ");
}
for (int k = 0; k<2*i-1; k++) {
printf("*");
}
printf(" ");
}
//6.输入一行字符,分别统计出其中英文字母.空格.数字和其他字符的个数
//1>输入一行字符,计算这行字符数
// int count = 0;//用来计数英文字母的个数
// int count1 = 0;//用来计数空格的个数
// int count2 = 0;//用来计数数字的个数
// int count3 = 0;//用来计数其他的个数
// char receieve = ' ';//用来接收读入字符
// printf("please input a string: ");
// for (int i = 1; ; i++) {
// receieve = getchar();
// if ((receieve>='a' && receieve<='z')||(receieve>='A' && receieve<='Z')) {
// count++;
// }else if(receieve == ' '){
// count1++;
// }else if(receieve>='0' && receieve<='9'){
// count2++;
// }else if (receieve == ' '){
// break;//跳出循环的条件必须具备,否则循环没法停止
// }else{
// count3++;
// }
// }
// printf("英文字母个数为:%d,空格个数为:%d,数字个数为:%d,其他个数为:%d",count,count1,count2,count3);
//7.求S(n)=a+aa+aaa+aaaa+....+aa..a之值,其中a是一个数字,n表示a的位数例如:2+22+222+222+22222(此时n=5),n和a都从键盘输入
//1>先输出a,aa,aaa
//2>for循环执行的顺序:假设输入n=3,a=2,解释执行顺序:首先外层for满足i<=n,执行number=0*10+2=2,打印出2;下面的for循环暂不执行,执行sum1=0+0;然后执行i++,即i=2,number=2*10+2=22,打印出22;嵌套的for循环开始执行,sum=22+2,然后执行j++,即j=2,不满足j<i,跳出循环;执行sum1=0+22+2;然后执行i++,即i=3,number=22*10+2=222,打印出222;嵌套的for循环开始执行,sum=222+2,然后执行j++,即j=3,不满足j<i,跳出循环;执行sum1=22+2+222+2;然后执行i++,即i=4,不满足条件i<=n,即循环结束
// int n = 0,a = 0;
// printf("please enter two number: ");
// scanf("%d%d",&n,&a);
// long int number = 0;//定义一个数值表示a, aa..aa
// long int sum = 0;//在循环内控制部分数字的和,尤其是初始值
// long int sum1 = 0;//求和
// for (int i = 1; i<=n; i++)
// {
// number = number*10+a;
// printf("number=%ld ",number);
// for (int j = 1; j<i; j++)
// {
// sum = number+a;
// }
// sum1=sum1+sum;
//
// }
// printf("sum1=%ld ",sum1-(n-2)*a);
//8 :求 1!+2!+3!+4!……….20!
//1>首先求出阶乘数1! ,2! ,3!....20!
//2>将各个阶乘数依次相加
// long int num = 1;
// long int sum = 0;
// for (long int i = num; i<=20; i++) {
// num = num * i;
// //printf("num=%ld ",num);
// sum = sum + num;
// }
// printf("sum=%ld ",sum);
//9: 有一个球,从100m高度自由落下,每次落地后反跳回原来高度的一半,在落下,再反弹,求它第十次落地时,共经过多少米?第十次反弹多高?
//十次循环,将每次跳跃的高度,打印出来
// float height = 100.00;
// float Height = 0.00;//十次落地总计的路程
// for (int i = 0; i<10; i++) {
// height = height/2;
// //printf("height=%.8f ",height);
// if (i == 9) {
// printf("height=%f ",height);//第十次反弹的高度
// }
//
// Height = height*2+Height;
// }
// printf("Height=%f ",Height+100);
//10:猴子偷桃问题,猴子第一天摘下若干个桃子,当即吃掉一半,还不过瘾,又多吃了一个,以后每天都吃掉剩下的桃子的一半零一个,到第十天在想吃的时候就只剩下一个桃子了,求第一天共摘了多少个桃子?(摘桃子的那天为第一天!)
// int count = 1;//总计的桃子数目
// //第一天:cout/2+1,剩余:count-(count/2+1)
// //第二天:(count-(count/2+1))/2+1
// //倒着算
// for (int i = 1; i<10; i++) {
// count = 2(count+1);//最后剩余的一个留出来,每次加1
// }
// printf("count=%d ",count);
//面试题1 :输入十个数打印第二个大的数
//1>定义三个变量,将最大的存入第二大变量中
// int a = 0;
// int max = 0;
// int max1 = 0;//第二大数
// printf("please enter 10 positive number:");
// for (int i = 0; i<10; i++)
// {
// do
// {
// scanf("%d",&a);
// } while (a<=0);
// if (max<a)
// {
// max1 = max;
// max = a;
// }else if(max == a){
//
// }else if (max1<a){
// max1 = a;
// }
//
// }
// printf("max1=%d ",max1);//打印出第二大的数
//面试题2:输入一个数,判断是几位数,倒着输出这几个数
//1>将输入的数看做一个字符,用getchar()去存取和读出,判断它是否为数字,计算出相应的位数
// int a = 0;
// int count = 0;
// do {
// printf("please input a positive number:");
// scanf("%d",&a);
// } while (a<=0);
// for (;a>0;a/=10)//计算每个数依次除10 ,而后再对十取余,就求出个位的数值,然后就实现逆序输出了
// {
// printf("%d",a%10);
// count++;
// }
// printf(" count=%d ",count);