实验四

题目A

    题目描述

编程序,实现如下功能:

(1)定义两个一维数组x,y,不超过50个元素。

(2)从键盘输入k个整数到数组x中。

(3)计算x中数据的平均值ave及大于平均值的元素个数n并输出。

(4)将数组x中数据复制到数组y中,重复的数据只存储一次,最后输出y中的数据。

    输入

输入两行,第一行为输入的数据个数,第二行若干整数,每个整数后面有一个空格用于分隔;

    输出

第一行若干整数,每个整数后面有一个空格,最后一个空格后换行;第二行若干整数,每个整数后面有一个空格,最后一个空格后不需要换行;

    样例输入 Copy

6
6 3 4 3 2 9

    样例输出 Copy

4.5 2
6 3 4 2 9 
 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int x[50], y[50];
 6     int i,k,index;
 7     index = 0;
 8     int n = 0;
 9     cin >> k;
10     for (i = 0; i < k; i++)
11         cin >> x[i];
12     float sum=0;
13     float ave;
14     for (i = 0; i < k; i++)
15         sum += x[i];
16     ave = sum / k;
17     for (i = 0; i < k; i++)
18         if (x[i] > ave)
19             index++;
20     cout << ave << ' ' << index << endl;
21 
22     for (i = 0; i < k; i++)
23     {
24         int flag = 1; int j;
25         for (j = 0; j < i; j++)
26             if (x[j] == x[i])
27             {
28                 flag = 0;
29                 break;
30             }
31         if (flag)
32             y[n++] = x[i];
33     }
34     for (int m = 0; m < n; m++)
35         cout << y[m]<<' ';
36     return 0;
37 }

 

题目B

    题目描述

有 12 人围坐成一圈玩报数游戏,从1号人员开始顺时针报数,报到k的人员被淘汰出局;接着仍沿顺时针方向从被淘汰出局者的下一人员又重新从 1 开始报数,报到 k的人被淘汰;如此继续,直到最后只剩下一个人时停止。请编写程序输出最后所剩那个人的编号。

 

注意:(1)假设参加游戏的人的编号沿顺时针方向依次为 1 到 12,可以使用数组来存放各数据;

          (2)k>1,由用户通过 cin 输入指定。

    输入

输入一个整数,代表报数值;

    输出

输出一个整数,即最后剩下的人的编号;

    样例输入 Copy

3

    样例输出 Copy

10
#include <iostream>
using namespace std;
int main()
{
    int a[13] = { 0 };
    int n, m, k;
    n = m = k = 0;
    cin >> k;
    for (int i = 1; n != 11; i++)
    {
        if (i == 13) i = 1;
        if (a[i] == 0) m++;
        if (m == k)
        {
            m = 0;
            a[i] = 1;
            n++;
        }
    }
    for (int i = 1; i <= 12; i++)
        if (a[i] == 0) cout << i;
}

 

题目C

    题目描述

小宗想知道两个日期之间所间隔的天数,他希望有一个日期计算器,输入两个日期后能够自动计算之间的天数。要求:设计相应的函数完成天数的计算,在主函数中验证正确性。

    输入

按照年月日的顺序输入两个日期,年月日之间用一个空格分隔;

    输出

输出两个日期之间的天数,即一个整数,整数后不需要换行;

    样例输入 Copy

2016 3 6
2017 1 1

    样例输出 Copy

301
 1 #include <iostream>
 2 using namespace std;
 3 int feb(int year)
 4 {
 5     if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
 6         return 29;
 7     else
 8         return 28;
 9 }
10 int days(int year, int month, int day)
11 {
12     int i, j, days, sum; int m[12];
13     sum = 0;
14     for (j = 1; j < year; j++)
15     {
16         sum += 365;
17         if ((j % 4 == 0 && j % 100 != 0) || j % 400 == 0)
18             sum++;
19     }
20     
21     for (i = 1; i < 12; i++)
22     {
23         if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12)
24             m[i] = 31;
25         else if (i == 4 || i == 6 || i == 9 || i == 11)
26             m[i] = 30;
27         else
28             m[i] = feb(year);
29     }
30     for (i = 1; i < month; i++)
31         sum += m[i];
32     days = sum + day;
33     return days;
34 }
35 int sub(int year1, int month1, int day1, int year2, int month2, int day2)
36 {
37     int sub;
38     sub = days(year2, month2, day2) - days(year1, month1, day1);
39         return sub;
40 }
41 int main()
42 {
43     int y1, y2, m1, m2, d1, d2;
44     cin >> y1 >> m1 >> d1 >> y2 >> m2 >> d2;
45     cout<<sub(y1, m1, d1, y2, m2, d2);
46         return 0;
47 }

 

题目D

    题目描述

对于整型数组a[10]和b[10],编制程序完成下列任务:

(1)由用户从键盘为两个数组输入值;

(2)求出两个数组的最大值和最小值;

(3)把数组a和b中的整数分别从小到大和从大到小排序;

(4)把两个有序的数组a和b组成一个长度为20的有序数组c[20],使数组c的顺序为从小到大。

    输入

输入两行整数,每行10个,第一行是数组a里的数组,第二行是数组b里的数值;

    输出

输出五行,第一行有两个整数,分别是数组a的最大值和最小值,两个整数之间用一个空格分隔;第二行有两个整数,分别是数组b的最大值和最小值,两个整数之间用一个空格分隔;第三行按照从小到大的顺序输出数组a里的数值,每个数字后面有一个空格,最后一个数字后面也有空格;第四行按照从大到小的顺序输出数组b里的数值,每个数字后面有一个空格,最后一个数字后面也有空格;第五行按照从小到大的顺序输出合并后数组c里的数值,每个数字后面有一个空格,最后一个数字后面也有空格。

    样例输入 Copy

2 5 9 1 3 4 0 6 7 8
10 5 25 9 6 3 7 1 2 13 

    样例输出 Copy

9 0 
25 1 
0 1 2 3 4 5 6 7 8 9 
25 13 10 9 7 6 5 3 2 1
0 1 1 2 2 3 3 4 5 5 6 6 7 7 8 9 9 10 13 25  
 1 #include <iostream>
 2 using namespace std;
 3 int max(int a[])
 4 {
 5     int i,max;
 6     max = a[0];
 7     for (i = 1; i < 10; i++)
 8         if (a[i] > max)
 9             max = a[i];
10     return max;
11 }
12 int min(int a[])
13 {
14     int i, min;
15     min = a[0];
16     for (i = 1; i < 10; i++)
17         if (a[i] < min)
18             min = a[i];
19     return min;
20 }
21 void mintomax(int a[])
22 {
23         for (int i = 0; i < 9; i++)
24         {
25             for (int j = 0; j < 9; j++)
26             {
27                 if (a[j] > a[j + 1])
28                 {
29                     int temp = a[j];
30                     a[j] = a[j + 1];
31                     a[j + 1] = temp;
32                 }
33             }
34         }
35         for (int i = 0; i < 10; i++)
36             cout << a[i] << ' ';
37 }
38 void maxtomin(int a[])
39 {
40     for (int i = 0; i < 9; i++)
41     {
42         for (int j = 0; j < 9; j++)
43         {
44             if (a[j] < a[j + 1])
45             {
46                 int temp = a[j];
47                 a[j] = a[j + 1];
48                 a[j + 1] = temp;
49             }
50         }
51     }
52     for (int i = 0; i < 10; i++)
53         cout << a[i] << ' ';
54 }
55 void add(int a[],int b[])
56 {
57     int i;
58     int c[20];
59     for (i = 0; i < 10; i++)
60         c[i] = a[i];
61     for (i = 10; i < 20; i++)
62         c[i] = b[i - 10];
63     for (i = 0; i < 19; i++)
64     {
65         for (int j = 0; j < 19; j++)
66         {
67             if (c[j] > c[j + 1])
68             {
69                 int temp = c[j];
70                 c[j] = c[j + 1];
71                 c[j + 1] = temp;
72             }
73         }
74     }
75     for (i = 0; i < 20; i++)
76         cout << c[i] << ' ';
77 }
78 int main()
79 {
80     int i;
81     int a[10], b[10];
82     for (i = 0; i < 10; i++)
83         cin >> a[i];
84     for (i = 0; i < 10; i++)
85         cin >> b[i];
86     cout << max(a) << ' ' << min(a)<<endl;
87     cout << max(b) << ' ' << min(b) << endl;
88     mintomax(a); cout << endl;
89     maxtomin(b); cout << endl;
90     add(a, b);
91         return 0;
92 }

 

题目E

    题目描述

利用cin.getline()函数从键盘录入一句英文,其中每个单词之间用一个空格隔开,最后用'.'结束。统计该句话中单词的个数,并依次输出每个单词。输出个数后换行,输出每个单词后也换行。注意:在本平台下,cin.getline()函数的使用方式如下:

         char s[50];

         cin.getline(s,50); //最多存储49个字符

    输入

输入一句英文,其中每个单词之间用一个空格隔开,最后一个单词后面用英文的'.'作为结束;

    输出

输出每个单词后换行,最后一行输出单词的数量。

    样例输入 Copy

I like juice.

    样例输出 Copy

I
like
juice
3
 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int i, num;
 6     num = 0;
 7     char s[50];
 8     cin.getline(s, 50);
 9     for (i = 0; i < 50; i++)
10     {
11         if (s[i] != ' ' && s[i] != '.')
12             cout << s[i];
13         else
14         {
15             cout << endl;
16             num++;
17         }
18         if (s[i] == '.')
19             break;
20     }
21     cout << num<<endl;
22     return 0;
23 }

 

 
 

 

posted @ 2021-11-27 17:14  云归迟  阅读(250)  评论(0)    收藏  举报