一、思考题
1.阅读下列程序,分析输出结果,若将s[j]=j/2改为s[j]=j%2,则结果是什么?
2.阅读下列程序,分析输出结果。
3.若输入20和8,则下列程序的输出结果是什么?
二、练习题
1.选择题
A.int a[4]; B.int a[4]={1, 2, 3, 4, 5};
C.int a[4]={1, 2, 3}; D.int a[4]={1};
int x[10]={0,2,4};
则数组x在内存中所占字节数为____。
A.6 B.12
C.20 D.40
(3)以下数组定义中,错误的是____。
A.int a[2][3]; B.int b[][3]={0,1,2,3};
C.int c[100][100]={0}; D.int d[3][]={{1,2},{1,2,3},{1,2,3,4}};
(4)若已定义:int a[3][2]={1, 2, 3, 4, 5, 6};,值为6的数组元素是____。
A.a[3][2] B.a[2][1]
C.a[1][2] D.a[2][3]
A.int x[2][]={{1,0,1},{5,2,3}}; B.int x[][3]={{1,2,3},{4,5,6}};
C.int x[2][4]={{1,2,3},{4,5},{6}}; D.int x[][]={{1,0,1},{ },{1,1}};
(6)若已定义:int a[][4]={1,2,3,4,5,6,7,8,9}; 则数组a的第一维的大小是____。
A.2 B.3
C.4 D.不确定
(7)给出以下定义:
则正确的叙述为____。
A.数组x和数组y等价 B.数组x和数组y的长度相同
C.数组x的长度大于数组y的长度 D.数组x的长度小于数组y的长度
(8)下列字符串赋值或赋初值的方式中,不.正确的是____。
A.char str[]="string"; B.char str[7]={'s','t','r','i','n','g'};
C.char str[10]; str="string"; D.char str[7]={'s','t','r','i','n','g','\0'};
(9)若已定义int x[5],a[3]={2};,下列对数组元素的引用中,正确的是____。
A.x[a[0]] B.x[5]
C.x[a] D.x[a[0]+3]
(10)以下程序的输出结果是____。
A.0650 B.1470
C.5430 D.输出值不确定
2.填空题
(1)若定义int a[10]={1,2,3}; 则a[3]的值是。
(2)在C语言中,二维数组各个元素在内存中的存放顺序是____。
(3)若定义int a[2][3]={{2},{3}}; 则值为3的数组元素是_____。
(4)若定义char string[]="This is a book!",则该数组的长度是____。
(5)若定义char a[15]="windows-2000"; 则执行语句printf("%s",a+8);后的输出结果是____。
(6)下列程序的输出结果是____。
(7)判断字符串s1是否大于字符串s2,应使用的判断条件是____。
(8)若有定义语句:char s[100],d[100]; int j=0,i=0;且s中已赋字符串,请填空以实现字符串拷贝。(注意:不得使用逗号表达式)
(9)下面程序的功能是将一个字符串按逆序存放,请填空。
(10)下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其他元素不变。请填空。
3.程序改错题
(1)下列程序的功能是计算矩阵A的主对角线上的元素之和并输出。该程序有错误,请将程序修改正确(只能对有错误的行进行修改,不得修改正确的行,也不得删除或增加程序行)。
(2)下列程序的功能是统计从终端输入的字符中大写字母的个数,num[0]中统计字母A的个数,其他以此类推。用#号结束输入(函数isupper(c)用于判断c是否为大写字母)。
4.编程题
(1)随机产生10个1~100的正整数存入数组a,输出该数组各个元素,并求最大值、最小值和平均值。
提示:
① 用srand()和100*(rand()+1)/32768产生1~100之间的随机数。
② 以a[0]作为最大值、最小值及累加和的初始值,用数组和循环相结合求出数组的最大值、最小值和平均值。
(2)编制程序计算矩阵a[5][5]的周边元素之和。
(3)实行学分制,学生的平均绩点是衡量学生学习的重要依据。成绩等级与绩点的关系如下表所示:
编一程序利用两个一维数组分别输入某学生20门课程的学分和对应成绩,计算其平均绩点。
(4)编制程序将一个字符串按逆序存放。
(5)编制程序测试字符串str2是否整体包含在字符串str1中,若包含,则指明str2在str1中的起始位置。例如:str1="abcde",str2="cd",则str2包含在str1中,起始位置为3。
三、测试题
1.选择题
(1)合法的数组定义语句是( )。
A.int a[4] = {1,2,3,4,5}; B.int a[3]={0}, b[3] = a;
C.int a[4]; D.int a[ ] = {0};
a = {1,2,3,4,5};
(2)将字符串“hello”存放在一个字符数组中,正确的定义方式是( )。
A.char s[5]="hello"; B.char s[5]={'h', 'e', 'l', 'l', 'o'};
C.char s[10]="hello"; D.char s[10]; s ="hello";
(3)若有以下语句,描述正确的是( )。
char s1[ ]="string"
char s2[ ]={'s', 't', 'r', 'i', 'n', 'g'};
A.数组s1和s2的长度相同 B.数组s1的长度大于s2的长度
C.数组s1的长度小于s2的长度 D.两个数组是等价的
(4)以下能对二维数组进行正确初始化的语句是( )。(www.xing528.com)
A.int a[2][ ]={{1,2,3},{4,5,6}}; B.int a[ ][ ]={{1,2,3},{4,5,6}};
C.int a[ ][2 ]={{1,2,3},{4,5,6}}; D.int a[ ][2 ]={ 1, 2, 3, 4, 5, 6};
(5)若有数数组定义
char s[ ]=“welcome”;
则以下说法正确的是( )。
A.字符串s的长度为7 B.字符串s的长度为8
C.字符数组s的大小为7 D.sizeof(s)和strlen(s)的值相等
(6)引用数组时,数组下标的数据类型为( )。
A.整型常量 B.整型表达式
C.整型常量或整型表达式 D.任意类型表达式
(7)若有说明:int a[4]={1};则正确的叙述是( )。
A.数组a中所有元素的值都为1 B.数组a首元素为1,其它元素值不确定
C.数组a中所有元素的值都为0 D.数组a首元素为1,其它元素值为0
(8)有以下语句:
char s[10]={'a', 'b', '\0', '\0', 'c', 'd', 'e'};
printf("%d %d", strlen(s), strlen(&s[4]) );
输出结果为( )。
A.2 2 B.2 3
C.7 3 D.2 6
(9)若有说明:int a[][3]={1,2,3,4,5,6,7};则数组a的行数为( )。
A.2 B.3 C.4 D.不确定
(10)已知二维数组每行有m列,元素a[i][j]前共有多少个元素( )。
A.j*m+i B.i*m+j
C.i*m+j-1 D.i*m+j+1
(11)有以下语句段:
用户从键盘输入“Hello World!”,以下说明正确的是( )。
A.产生越界错误 B.输出字符串“Hello Worl”
C.输出字符串“Hello World” D.输出字符串“Hello”
(12)判断两个字符串a和b相等,应使用( )。
A.if(a ==b) B.if(a =b)
C.if(strcmp(a, b)==0) D.if(strlen(a) == strlen(b))
(13)以下程序段的输出结果为( )。
char s[ ]="\\121\142abd\n";
printf("%d \n", strlen(s) );
A.12 B.9
C.13 D.14
(14)以下程序段的输出结果为( )。
char name[3][10]={"LiNing", "ZhangShan", "Lily"};
printf("%s\n", name[1] );
A.LiNing B.ZhangShan
C.ZhangShan Lily D.Lily
(15)以下程序段的输出结果的为( )。
A.1,2,3,4,5,6,7,8,9,10 B.6,7,8,9,10,1,2,3,4,5
C.10 9 8 7 6 5 4 3 2 1 D.10,9,8,7,5,6,4,3,2,1
(16)有以下程序段:
输出结果为( )。
A.45 B.42 C.56 D.60
(17)以下能正确定义二维数组的是( )。
A.int a[][3]; B.int a[][3]={3*3};
C.int a[][3]={}; D.int a[2][3]={{1},{2,3},{0}};
(18)以下程序段的输出结果是( )。
A.6 B.7 C.8 D.9
(19)若有以下程序段:
该程序段的功能是( )。
A.对数组a进行插入排序(升序)B.对数组a进行选择排序(升序)
C.对数组a进行插入排序(降序)D.对数组a进行选择排序(降序)
(20)以下程序段给数组所有元素输入数据:
应在下划线处填入的是( )。
A.&a[i++] B.&a[i+1]
C.a+i D.&a[++i]
2.填空题
(1)执行以下程序且输入是“abc”时,输出的结果是( )。
(2)以下的程序的输出结果是( )。
(3)以下程序在数组a中查找某个数。请补全程序:
(4)以下程序将两个已按升序排列的数组合并成一个升序数组。请补全程序:
(5)以下程序在一个字符数组中查找一个指定的字符,若找到该字符,则输出该字符在数组中首次出现的位置下标;否则输出-1。请补全程序:
(6)下面程序的运行结果( )
(7)下面程序的统计从键盘输入的字符中的大写字母个数,num[0]中统计字母A的个数,num[1]中统计字母B的个数,依此类推,用#结束输入。请补全程序:
(8)阅读下面程序并写出运行结果( )。
(9)以下程序的功能是将字符串a中下标值为偶数的元素从小到大排序,其他元素保持不变。请补全程序:
(10)假设当年的年产值为100,当产值的增长率分别为6%、8%、10%、12%时,求产值分别经过多少年可实现翻番。请补全程序:
3.编程题
(1)编写程序,找出数组元素中的最小值。为了增强程序的通用性,数组元素的值由键盘输入。
(2)编写程序,求一维数组元素的平均值和与平均值之差绝对值最小的元素。
(3)编写程序,求出3~100之间的所有素数。
(4)编写程序,对输入的一行字符,统计其中有多少个单词,单词之间用空格隔开。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。