萌新写题第九天

代码总能更优化,本文仅供参考!

 

1、输入数字n,统计0~n中1的个数,如12,带1个个数1。1,10,11,12带1的个数5个。(假定输入的数0~999)

           代码:

 

#include<stdio.h>

 

int main(){

           int n, i, j, k, m, sum = 0;

           printf("请输入数字:");

           scanf("%d", &n);

           for(i = 0; i <= n; i++){

              if(i < 10){

                     j = i%10;

                     if(j == 1){

                         sum += 1;

                            printf(" %d ",i);

                     }

              }

              else if(i < 100 && j >= 10){

                     j = i%10;

                     k = i/10;

                     if(j == 1 || k == 1){

                            sum += 1;

                            printf(" %d ",i);

                     }

                     else if(j == 1 && k ==1){

                            sum += 2;

                            printf(" %d ",i);

                     }

              }     

              else{

                     j = i % 100;

                     k = i / 10 % 10;

                     m = i /100;

                     if(j == 1 || k == 1 || m == 1){

                            sum += 1;

                            printf(" %d ",i);

                     }

                     else if(j == 1 || k == 1 && m == 1){

                            sum += 2;

                            printf(" %d ",i);

                     }

                     else if(j == 1 || m == 1 && k == 1){

                            sum += 2;

                            printf(" %d ",i);

                     }

                     else if(k == 1 || m == 1 && j == 1){

                            sum += 2;

                            printf(" %d ",i);

                     }

                     else if(j == 1 && k == 1 && m == 1){

                            sum += 3;

                            printf(" %d ",i);

                     }

                     else{

                            continue;

                     }

             

              }

           }

           printf("\n");

           printf("带1的个数有%d个!\n",sum);

}

运行结果:

萌新写题第九天

 

 

 

 

2、今有物不知其数,三三数之余二,五五数之余三,七七数之余二,问物几何?

      三人同行七十稀,   五树梅花廿一支

      七子团圆正半月,   除百零五便得知。

 

代码:

 

#include<stdio.h>

 

int main(){

       int n, i, j, k;

       for(i = 0; ; i++){

              if(i % 3 == 2){

                     if(i % 5 == 3){

                            if(i % 7 == 2)

                              break;

                     }

                     else{

                            continue;

                     }

              }

              else{

                     continue;

              }

       }

       printf("该数 = %d\n", i);

}

运行结果:

萌新写题第九天

3、打印99乘法表;

代码:

#include<stdio.h>

 

int main(){

       int a, b, i, j, k;

       for(i = 1; i <= 9; i++){

              for(j = 1; j <= 9; j++){

                     k = i * j;

                     printf("%d * %d = %d\n", i, j, k);

              }

              printf("\n");

       }

}

运行结果:

萌新写题第九天

 

 

 

4、有这样一个等式,xyz+yzz=532,编程求x,y,z的值(xyz和yzz分别表示一个三位数)。

代码:

#include<stdio.h>

 

int main(){

       int x, y, z, a = 0, b = 0;

       for(x = 1; x < 5; x++)

         for(y = 1; y < 5; y++)

              for(z = 0; z < 9; z++)

                if(532 == (x*100 + y*10 + z) + (y*100 + z*10 + z))

                     printf("x = %d, y = %d, z = %d\n", x, y, z);

 

}

 

运行结果:

萌新写题第九天

5、有一八层灯塔,每层的灯数都是上一层的2倍,共有765盏灯,编程求最上层与最下层的灯数;

代码:

#include<stdio.h>

 

int main()

{

       int n, m[8], i, j, sum = 0;

       for(i = 0; sum != 765; i++)

       {

           if(765 != sum)

                sum = 0;

              for(j = 0, n = i; j < 8; j++)

              {

                  if(j == 0)

                     {

                            n = i;

                            m[j] = n;

                            sum += n;

                     }

                     else

                     {

                            n = n*2;

                            m[j] = n;

                            sum += n;

                     }

              }

       }

       for(i = 0; i < 8; i++)

         printf("第%d层有%d盏灯。\n", i+1, m[i]);

       printf("最上层有%d盏灯,最下层有%d盏灯.\n", m[7], m[0]);

}运行结果:

萌新写题第九天