第六章利用数组处理批量数据
- 格式:ppt
- 大小:279.50 KB
- 文档页数:40
第6章利用数组处理批量数据一、单项选择题1. 以下对一维数组a的正确说明是:A) char a(10); B) int a[]; C)int k=5,a[k]; D)char a[]={…a‟,‟b‟,‟c‟};2. 以下能对一维数组a进行初始化的语句是: ( C )A) int a[5]=(0,1,2,3,4,); B) int a(5)={}; C) int a[ ]={0,1,2}; D) int a{5}={10*1};3.在C语言中对一维整型数组的正确定义为。
A)int a(10); B)int n=10,a[n];C)int n;a[n]; D) #define N 10int a[N];4、已知:int a[10]; 则对a数组元素的正确引用是()。
A、a[10]B、a[3.5]C、a(5)D、a[10-10]5. 执行下面的程序段后,变量k中的值为int k=3, s[2];s[0]=k; k=s[0]*10;A) 不定值B) 33 C) 30 D) 106. 下列说法中错误的是A 构成数组的所有元素的数据类型必须是相同的B 用指针法引用数组元素允许数组元素的下标越界C 一维数组元素的下标依次是1、2、3……D 定义数组时的长度可以是整型常量表达式7. 若有以下数组说明,则数值最小的和最大的元素下标分别是()。
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};A)1,12 B)0,11C)1,11 D)0,128. 若有以下数组说明,则i=10;a[a[i]]元素数值是()。
int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};A)10 B)9 C)6D)59. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是A) 3 B) 6 C) 10 D) 2010. 若有说明:int a[][3]={1,2,3,4,5,6,7}; 则数组a的第一维的大小为: ( )A) 2 B) 3C) 4 D)无确定值11. 若有说明:int a[][3]={{1,2,3},{4,5},{6,7}}; 则数组a的第一维的大小为: ( )A) 2 B) 3 C) 4 D)无确定值12. 以下定义语句中,错误的是A) int a[]={1,2}; B) char *a[3]; C) char s[10]=“test”; D) int n=5,a[n];13.下面程序段的输出结果是:int i;int 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 5 9 B) 1 4 7 C) 3 5 7D) 3 6 914. 对二维数组的正确定义是()A)int a[ ] [ ]={1,2,3,4,5,6}; B)int a[2] [ ]={1,2,3,4,5,6};C)int a[ ] [3]={1,2,3,4,5,6}; D)int a[2,3]={1,2,3,4,5,6};15.已知int a[3][4];则对数组元素引用正确的是______.A)a[2][4] B)a[1,3] C)a[2][0]D)a(2)(1)17.下面程序的输出结果是____。
c语⾔程序设计第五版课后答案谭浩强第六章习题答案第六章:利⽤数组处理批量数据1. ⽤筛选法求100之内的素数【答案解析】素数:约数为1和该数本⾝的数字称为素数,即质数筛选法:⼜称为筛法。
先把N个⾃然数按次序排列起来。
1不是质数,也不是合数,要划去。
第⼆个数2是质数留下来,⽽把2后⾯所有能被2整除的数都划去。
2后⾯第⼀个没划去的数是3,把3留下,再把3后⾯所有能被3整除的数都划去。
3后⾯第⼀个没划去的数是5,把5留下,再把5后⾯所有能被5整除的数都划去。
这样⼀直做下去,就会把不超过N 的全部合数都筛掉,留下的就是不超过N的全部质数。
因为希腊⼈是把数写在涂腊的板上,每要划去⼀个数,就在上⾯记以⼩点,寻求质数的⼯作完毕后,这许多⼩点就像⼀个筛⼦,所以就把埃拉托斯特尼的⽅法叫做“埃拉托斯特尼筛”,简称“筛法”。
(另⼀种解释是当时的数写在纸草上,每要划去⼀个数,就把这个数挖去,寻求质数的⼯作完毕后,这许多⼩洞就像⼀个筛⼦。
)【代码实现】//⽤筛选法求100以内的素数#include<stdio.h>int main(){int i, j, k = 0;// 将数组汇总每个元素设置为:1~100int a[100];for (i = 0; i < 100; i++)a[i] = i+1;// 因为1不是素数,把a[0]⽤0标记// 最后⼀个位置数字是100,100不是素数,因此循环可以少循环⼀次a[0] = 0;for (i = 0; i < 99; i++){// ⽤a[i]位置的数字去模i位置之后的所有数据// 如果能够整除则⼀定不是素数,该位置数据⽤0填充for (j = i + 1; j < 100; j++){if (a[i] != 0 && a[j] != 0){//把不是素数的都赋值为0if (a[j] % a[i] == 0)a[j] = 0;}}}printf(" 筛选法求出100以内的素数为:\n");for (i = 0; i < 100; i++){//数组中不为0的数即为素数if (a[i] != 0)printf("%3d", a[i]);}printf("\n");return 0;}【运⾏结果】2. ⽤选择法对10个整数排序【答案解析】选择排序原理:总共两个循环,外循环控制选择的趟数,内循环控制具体选择的⽅式。