C语言练习---training1:整数算法训练

1、题目:通过编程实现,统计1~n有多少个9

      提示:n通过参数传入

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 int count_9(int iNum)
 5 {
 6     int i=0, tmp=0, count=0;
 7     for(i=1; i<=iNum; i++)
 8     {
 9          tmp = i;
10          while(tmp)
11          {
12               if(9 == tmp%10)  
13               {
14                    count++;
15               }
16               tmp = tmp/10;
17           }
18      }
19      return count;
20 }
21 
22 int main(int argc, char *argv[])
23 {
24     if(2 != argc)
25     {
26          printf("arg error\n");
27     }
28     else
29     {
30          int iNum = atoi(argv[1]);
31          int count = count_9(iNum);
32          printf("%d以内含有%d个9\n",iNum,count);
33     }
34     return 0;
35 }

2、题目:有n个人围成一圈,顺序牌号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

     提示:用数组完成

#include <stdio.h>

int main()
{
   int a[100],num,i,quit_num,k;
    
   printf("请输入玩游戏的总人数:\n");
   scanf("%d",&num);

   for(i=0;i<num;i++)
   {
      a[i] = i+1;
   }
   quit_num = 0;
   i = 0;k = 0;
   while(quit_num < num-1)
   {
      if(a[i] != 0)
      {
         k++;
         if(k == 3)
         {
            a[i] = 0;
            k = 0;
            quit_num ++;
         }
      }
      if(i == num-1)
      {
         i = 0;
      }
      else
      {
         i++;
      }
   }
   for(i = 0;i < num;i++)
   {
      if(a[i]!=0)
      {
         printf("最后剩下的是原来的%d号\n",a[i]);
      }
   }
   return 0;
}

3、题目:输入5个数(含负数、小数)将它们按由小到大的顺序排列起来

     提示:需要排序的数字通过参数传递进来,

  例如:输入:./a.out  -1  2.1  -3  5  7

               输出: -3 -1 2.1 5 7

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[6])
{
   float temp;
   float a[5];
   int i = 0,j = 0;
   if(argc < 3)
   {  
      printf("arg error\n");
   }
   else
   {
      for(i = 0,j = 1; i < 5; i++,j++)
      {
         a[i] = atof(argv[j]);
      }
      for(i = 0;i < 5; i++)
      {
         for(j = i+1; j < 5; j++)
         {
            if(a[j] < a[i])
            {
               temp = a[i];
               a[i] = a[j];
               a[j] = temp;
            }
         }
      }
      printf("the result is:\n");
      for(i = 0;i < 5;i++)
      {
         printf("%.2f  ",a[i]);
      }
      printf("\n");
    }
   return 0;
}

4、题目:求100以内的素数,全部打印出来

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5    int i,j ;
 6    
 7    for(i = 1;i <= 100;i++)
 8    {
 9       for(j = 2; j <= i; j++)
10       {
11          if(i%j == 0 && i != j )
12          {
13             break;
14          } 
15          if(i == j)
16          {
17             printf("%d ",i);
18             break;
19          }
20       }
21    }
22    printf("\n");
23 
24    return 0;
25 }

5、题目: 一个数如果恰好等于它的因子之和,这个数被成为”完数”,例如:6=1+2+3.请编程找出1000以内的完数

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5    int i = 0, j = 0, sum = 0;
 6    for( i = 2; i <= 1000; i++)
 7    {
 8       sum = 0;
 9       for( j = 1; j< i ; j++ )
10       {
11          if(i%j == 0)
12          {
13             sum = sum + j;
14          }
15       }
16       if(sum == i)
17       {
18          printf("%d 的因子有: ",i);
19          for(j =1;j < i; j++)
20          {
21             if(i%j == 0)
22             {
23                printf("%d ",j);
24             }
25          }
26          printf("\n");
27       }
28    }
29 
30    return 0;
31 }

猜你喜欢

转载自www.cnblogs.com/foodie-yuan/p/9398165.html