ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

假期作业 2月13日

假期作业 2月13日

数组练习

1、选择题

1.1、若有定语句int a[3][6]; ,按在内存中的存放顺序a 数组的10个元素是

A)a[0][4] B) a[1][3] C)a[0][3] D)a[1][4]

1.2、有数组 int   a[5] = {1020304050},  以下表达式编译错误是___B__ _______

A)   a ++ 

B)   a[5] =  20  ;

C)  a + 20  ;

D)   (a-3,   a[3]) ;

1.3、以下误的定义语句是 ___B____    

Aint x[][3] = {{0},{1},{1,2,3}};

Bint x[4][3] = {{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

Cint x[4][] = {{1,2,3},{1,2,3},{1,2,3},{1,2,3}}; 

Dint x[][3] = {1,2,3,4};

1.4设int i,x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句 

      for(i=0;i<3;i++) 

      printf(″%d, ″,x[i][2-i]); 

的输出结果是      D

   A)1, 4, 7     B)1, 5, 9    C)3, 6, 9    D)3, 5, 7 

1.5表达式“sizeof(int [1][2])/sizeof(int)”的值为___C__。

A)  2    B)  3  C)  4  D)  5

1.6有以下程序

#include main()

{ char s[]="012xy\07s34f4w2";   

int i,n=0; 

for(i=0;s[i]!=0;i++) 

if(s[i]>='0'&&s[i]<='9')

 n++; 

printf("%d\n",n);

}

程序运行后的输出结果是____C________

A)0       B)3      C)7         D)8

1.7、有以下程序

#include <stdio.h>

main( )

{ char s[ ]=wstuv; printf(%c\n,*s+2);

}

程序运行后的输出结果是

At B tuv Cy      D)出错

1.8  数组  int  a[5] = {10, 20, 30, 4050}, 有以下语句,其输出___C____

printf(“%d\n”, *&a +1)    );

A)  20    B)  30    C)  随机值   D)编译报错

1.9  有以程序

# include <stdio.h>

int  main()

{ int s[12]={1,2,3,4,4,3,2,1,1,1,2,3}, c[5]={0,0,0,0,0}, i  ;

for(i=0;i<12;i++) c[s[i]]++ ;

for(i=1;i<5;i++) printf(%d,”,c[i]);  printf(\n);

}        A

A) 4 3 3 2 B) 2 ,   3 4 4

C) 1 2 3 4 D ) 4 4 2 3

1.10   有数组  int  a[3][4] = {10,20,30,40,50,60,70,80,90,100,110,120},执行以下语句输出的是__________D_____

printf(“%d\n”,  *(*a+2) + 3   );

A) 语句有错  B) 120     C)  30     D)  33

2、填空题

    2.1、有以下程序

#include  <stdio.h>

main( )

{ int i,n[ ]={0,0,0,0,0};

for(i=1;i<=4;i++)

{n[i]=n[i-1]*3+1;

printf(%d,n[i]);}

}

程序运行后输出结果是 _____1   4   13    40____

    2.2、执行以程序的输出结果_3715 .

#include <stdio.h>

int  main()

{ int i,n[4]={1000};

for(i=1;i<=3;i++)

{ n[i]=n[i-1]*2+1; printf("%d",n[i]); }

}

2.3、下面程序运行的结果为____358_____

       main()

        {

           int  x[5]i

           x[0] = 1x[1] = 2

           fori = 2i<5i++) x[i] = x[i-1] + x[i-2];

           fori = 2i<5i++) printf“%d”x[i]);

}

2.4有以下程序

#include <sthio.h

int  main()

{

int arr[] = {1,3,5,7,2,4,6,8}, i, start

scanf(%d”, &start);

for(i=0,i<7,i+=2

printf(%d,arr[(start+i)%5]);

}

若在程序运行时输整数 10 <>,则输出结果为__5  2  6  1_____

2.5下面程序运行的结果为__5  4   8   2   0_______。 

#include "stdio.h"

 main()

{ int i,j,a[]={0,2,8,4,5};

printf("\n");

for(i=1;i<=5;i++)

 {  j=5-i;

          printf("%2d",a[j]);

 }

 }

2.6有以下程序

#include  <stdio.h>

int  main()

{ int n[2],i,j;

for(i=0;i<2;i++) n[i]=0; for(i=0;i<2;i++)

for(j=0;j<2;j++) n[j]=n[i]+1;

printf(%d\n,n[1]);

}

程序运行后的输出结果是    2

3、编程题

3.1、 一个班10个学生的成绩,存放在一个一维数组中,要求找出其中成绩最高的学生的成绩和该生的序号。试编程。(试着用下标法和地址法两种方法表示数组)

#include <iostream>
#include<array>
#include <limits>
using namespace std;
int main()
{array<int,10> score;array<int,10>::iterator iter; //定义了一个迭代器for(iter=score.begin();iter!=score.end();iter++)//begin()第一个元素的地址 end()表示最后一个元素的下一个元素的地址{cin >> *iter;//循环输入学生成绩}//使用下标法int index=0;int hscore=score[0];for(int i=1;i<10;++i){if(score[i]>hscore){hscore=score[i];index=i;}}cout << "最高成绩(下标法): " << hscore << ", 学生序号: " << index << endl;//使用地址法int *hscorep=&score[0];for (int *ptr=score.begin();ptr!=score.end();++ptr){if (*ptr>*hscorep){hscorep=ptr;}}int hindex=hscorep-score.begin();cout << "最高成绩(地址法): " << *hscorep << ", 学生序号: " << hindex << endl;return 0;
}

3.2、有5个学生上4门课程,要求输入全部学生的各门课程成绩,然后输出各门课程的平均成绩,并按照各个学生的平均成绩排序(成绩最高的学生排在数组最前面,最低学生排在数组最后面的行) (试着用下标法和地址法两种方法表示数组)

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
class Student
{
public:double scores[4];//存储学生的四门课程成绩double avgScore;//存储学生的平均成绩
};
bool cmpscore(const Student &a, const Student &b)
{return a.avgScore>b.avgScore;//降序排序
}
int main()
{const int stu=5;const int course=4;double scores[stu][course];// 输入学生的成绩for(int i=0;i<stu;++i){for(int j=0;j<course;++j){cin >> scores[i][j];}}// 使用下标法计算每门课程的平均成绩vector<double> courseavg(course, 0.0);for(int j=0;j<course;++j){for(int i=0;i<stu;++i){courseavg[j]+=scores[i][j];}courseavg[j]/=stu;}// 输出每门课程的平均成绩for(int j=0;j<course;++j){cout << "Course " << j+1 << " average: " << courseavg[j] << endl;}// 使用下标法计算每个学生的平均成绩vector<Student> students(stu);for(int i=0;i<stu;++i){double sum=0.0;for(int j=0;j<course;++j){sum+=scores[i][j];}students[i].avgScore=sum/course;for(int j=0;j<course;++j){students[i].scores[j]=scores[i][j];}}// 按照学生的平均成绩降序排序sort(students.begin(),students.end(),cmpscore);// 输出排序后的学生及其平均成绩for (const auto &student:students){cout << "Student average: " << student.avgScore << endl;for (int j=0;j<course;++j){cout << "Course " << j + 1 << ": " << student.scores[j] << endl;}}return 0;
}

返回列表