1. 题目:通过编程实现,统计1~n有多少个9
提示: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个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到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 }
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号
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 }
运行结果:
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
3.2 4.5 -3 -99 188
the sorted numbers:
-99.000000 -3.000000 3.200000 4.500000 188.000000