苏嵌//谭晓寅//2018.7.14

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

提示:n通过参数传入

  1 #include<stdio.h>
  2
  3 int main()
  4 {
  5     int n;
  6     int i;
  7     int count = 0;//计数器赋初值
  8     int temp;
  9
 10     printf("Please input n:");
 11     scanf("%d",&n);//键盘输入n
 12
 13     for(i = 1;i <= n;i ++)
 14     {
 15         temp = i;//存放i的值
 16         while(temp != 0)
 17         {
 18             if(temp % 10 == 9)//判断temp的最后一位是否为9
 19             {
 20                 count ++;//计数器加1
 21             }
 22             temp = temp / 10;//去掉temp的最后一位
 23         }
 24     }
 25
 26     printf("1 - %d count_9 = %d个\n",n,count);
 27
 28     return 0;
 29 }
运行结果:

Please input n:278395
1 - 278395 count_9 = 130475个

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

提示:用数组完成

  1 #include <stdio.h>
  2
  3 int main()
  4 {
  5     int n;
  6     int a[1000];//定义一个1维数组
  7     int count = 0;//从1记到3
  8     int i;
  9     int temp;
 10
 11     printf("The number of people:\n");
 12     scanf("%d",&n);//输入人数
 13     temp = n;//保存n的值
 14
 15     for(i = 0;i < n;i ++)//给n个人编号,从1-n
 16     {
 17         a[i] = i + 1;
 18     }
 19
 20     i = 0;//从1号开始
 21     while(temp > 1)//temp用来控制数组的长度,保证不越界
 22     {
 23         if(a[i] != 0)
 24         {
 25             count ++;
 26         }
 27         if(count == 3)
 28         {
 29             a[i] = 0;//把退出的人标记为0
 30             count = 0;//重新计数
 31             temp --;//把被标记为0的人踢出
 32         }
 33         i ++;
 34         if(i == n)//i=n时重新执行循环
 35         {
 36             i = 0;
 37         }
 38     }
 39
 40     printf("The number of the person stay:\n");
 41
 42     for(i = 0;i < n;i ++ )
 43     {
 44         if(a[i] != 0)//寻找n个人中未被标记为0的人
 45         {
 46             printf("%d号\n",a[i]);//输出留下来人的号码
 47         }
 48     }
 49
 50     return 0;
 51 }
运行结果:
The number of people:
100
The number of the person stay:
91号

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

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

  1 #include <stdio.h>
  2
  3 int main()
  4 {
  5     float num[5];
  6     int i;
  7     int j;
  8     float temp;
  9
 10     printf("Please input 5 numbers:\n");
 11     for(i = 0;i < 5;i ++)//键盘依次输入五个数存放于一维数组中
 12     {
 13         scanf("%f",&num[i]);
 14     }
 15
 16     for(j = 0;j < 4;j ++)//进行4次循环,实现4趟比较
 17     {
 18         for(i = 0;i < 4 - j;i ++)//在每一趟中进行4-j次比较
 19         {
 20             if(num[i] > num[i + 1])//相邻两个数比较
 21             {
 22                 temp = num[i];
 23                 num[i] = num[i + 1];
 24                 num[i + 1] = temp;
 25             }
 26         }
 27     }
 28
 29     printf("the sorted numbers:\n");
 30     for(i = 0;i < 5;i ++)//依次输出排好序的五个数
 31     {
 32         printf("%f\t",num[i]);
 33     }
 34     printf("\n");
 35
 36     return 0;
 37 }
运行结果:
Please input 5 numbers:
3.2 4.5 -3 -99 188
the sorted numbers:
-99.000000      -3.000000       3.200000        4.500000        188.000000



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值