编程练习解析学习笔记

1.求符合给定条件的整数集
给定不超过6的正整数A,考虑从A开始的连续4个整数,请输出所有由它们组成的无重复数字的三位数。

#include <stdio.h>
int main()
{
    int a;
    scanf("%d",&a);
    int i,j,k;
    int cnt =0;
    i=a;
    while (i<=a+3) {
          j=a;
          while(j<=a+3) {
                k=a;
                while(k<=a+3) {
                    if (i!=j && i!=k && j!=k) {
                       cnt++;
                       printf("%d%d%d",i,j,k);
                       if (cnt ==6) {
                          printf("\n");
                          cnt=0;
                       }else {
                           printf(" ");
                       }
                     }
                     k++;
                   }
                   j++;
                 }
                 i++;
               }
               return 0;
            }
    

2.水仙花数
水仙花数是指一个N位正整数(N>=3),它的每个位数上的数字的N次幂之和等于它本身,例如:153=1x1x1+5x5x5+3x3x3,本题要求编写程序,计算所有N位水仙花数。

#include <stdio.h>
int main()
{
    int n;
    scanf("%d", &n);
    n=3;
    int first =1;
    int i =1;
    while ( i<n ) {
          first *= 10;
          i ++;
    }
    //printf("first=%d\n",first);
   //遍历100-999
   i=first;
   while ( i<first*10 ) {
          int t = i;
          int sum = 0;
          do{
               int d = t%10;
               t/=10;
               int p = d;
               int j = 1;
               while ( j<n ) {
                      p *= d;
                      j++;
                   }
                   sum += p;
                }while (t>0);
                if ( sum == i) {
                    printf("%d\n", i);
                }
                 i++;
             }
             return 0;
          }
   

3.九九乘法表
本题要求对任意的给定的1位正整数N,输出从1x1到NxN的部分口诀表

#include <stdio.h>
int main()
{
   int n;
   scanf("%d", &n);
   n=9;
   int i,j;
   i=1;
   while ( i<=n ) {
        j=1;
        while ( j<=i ) {
              printf("%d*%d=%d",j,i,i*j);
              if ( i*j <10 ) {
                  printf(" ");
              }else {
                  printf(" ");
              }
              j++;
          }
          printf("\n");
          i++;
      }
      return 0;
  }

4.统计素数求和
本题要求统计给定整数M和N区间内素数的个数并对它们求和

#include <stdio.h>
int main()
{
     int m,n;
     int i;
     int cnt = 0;
     int sum = 0;
     scanf("%d %d, &m,&n);
     if (m==1)
         m=2;
     for ( i=m; i<=n; i++ ) {
         int isPrime = 1;
         int k;
         for ( k=2;k<i-1;k++ ) {
              if ( i%k == 0 ) {
                  isPrime = 0;
                  break;
               }
           }
           //判断i是否素数
           if ( isPrime ) {
               cnt++;
               sum+=i;
            }
        }
        printf("%d %d\n", cnt,sum);
        return 0;
    }

5.猜数游戏
猜数字游戏是令系统随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了还是小了,相等表示猜到了,则结束程序,如果输入超过规定的次数,则提示“Game over”,并结束程序。

#include <stdio.h>
int main()
{
     int number,n;
     int inp;
     int finished = 0;
     int cnt = 0;
     scanf("%d %d", &number,&n);
     do{
        scanf("%d", &inp);
        cnt++;
        if ( inp<0 ) {
            printf("Game Over\n");
            finished = 1;
        }else if ( inp>number ) {
            printf("Too big\n");
        }else if (inp<number ) {
            printf("Too small\n");
        }else {
             if ( cnt ==1 ) {
                 printf("Bingo!\n");
             }else if ( cnt <=3 ) {
                 printf("Lucky You!\n");
             }else {
                 printf("Good Guess!\n");
             }
             finished =1;
        }
        if ( cnt==n ) {
           if ( !finished ) {
               printf("Game Over\n");
               finished =1;
            }
         }
     }while (  !finished );
     return 0;
 }

6.求序列前N项求和
本题要求编写程序,计算序列2/1+3/2+5/3+8/5+…的前N项和,注意该序列从第二项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。

#include <stdio.h>
int main()
{
   int n;
   double dividend,divisor;
   double sum = 0.0;
   int i;
   double t;
   scanf("%d", &n);
   n = 2000;
   dividend = 2;
   divisor = 1;
   for ( i=1;i<=n;i++ ){
          sum += dividend/divisor;
          t = dividend;
          dividend = dividend + divisor;
          divisor = t;
    }
    printf("%f %f\n",dividend,divisor);
    printf("%.2f\n",sum);
    return 0;
 }
发布了10 篇原创文章 · 获赞 73 · 访问量 2498

猜你喜欢

转载自blog.csdn.net/weixin_46121783/article/details/105750546