第四章 数组——批量定义与批量操作:数组就是一组数。之前我们处理的都是单一变量,这一部分内容学完以后我们就可以处理相关的多个数据甚至可以用数组来处理很大的数。4.1一维数组定义和初始化:在C语言中使用数组必须先进行定义。一维数组的定义方式为: 类型说明符 数组名 [常量表达式];数组元素是组成数组的基本单元。数组元素也是一种变量,其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。数组元素的一般形式为: 数组名[下标]数组初始化赋值是指在数组定义时给数组元素赋予初值。数组初始化是在编译阶段进行的。这样将减少运行时间,提高效率。初始化赋值的一般形式为: 类型说明符 数组名[常量表达式] = { 值, 值……值 };[单选题]对一个含有100个元素的有序数组,用二分法查找某指定元素,最多需要比较( )次?选项:[8, 6, 5, 7]
4.2二维数组:一维数组只有一个下标,称为一维数组,其数组元素也称为单下标变量。在实际问题中有很多量是二维的或多维的,因此C语言允许构造多维数组。多维数组元素有多个下标,以标识它在数组中的位置,所以也称为多下标变量。本节只介绍二维数组,多维数组可由二维数组类推而得到。 本节将介绍二维数组的定义、引用和初始化,以及常见的应用。
4.3数组与函数:数组做函参和普通变量做函参,传递的东西是不一样的。普通变量作函参,是按值调用。传递的是变量值的副本,实参和形参变量占不同的内存单元。而数组作函参,是按地址调用。传递的是数组的首地址,实参与形参数组占同一段内存单元。本小节中将介绍怎么用数组做函数参数。
4.4查找和排序:在实际应用中,查找运算是非常常见的。面向一些数据量很大的实时系统,如订票系统、互联网上的信息检索系统等,查找效率尤其重要。这里讲两种查找算法。一种是顺序查找,也称线性查找;另一种是折半查找,也称二分查找。排序是计算机程序设计中的一种重要操作,在很多领域中都有广泛的应用。如各种升学考试的录取工作,日常生活的各类竞赛活动等都离不开排序。排序的一个主要目的是便于查找。有序的顺序表可以采用查找效率较高的折半查找法。
[单选题]有如下程序 #include <stdio.h>int main(){ int n[5]={0,0,0},i,k=2; for(i=0;i<k;i++) n[i]=n[i]+1; printf("%d",n[k]); return 0; }该程序的输出结果是( )。
选项:[0, 1, 2, 不确定的值]
[单选题]以下程序中函数Sort的功能是对a所指数组中的数据进行由大到小的排序,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>void Sort(int a[],int n){ int i,j,t; for(i=0;_________;i++) for(________;j<n;j++) if(a[i]<a[j]) { t=a[i]; __________; a[j]=t; }} int main(){ int aa[10]={1,2,30,4,5,6,7,8,9,10},i; __________; for(i=0;i<10;i++) printf("%d,",aa[i]); printf(""); return 0;}
选项:[第5行: i<n-1第6行: j=i+1第10行: a[i]=a[j]第18行: Sort(aa,10)
, 第5行: i<n第6行: j=i+1第10行: a[j]=a[i]第18行: Sort(aa,10)
, 第5行: i<=nj第6行: =i第10行: a[i]=a[j]第18行: Sort(10,aa)
, 第5行: i<n-1第6行: j=i第10行: a[i]=a[j]第18行: Sort(aa[],10)
]
[单选题]以下程序中函数Reverse的功能是对数组a中的前一半元素逆序、后一半元素逆序,再将逆序后的前、后两部分数据位置交换。按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。例如:主程序中数组b中的元素为{16,22,13,41,50,62,27,18,9,10},调用函数Reverse后,数组b中元素变为{10,9,18,27,62,50,41,13,22,16}。#include <stdio.h>void Reverse(int a[],int n){ int i,t; for(i=0;________;i++) { t=a[i]; __________; a[n-i]=t; }} int main(){ int b[10]={16,22,13,41,50,62,27,18,9,10}; int i,s=0; __________; for(i=0;i<10;i++) { printf("%4d",b[i]); } return 0;}
选项:[第5行: i<=n/2第8行: a[n]=a[i]第17行: Reverse(9,b)
, 第5行: i<=n/2第8行: a[i]=a[n]第17行: Reverse(b,9)
, 第5行: i<=n/2第8行: a[i]=a[n-i]第17行: Reverse(b,9)
, 第5行: i<=n第8行: a[n-i]=a[i]第17行: Reverse(b,9)
]
[单选题]假定double类型变量占用8个字节,且数组定义如下,则数组length在内存中所占字节数是( )。double length [10];
选项:[0, 10
, 160, 80]
[单选题]以下程序的输出结果是( )。#include<stdio.h>void swap1(int c[]){ int t; t=c[0]; c[0]=c[1]; c[1]=t;} void swap2(int c0,int c1){ int t; t=c0; c0=c1; c1=t;} int main( ){ int a[2]={3,5},b[2]={3,5}; swap1(a); swap2(b[0],b[1]); printf("%d %d %d %d",a[0],a[1],b[0],b[1]); return 0;}
选项:[5 3 5 3, 5 3 3 5, 3 5 5 3, 3 5 3 5]
[单选题]以下能正确定义二维数组的是( )。选项:[int a[][3]={2*3};, int a[2][3]={{1},{2},{3,4}}, int a[3][]={};, int a[][3];]
[单选题]在int a[ ][3] = { {1,4}, {3,2}, {4,5,6}, {0} };中,a[2][1]的值是( )。选项:[0, 6, 5, 2]
[单选题]以下数组定义中错误的是( )。选项:[int x[2][3]={1,2,3,4,5,6};, int x[2][3]={{1,2},{3,4},{5,6)};, int x[2][3]={0};, int x[][3]={{1,2,3},{4,5,6}};]
[单选题]以下程序中函数Fun的功能是对b所指数组中的第m至第n个数据取累加和,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>int Fun( ______ ,int m,int n){ int i,s=0; for( ______;i<n;i++) s=s+b[i]; return _______;}int main(){ int x,a[]={1,2,3,4,5,6,7,8,9}; x=Fun(a,3,7); printf("%d",x); return 0;}
选项:[第2行: int b[]第5行: i=n-1第7行: b[i]
, 第2行: int b[]第5行: i=1第7行: i
, 第2行: int b[]第5行: i=m-1第7行: s
, 第2行: int b第5行: i=0第7行: s
]
温馨提示支付 ¥1.00 元后可查看付费内容,请先翻页预览!