C语言练习

数组练习

  1. 选择题

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

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

1.2、有数组 int   a[5] = {10,20,30,40,50},  以下表达式编译错误是_____ _______。

A)   a ++ ;

B)   a[5] =  20  ;

C)    a + 20  ;

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

1.3、以下错误的定义语句是 _______    

A)int   x[][3]  =  {{0},{1},{1,2,3}};

B)int   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}};

D)int                 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]);

的输出结果是

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

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

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);

}

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

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

1.7、有以下程序

#include   <stdio.h>

 main(   )

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

}

程序运行后的输出结果是

A)t       B)  tuv      Cy      D)出错

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

       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) 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},执行以下语句输出的是_______________

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

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

  1. 填空题

    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]);}

}

程序运行后输出结果是 __________141340

    2.2、执行以下程序的输出结果是_ .3715

#include <stdio.h>

int  main()

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

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] = 1;x[1] = 2;

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

           for(i = 2;i<5;i++) 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 <回车>,则输出结果为_______1523

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]);

}

程序运行后的输出结果是 【13】3

 3、编程题

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

#include<iostream>
using namespace std;
int main(){
	int x;
	int index=0,max=-1;
	for(int i=0;i<10;i++){
		cin>>x;
		if(x>max){
			max=x;
			index=i;
		}
	}
	cout<<index<<" "<<max<<endl; 
	return 0;
} 

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

#include<iostream>
#include<algorithm>
using namespace std;
struct Student{
	int a,b,c,d;
	double average;
	bool operator<(const Student& other)const{
		return average<other.average;
	}
};
Student student[5];
int main(){
	for(int i=0;i<5;i++){
	 	int a,b,c,d;
	 	cin>>a>>b>>c>>d;
	 	double res=(a+b+c+d)*1.0/4;
		student[i]={a,b,c,d,res};
	}
	sort(student,student+5);
	for(int i=0;i<5;i++){
		cout<<student[i].a<<" "<<student[i].b<<" "<<student[i].c<<" "<<student[i].d<<endl;
		cout<<student[i].average<<endl;
	}
	return 0;
} 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值