C语言数组试题_第1页
C语言数组试题_第2页
C语言数组试题_第3页
C语言数组试题_第4页
已阅读5页,还剩30页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第4章数组4.1 内容概述本章主要介绍了数值数组和字符数组的定义、初始化、 元素引用和数组数据的输入与输出,字符数组实现字符串、字符串函数的实现与调用。指针数组与数组指针定义、元素引用。利用一维数组实现如挑数、排序、求和等实际应用问题。利用二维数组实现矩阵的应用问题。利用字符数组实现字符串的各种操作。本章知识结构如图4.1 所示。定义数值数组初始化元素引用数组元素输入和输出定义数组字符数组初始化元素引用数组元素输入和输出定义指针数组初始化应用图 4.1第 4 章知识结构图考核要求:掌握一维数组、二维数组、字符数组和指针数组的定义和初始化;掌握数组元素存储地址计算; 掌握数组元素的下标法、 指针

2、法引用; 掌握字符数组与字符串的区别与联系;掌握有关字符串处理函数的使用方法;能利用一维数组、二维数组解决向量、矩阵等实际应用问题。重点难点:本章的重点是一维数组、二维数组和字符数组的定义、初始化、元素引用,字符串处理函数的使用。 本章的难点是字符串与字符数组的区别, 指针数组和数组元素的指针法引用。核心考点:数组的定义、初始化和数组元素的引用方法,一维数组、二维数组和字符数组的实际应用,字符串的处理方法。4.2典型题解析【例 4.1 】以下对一维数组a 的定义中正确的是()。A. char a(10);B. inta0.100;C. int a5;D. int k=10;int ak;解析:

3、 一维数组定义的一般形式为:类型标识符数组名 常量表达式 其中,常量表达式可以是任意类型,一般为算术表达式,其值表示数组元素的个数,即数组长度。答案: C【例 4.2 】以下对一维数组的定义中不正确的是()。A. double x5=2.0,4.0,6.0,8.0,10.0;62B. int y5=0,1,3,5,7,9;C. char ch1 ='1', '2', '3', '4', '5'D. char ch2 ='x10', 'xa', 'x8'解析:可以对一维

4、数组的全部元素或部分元素赋初值。 在对全部数组元素初始化时, 数组长度可以省略。若数组长度没有省略,则初始化列表中值的个数不能超过数组的长度。答案:B【例 4.3 】以下对二维数组的定义中正确的是()。A int a4=1, 2,3, 4, 5,6;B. int a3;C int a3= 1,2,3, 4, 5, 6;D. int a 1,2,3,4,5,6;解析: 定义二维数组时,若按一维格式初始化,则第一维的长度可以省略,此时,系统可根据初始化列表中值的个数及第二维的长度计算出省略的第一维长度, 但无论如何, 第二维的长度不能省略。没有初始化时,每一维的长度都不能省略。答案: C【例 4.

5、4 】假定一个int型变量占用两个字节,若有定义:intx10=0,2,4;则数组x 在内存中所占字节数是()。A.3B.6C.10D.20解析: 一维数组在内存中所占的字节数为:数组长度×sizeof(元素类型 ) 。答案: D【例 4.5 】以下程序的输出结果是()。main() int a44=1,3,5,2,4,6,3,5,7; printf("%d%d%d%dn",a03,a12,a21,a30);A. 0650B. 1470C. 5430D.输出值不定解析: 定义的数组a 为 4 行 4 列,且前三行三列元素已初始化,根据C 语法规定,未初始化的元素值

6、为0。答案: A【例 4.6 】以下程序的输出结果是()。main() int m3=1,4,7,2,5,8,3,6,9;int i,j,k=2;for(i=0;i<3;i+) printf("%d ",mki);A.456B.258C.369D.789解析: 根据初始化列表中值的个数和第二维的长度,可求得第一维长度为3。第一行的元素值依次为1,4, 7;第二行元素值依次为2, 5, 8;第三行元素值依次为3, 6, 9。循环执行三次,依次输出行标为2 的三个元素,即第三行的3 个元素。答案: C【例 4.7 】以下程序的输出结果是()。main() int b33=

7、0,1,2,0,1,2,0,1,2,i,j,t=0;for(i=0;i<3;i+)for(j=i;j<=i;j+)t=t+bibjj;printf("%dn",t);63A.3B.4C.1D.9解析:程序中, 引用的 b 数组元素的行下标为循环变量i ,列下标为数组元素bjj。外层循环共进行3 次,对于每次外循环,内层循环只执行一次(即j=i ),所以变量t的值为元素b0b00、 b1b11、 b2b22的和。由于数组元素b00、b11、b22的值分别为0、 1、 2,所以 t 的值为: 0+0+1+2=3。答案: A【例 4.8 】若有定义:int a24;,

8、则引用数组元素正确的是()。A. a03B. a04C. a22D. a22+1解析: 引用二维数组元素时,行下标范围为0行数 -1 ,列下标范围为0列数 -1 。答案: A【例 4.9 】若有定义:int aa8;,则不能代表数组元素aa1 地址的是() 。A. &aa0+1B. &aa1C. &aa0+D. aa+1解析: &aa1、&aa0+1和 aa+1 都是数组元素aa1 的地址。 由于 &aa0 是地址值常量,不能进行自加、自减运算,所以选项C 不能代表aa1 地址。答案: C【例 4.10 】下列程序执行后的输出结果是() 。mai

9、n() int a33, *p,i;p=&a00; for(i=0;i<9;i+) pi=i+1; printf("%d n",a12);A.3B.6C.9D.随机数解析: 二维数组的物理存储结构为一维,即按行序顺序存储在连续存储空间中。本题中, p 为指向数组元素的指针变量,初始时,p 指向 a00。通过指针p 实现对对二维数组元素按行依次赋值。a12即 p5 ,其值 6。答案: B【例 4.11 】下列程序的输出结果是()。main() char a10=9,8,7,6,5,4,3,2,1,0,*p=a+5; printf("%d",*

10、-p);A. 运行出错B. a4的地址C. 5D. 3解析: 初始时, p 指向 a5 。由于单目运算符的结合方向为右结合,所以,*-p等价于 * ( -p ),即先执行 -p , p 指向 a4 ,再输出 a4 的值( 5)。答案: C【例 4.12 】若有如下定义,则b 的值是()。int a10=1,2,3,4,5,6,7,8,9,10,*p=&a3,b=p5;A.5B.6C.8D.9解析: p 指向 a3 ,即 p=a+3; b=p5 ,即 b=*(p+5) 。因此, b=*(a+8)=a8=9。答案: D【例 4.13 】若二维数组y 有 m列,则排在yij前的元素个数为()

11、A.j*m+iB.i*m+jC.i*m+j-1D.i*m+j+1解析:C 语言中的二维数组按行存储。行标为 i 的元素前共有i 行元素,元素个数为i*m ,64每行列标为j 的元素前共有j 个元素。因此,yij前的元素个数为i*m+j 。答案: B【例 4.14 】若有定义:char a10,*b=a;,则不能给数组a 输入字符串” This is a book”的语句是()。A. gets(a)B. scanf("%s",a)C. gets(&a0);D. gets(b) ;解析: gets为字符串输入函数,调用该函数时需给出字符串的存储地址,以回车作为字符串输入

12、的结束,并将回车符转换成为0 。而 scanf 函数则以回车、 空格或跳格作为串输入结束,因此scanf 不能输入有空格的字符串。答案: B【例 4.15 】以下程序执行后的输出结果是()。A.2B.3C.4D.5#include "string.h"main( ) char *p10= "abc","aabdfg","dcdbe","abbd","cd" printf("%dn",strlen(p4);解析:定义了一个含有10 个元素的字符指针数组p,并

13、对前 5 个元素初始化, 其中 p4指向字符串 "cd" ,其串长为2。答案: A【例 4.16 】若定义一个名为s 且初值为 "123" 的字符数组, 则下列定义错误的是()。A char s= 1' , '2' , '3','0 'Bchar s="123"C char s="123n"Dchar s4='1', '2' , '3'解析:字符数组中所存字符中有0 时, 字符数组才能作为字符串使用。选项 A 是

14、用字符常量对字符数组初始化,且最后一个元素的值为字符串结束标记(0 ),所以数组s 中存放的就是字符串"123" ;选项 D 是用字符常量对部分元素初始化,根据 C 语言的规定,系统为第四个元素赋初值为空值,即'0',所以数组s 中存放的也是字符串" 123" 。选项 B是直接使用字符串"123" 对字符数组初始化;选项C 也是使用字符串初始化,但是字符串不是 "123" ,而是 "123 n" ,数组长度为5。答案: C【例 4.17 】下列程序的功能是输入 N个实数,然后依次

15、输出前 l 个实数和、前 2 个实数和、前 N 个实数和。填写程序中缺少的语句。#define N 10main() float fN,x=0.0;int i; for(i=0;i<N;i+)scanf("%f",&fi);for(i=1;i<=N;i+);printf("sum of NO %2d-%fn",i,x);解析: 分析程序可知, 第一个循环实现数据的输入,第二个循环实现求和并输出,程序中缺少的是计算前i 个实数和并存入变量x 的语句。由于每次循环的x 值都是在前一次循环的基础上作累加,即前i 个实数和( x)等于前i-1

16、个实数和( x)加上第i 个实数 fi-1,65因此,处应填写:x x fi-1;。答案: x=x fil ;或 x fi l;【例 4.18 】下面程序的功能是检查一个N× N矩阵是否对称 (即判断是否所有的aij等于 aji)。请填空。#define N 4main() int aNN=1,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4; int i,j,found=0;for(j=0;j<N-1; j+)for(;i<N; i+)if(aij!=aji);break;if(found) printf("No");else printf

17、("Yes");解析: 设置判断标志found ,初始值为0。对于主对角线以上每个元素,分别与对称元素比较,若不相等,则将found 置为 1 并结束比较。循环结束后,根据found 的值确定是否对称。答案: i=j+1 found=1【例 4.19 】编写程序,从一整型数组a 的第一个元素开始,每三个元素求和并将和值存入到另一数组中(最后一组可以不足3 个元素),最后输出所求的所有和值且每行输出5 个值。解析: 用于存储和值的数组设为b,所有元素都初始化为0。从数组a 的第一个元素开始,进行累加操作bj+=ai,累加过程中,数组a 的下标每自加3 次,数组b 的下标自加

18、1 次。重复此操作,直到数组a 的所有元素累加完为止。输出时,每输出5 个元素输出一次换行符 "n" 。#define N 20#define M N/3+1main() int aN,i,j,bM=0; for(i=0;i<N;i+) scanf("%d",&ai);for(i=0,j=0;i<N;i+) bj+=ai; if(i+1)%3=0) j+;if(N%3=0) j-;for(i=0;i<=j;i+) printf("%d ",bi);if(i+1)%5=0) printf("n&quo

19、t;);【例 4.20 】已知数组b 中存放 N 个人的年龄,编写程序,统计各年龄段的人数并存入数66组 d。要求把 0 至 9 岁年龄段的人数放在d0 中,把 10 至 19 岁年龄段的人数放在d1 中,把 20 至 29 岁年龄段的人数放在 d2 中,其余依此类推, 把 100 岁 ( 含 100) 以上年龄的人数都放在 d10 中。解析: 首先将数组 d 的所有元素都初始化为 0,然后从数组 b 的第一个元素开始判断,如果数组 b 的元素值大于或等于 100,则数组元素 d10 加 1,否则,数组元素 d 数组 b 的元素值 /10 加 1。重复此操作,直到数组 b 的最后一个元素为止。

20、#include <stdio.h>#define M 11#define N 20main() int bN=32,45,15,12,86,49,97,3,44,52,17,95,63,14,76,88,54,65,99,102; int dM,i;for(i=0;i<M;i+) di=0;for(i=0;i<N;i+)if(bi>=100) d10+;else dbi/10+;for(i=0;i<M-1;i+)printf("%4d-%4d :%4dn", i*10, i*10+9,di);printf(" over 100

21、 :%4dn", d10);【例 4.21 】编写程序,将一维数组x 中大于平均值的数据移至数组的前部,小于等于平均值的数据移至数组的后部。解析: 先计算一维数组x 的平均值, 然后将大于平均值的数据存入数组y 的前部, 小于等于平均值的数据存入数组y 的后部,最后将数组y 复制到数组x。#include <stdio.h>#define N 10main() int i,j;float av,yN,xN; for(i=0;i<N;i+) scanf("%f",x+i); av=0;for(i=0;i<N;i+) av=av+xi; av/

22、=N;for(i=j=0;i<N;i+)if(xi>av) yj+=xi;xi=-1;for(i=0;i<N;i+)if(xi!=-1) yj+=xi;for(i=0;i<N;i+) xi=yi;printf("%5.2f ",xi);【例 5.22 】已知一维整型数组a 中的数已按由小到大的顺序排列,编写程序,删去一维数组中所有相同的数,使之只剩一个。解析: 从数组 a 的第二个元素开始,与前面保留的最后一个元素作比较,若不相等,则67前移。重复此操作,直到数组a 的最后一个元素为止。#include <stdio.h>#define

23、N 20main() int aN= 2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10; int i,j;printf("The original data :n");for(i=0;i<N;i+)printf("%3d",ai);for(j=1,i=1;i<N;i+)if(aj-1!=ai) aj+=ai;printf("nnThe data after deleted :n");for(i=0;i<j;i+)printf("%3d",ai);【例 4.23

24、 】编写程序,把从键盘输入的一个数字字符串转换为一个整数并输出。例如,若输入字符串“- 1234”, 则函数把它转换为整数值-1234 。要求:不得调用C 语言提供的将字符串转换为整数的函数。解析: 设存放数字字符串的数组为s,存放对应整型数的变量为n(初始值为0)。若字符串的第一个字符为 - ,则从第二个字符开始,否则从第一字符开始,利用公式 n=n*10+si- 0进行转换,直到 0 为止。#include <stdio.h>#include <string.h>main() char s10;long n=0;int i=0;printf("Enter

25、a string:n") ;gets(s);if(s0='-') i+;while(si) n=n*10+si-'0'i+;if(s0='-') n=-n;printf("%ldn",n);【例 4.24 】编写程序,把N× N 矩阵 A 加上矩阵A 的转置,存放在矩阵B 中。解析: 可先将 A 的转置存入B,再将 A 的元素 aij累加到 B 的元素 bij。也可直接利用转置性质,bij=aij+aji。#define N 3#include<stdio.h>main() int aNN=1,

26、2,3,4,5,6,7,8,9,bNN; int i,j;for(i=0;i<N;i+)for(j=0;j<N;j+)68bij=aij+aji;for(i=0;i<N;i+) for(j=0;j<N;j+)printf("%4d",bij);printf("n");【例 4.25 】编写程序,将二维数组aNM中每个元素向右移一列,最右一列换到最左一列,移动后的数组存到另一个二维数组b 中,原数组保持不变。例如:456645a23b1213解析:将数组 a 的最后一列元素存入数组b 的第 1 列中,再依次将数组a 的第 i 列存入

27、数组 b 的第 i+1列 (0=<i<=M-2)。#define N 3#define M 3main() int aNM=4,5,6,1,2,3,6,7,8,bNM,i,j; for(i=0;i<N;i+)bi0=aiM-1; for(i=0;i<M-1;i+) for(j=0;j<N;j+) bji+1=aji;for(i=0;i<N;i+) for(j=0;j<M;j+) printf("%d ",bij);printf("n");4.3自测试题1. 单项选择题( 1)以下定义语句中,错误的是 ( ) 。A

28、 int a=1,2;B char *a3;C char s10="test"D int n=5,an;( 2)以下能正确定义二维数组的是( )。A int a3;B int a3=2*3;C int a3=;D int a23=1,2,3,4;( 3)以下程序的输出结果是( )。A159B147C357 D369main() int i,x33=1,2,3,4,5,6,7,8,9; for(i=0;i<3;i+) printf("%d ",xi2-i);69( 4)有以下程序 , 执行后输出结果是 ( ) main() int x8=8,7,6,

29、5,0,*s; s=x+3;printf("%d ",s2);A.随机值B.0C.5D.6( 5)若有定义: int a3=1,2,3,4,5,6,7,8; ,则 a 数组的行数为 ()。A 3B 2C无确定值D1( 6)下列描述中不正确的是()。A. 字符型数组中可以存放字符串B. 可以对字符型串进行整体输入、输出C. 可以对整型数组进行整体输入、输出D. 不能在赋值语句中通过赋值运算符"=" 对字符型数组进行整体赋值( 7)运行下列程序的输出结果是()。main() int a=1,2,3,4,5,i,*p=a+2; printf("%d&

30、quot;, p1-p-1);A. 出错,因下标不能为负值B. 2C. 1D. 3( 8)以下 printf 语句的输出结果是 ( )。 printf("%dn", strlen("school");A. 7B. 6C. 存在语法错误D. 不定值( 9)若有语句: char s110, s210="books",则能将字符串books 赋给数组s1 的语句是()。A. s1="books"B. strcpy(s1, s2);C. s1=s2;D. strcpy(s2, s1);( 10)以下语句或语句组中,能正确进

31、行字符串赋值的是()。A. char*sp;*sp="right!"B. char s10;s="right!"C. chars10;*s="right!"D. char*sp="right!"2. 程序分析题(阅读程序,写出运行结果)( 1)main() int x6,a=0,b,c=14; do xa=c%2;a+;c=c/2;while(c>=1); for(b=a-1;b>=0;b-)printf("%d ", xb); printf("n");( 2)m

32、ain() int i,n6=0;70for(i=1;i<=4;i+) ni=ni-1*2+1; printf("%d ",ni);( 3)#include <stdio.h>#include <string.h>main() char c='a',t="you and me" int n,k,j;n=strlen(t);for(k=0;k<n;k+) if(tk=c) j=k;break; else j=-1;printf("%d", j);( 4)#include <std

33、io.h>main() char str120="China0USA", str220="Beijing" int i, k, num;i=strlen(str1); k=strlen(str2);num=i<k?i:k;printf("%dn", num);( 5)#include <stdio.h>main() static int a=1,3,5,7;int *p3=a+2,a+1,a;int *q=p;printf("%dn",*(p0+1)+*(q+2);3.程序填空题( 1)下面

34、程序的功能是将字符数组a 中下标值为偶数的元素从小到大排列, 其它元素不变。请填空。#include <stdio.h>#include <string.h>main() char a="clanguage",t;int i,j,k; k=strlen(a);for(i=0;i<=k-2;i+=2)71for(j=i+2;j<k;)if()t=ai;ai=aj;aj=t;puts(a);printf("n");( 2)下列程序的功能是在字符串s 中找出与字符串t 相同的子串的个数。请填空。#include <st

35、dio.h>main() char s="fabcdabgabt",t="ab",*p,*q,*r; int n; n=0;q=s;while(*q) p=q;r=t; while(*r)if() r+; p+; else break;if() n+;q+;printf("nThe result is: n=%dn",n);( 3)下面程序的功能是把给定的字符按其矩阵格式读入数组str中,并输出行号与列号之和为 3 的数组元素。请填空。main( ) char str43='A','b','

36、;C','d','E','f','G','h','I','j','K','l' int x,y,z;for(x=0;x<4;x+)for (y=0;y+) z=x+y;if()printf("%cn",strxy);( 4)下面程序的功能是输入一个 3× 3 的实数矩阵, 求两条对角线元素中各自的最大值。请填空。main() float s33,max1,max2,x; int i,j;for(i=0;i&l

37、t;3;i+)for(j=0;j<3;j+) scanf("%f",&x);sij=x;max1=;for(i=1;i<3;i+)if(max1<sii) max1=sii;72max2=;if(max2<s11) max2=s11;if(max2<s20) max2=s20;printf("max1=%fn",max1);printf("max2=%fn",max2);( 5)下面程序的功能是利用数组计算并存储Fibonacci序列的前40 项,每行输出4 项。请填空main() long in

38、t a40=1,1;int i;for(i=2;i<40;i+)ai=;for(i=0;i<40;i+) if() printf("n");printf("%10ld",ai);4. 程序设计题( 1)给定一维整型数组,输入数据并求第一个值为奇数元素之前的元素和。( 2)给定一维整型数组,输入数据并对前一半元素升序排序,对后一半元素降序排序。( 3)输入字符串并统计各数字字符出现的次数。( 4)给定 N× N矩阵,输入矩阵元素并互换主次对角线元素值。( 5)给定二维数组aMN ,输入数据并将元素按照行序存入到一维数组b 中。4.4实

39、验题目( 1)数组 a 中存放 N 个非 0 整数,编写程序, 将数组 a 中的所有正数存放在数组的前面,负数存放在数组的后面。( 2)将数组 a 中的 N 个元素后移 m位,移出的 m位顺序存放在数组的前 m位。( 3)有 5 名学生,每名学生有语文、数学、物理和外语四门课的考试成绩,编程统计各学生的总分和平均分,以及所有学生各科的总分和平均分。( 4)将整型 N× N 矩阵主对角线元素进行升序排序。( 5)将 4× 4 阶矩阵的 4 个最小值按升序存放在主对角线上。( 6)求 N× N 矩阵每行最大值的和。( 7)由键盘输入一个字符串, 按照 ASCII 码由

40、小到大的顺序排序, 要求删除所输入的重复字符。如输入"ad2f3adjfeainzzzzv",则应输出 "23adefijnvz"。( 8)从键盘输入一个字符串, 去掉所有非十六进制字符后转换成十进制数输出。 要求如输入 "g2sh8iBof" ,输出值为: 10431。4.5思考题( 1)定义二维数组时是否可以省略第一维长度?省略时系统如何计算长度?( 2)定义一维数组与引用一维数组元素时, “ ”内数据的含义是什么?73( 3)若有定义: inta34,(*q)4=a;,则如何利用指针变量q 引用数组a 的元素?( 4)若有如下定

41、义和语句: int a34,*p3;p0=&a00;p1=&a10;p2=&a20;则如何利用指针数组名p 引用数组a 的元素?( 5)试说明下列两种定义方式的区别。char a38="gain","much","strong"char *a3="gain","much","strong"4.6习题解答1.单项选择题 ( 下列每小题有4 个备选答案 , 将其中一个正确答案填到其后的括号内)( 1)设有定义: int a10,*p=a;,对数组元素的正确

42、引用是()。 ap pa *(p+2) p+2解答: a 和 p 是地址,不可以用作数组元素的下标,所以错误,选项为p 之后两个元素的地址即等价于&a2 ,选项为元素a2 。答案: ( 2)若有如下定义,则不能表示数组a 元素的表达式是()。int a10=1,2,3,4,5,6,7,8,9,10,*p=a; *p a10 *a ap-a解答:因为 p 初值为 a,所以选项为元素a0 ,选项也为元素a0 ,选项为a0 ,选项元素下标超出下标界限(09)。答案: ( 3)若有如下定义,则值为3 的表达式是()。int a10=1,2,3,4,5,6,7,8,9,10,*p=a; p+=2

43、,*(p+) p+=2,*+p p+=3,*p+ p+=2,+*p解答: 四个表达式都是逗号表达式,表达式的值为第二个式子的值,选项的p 从指向 a0 改变为指向a2,因此表达式值为3,选项的 p 指向 a2,计算 *+p 时指针指向a3,表达式值为4,选项的p 指向 a3 ,表达式值为4,选项的p 指向 a2 ,计算 +*p 后a2 元素值变为4。答案: ( 4)设有定义: char a10="ABCD",*p=a;,则 *(p+4) 的值是()。 "ABCD" D 0不确定解答:数组所赋初值为串, 数组 a4 及其后的六个元素值都为'0

44、9;,*(p+4)等价于 *(a+4)即 a4 。答案 :( 5)将 p 定义为指向含4 个元素的一维数组的指针变量,正确语句为()。 int (*p)4; int *p4; int p4; int *p4;解答: 定义 p 为指向含4 个整型元素的一维数组的指针变量。定义了一个有四个元素的指针数组,数组名为p, 数组中的每一个元素都是指向整型变量的指针变量。定义了一个有四个元素的整型数组,数组名为p。定义了一个有四个元素的二级指针数组,数组名为 p, 数组中的每一个元素都是指向整型指针变量的指针变量。答案: ( 6)若有定义int a34;,则输入其3 行 2 列元素的正确语句为()。74

45、scanf("%d",a3,2); scanf("%d",*(*(a+2)+1) scanf("%d",*(a+2)+1); scanf("%d",*(a2+1);解答: 输入 3 行 2 列元素的值,应使用其地址,即&a21, 或 *(a+2)+1,或 a2+1 ,所以是正确的。答案: ( 7)下面对指针变量的叙述,正确的是()。 指针变量可以加上一个指针变量。 可以把一个整形数赋给指针变量。 指针变量的值可以赋给指针变量。 指针变量不可以有空值,即该指针变量必须指向某一变量。解答:指针变量加上一个指针变

46、量没有意义,所以是错误的。不能把一个整型数直接赋给指针变量,因为类型不匹配,所以是错误的。指针变量可以有空值(NULL) ,即不指向任何变量,所以是错误的。指针变量的值可以赋给指针变量,同类型可以直接赋值,不同类型可通过强制类型转换,所以是正确的。答案: ( 8)设有定义: int a10,*p=a+6,*q=a;,则下列运算哪种是错误的()。 p-q p+3 p+q p>q解答:指向同一个数组的两个指针变量可以相减,其值是两个指针之间的元素个数。指向同一个数组的两个指针变量也可以比较,指向前面元素的指针“小于” 指向后面元素的指针。指向数组元素的指针变量可以加减一个整型数c,加 c 后

47、指向其后面的第c 个元素,减c 后指向其前面的第c 个元素。但指向同一个数组的两个指针变量进行加法运算没有意义。答案: ( 9)C 语言中,数组名代表()。 数组全部元素的值 数组首地址 数组第一个元素的值 数组元素的个数解答: C语言规定,数组名代表数组的首地址。答案: ( 10)若有如下定义,则值为4 的表达式是()。int a12=1,2,3,4,5,6,7,8,9,10,11,12;char c=a ,d,g; ag-c a4 a d - c a d -c解答: 值为 4 的数组元素的下标为3,所以是错误的,g-c 的值不确定, d - c的值为 1,只有 d -c 的值为 3,所以是

48、正确的。答案: ( 11)设有定义:char s12="string"则 printf("%d",strlen(s);的输出结果是 ()。671112解答: 函数strlen()的功能是返回字符串中第一个0 之前的字符个数,所以输出结果为 6。答案: ( 12)语句 printf("%d",strlen("absno121");的输出结果是()。111098解答: 字符串中的“ n ”、“ 1 ”和“”都是转义字符,都表示一个字符,所以字符串中的字符个数为9。答案: 75( 13)设有定义: int t32;,能正

49、确表示t 数组元素地址的表达式是()。 &t32 t3 t1 *t2解答: C 语言中,数组元素的下标从0 开始,所以和是错误的,表示数组元素a20,表示第二行的首地址,所以是正确的。答案: ( 14)语句 strcat(strcpy(str1,str2),str3);的功能是()。 将字符串str1复制到字符串str2中后再连接到字符串str3之后。 将字符串str1连接到字符串str2中后再复制到字符串str3之后。 将字符串 str2 复制到字符串str1后再将字符串str3 连接到字符串str1之后。 将字符串str2连接到字符串str1后再将字符串str1复制到字符串str3中。解答: 先执行strcpy(str1,str2),即将字符串str2复制到字符串str1中,再执行strcat(str1,str3),即将字符串str3连接到字符串str1之后。答案: ( 15)若有如下定义,则正确的叙述为()。char x="abcdefg"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论