第5讲 一维数组 单元作业

发布时间 2023-12-28 10:11:35作者: YANTARES

1. 随机产生10个30~100(包括30,100)的正整数,求它们的最大值、最小值、平均值,并显示整个数组的值和结果。

 

yzy's version:

 1 #include <iostream>
 2 #include<time.h>
 3 using namespace std;
 4 int main()
 5 {
 6     int a[10], i,max,min,mean,sum(0);
 7     
 8         for(i=0;i<10;i++)
 9         {
10             //srand(time(NULL));
11             a[i]=rand()%71+30;
12             cout<<a[i]<<' ';
13         }
14         max=a[0];
15         for (i=1;i<10;i++)
16             if(a[i]>max)
17                 max=a[i];
18         min=a[0];
19         for (i=1;i<10;i++)
20             if(a[i]<min)
21                 min=a[i];
22         for (i=0;i<10;i++)
23             sum+=a[i];
24         mean=sum/10;
25         cout<<" \n max="<<max<<" min="<<min<<" mean="<<mean<<endl;
26         system("pause");
27         return 0;
28 }
View Code

同学指出的问题:

mean=sum/10; 是整数,应改为mean=sum/10.0 ;

 

2. 

随机产生20个学生的计算机课程的成绩(0~100),按照从大到小的顺序排序,分别显示排序前和排序后的结果。

 yzy's version:
 1 #include <iostream>
 2 #define N 20
 3 using namespace std;
 4 int main()
 5 {
 6     int a[N],i,j,t;
 7     cout<<"\n before:\n";
 8     for(i=0;i<N;i++)
 9     {
10         a[i]=rand()%101;
11         cout<<a[i]<<' ';
12     }
13     for(i=0;i<N-1;i++)
14         for(j=0;j<N-i-1;j++)
15             if(a[j]<a[j+1])
16             {
17                 t=a[j];
18                 a[j]=a[j+1];
19                 a[j+1]=t;
20             }
21     cout<<"\n after:\n";
22     for(i=0;i<N-1;i++)
23         cout<<a[i]<<' ';
24     system("pause");
25     return 0;
26 }
View Code

 

 

3. 随机产生10个数,输入1~10之间的正整数m,使数组元素右移m位,移出的元素再从左移入。

如,假设原来的数组元素依次为:1  2  3  4  5  6  7  8  9  10,假设m为2,则右移2位后的数组元素依次为:9  10  1  2  3  4  5  6  7  8

 

 yzy's version:

 1 #include <iostream>
 2 #define N 10
 3 using namespace std;
 4 int main()
 5 {
 6     int a[N],i,j,m,t;
 7     for(i=0;i<N;i++)
 8     {
 9         a[i]=rand()%101;
10         cout<<a[i]<<' ';
11     }
12     cout<<"输入1~10之间的正整数m";
13     cin>>m;
14     for(i=1;i<m+1;i++)
15     {
16         t=a[N-1];
17         for(j=N-1;j>=0;j--)
18         {
19             a[j+1]=a[j];    
20         }
21         a[0]=t;
22     }
23     for(i=0;i<N;i++)
24         cout<<a[i]<<' ';
25     system("pause");
26     return 0;
27 }
View Code

 

4. 

按由大到小的顺序输入10个int类型的数据将其存放在一个一维数组中,再输入一个整数到变量x,用二分法查找x是否是数组中的元素,若是,输出其在数组中的位置,否则输出不在数组中的提示。

  yzy's version:
 1 #include <iostream>
 2 #define N 10
 3 using namespace std;
 4 int main()
 5 {
 6     int a[N], i, mid, x, low, high;
 7     cout << "从大到小输入10个整数(空格分开)";
 8     for (i = 0; i < N; i++)
 9         cin >> a[i];
10     for (i = 0; i < N; i++)
11         cout << a[i] << ' ';
12     cout << "输入一个整数";
13     cin >> x;
14     low = 0;
15     high = N - 1;
16     while (low <= high)
17     {
18         mid = (low + high) / 2;
19         if (x == a[mid])
20             break;
21         else if (x > a[mid])
22             high = mid - 1;
23         else
24             low = mid + 1;
25     }
26     if (low > high)
27         cout << "没找到" << endl;
28     else
29         cout << mid+1 << endl;
30     system("pause");
31     return 0;
32 }
View Code