一、练习题
1.选择题
A.char s[5]={"hello"} B.char s[5]={'h','e','l','l','o'};
C.char*s="hello" D.char*s;scanf("%s",s);
(2)有如下程序段,叙述正确的是()。
A.s指向一个字符串常量,不能修改其中的字符
B.sizeof(s)和sizeof(p)相等
C.s和p完全相同
D.*p==s[0]成立
(3)定义char s[10];则下面表达式中不表示s[1]的地址的是()。
A.s++ B.s+1 C.&s[1] D.&s[0]+1
(4)有如下说明:
则数值不为9的表达式是()。
A.*p+8 B.*(p+8)C.&a[9]-p D.p+8
(5)有以下程序:
程序运行后的输出结果是()。
A.16 B.10 C.8 D.6
(6)有以下程序:
程序运行后的输出结果是()。
A.10 B.11 C.14 D.15
(7)有以下程序:
下列叙述中正确的是()。
A.在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3
B.由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3
C.由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3
D.由于p和q数组中都没有字符串结束符,故长度都不能确定
(8)有以下程序:
执行后的输出结果是()。
A.10 B.9 C.7 D.8
(9)以下程序的输出结果为()。
A.ABCDEFGHIJKL B.ABCD
C.ABCDEFGHIJKLMNOP D.AEIM
2.填空题
(1)以下程序段的运行结果为()。
(2)以下函数sstrcat()的功能是实现字符串的连接,即将t所指字符串复制到s所指字符串的尾部。例如:s所指字符串为abcd,t所指字符串为efgh,函数调用后s所指字符串为abcdefgh。请填空。
(3)以下程序判断一个字符串是否为回文,回文即顺读和倒读一样的字符串,如level。请填空。
(4)函数f1,f2,f3,f4分别用于计算两整形数x和y的和、差、积、商。函数execute()是完成这些计算的通用函数。请填空。
(5)请解释函数liw_strncpy()的功能:①
3.程序改错题
(1)下列给定程序中,函数inverse()的作用是:反转由s指向的字符串。请改正程序中的错误,使它能得到正确结果。
(2)下列给定程序中,函数fun()的功能是:在字符串str中找出ASCⅡ码值最小的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。请改正程序中的错误,使它能得到正确结果。
4.编程题
(1)利用指针编写程序,求字符串的长度(不用strlen函数)。
(2)编写函数,求包含n个元素的整数数组的最大值、最小值及平均值。已知函数原型声明如下:
(3)编写函数,接受整数数组输入,动态分配内存,复制该数组,返回该内存首地址。
(4)编写函数,以指针为参数,从N行N列的矩阵,找出各行中的最大的数,再求这N个最大值中的最小的那个数作为函数值返回。
(5)编写函数接受一已排序的整数数组和一整数值,将该值插入到正确的位置。请思考:如何利用此函数设计一个选择排序函数。
(6)编写函数,接受一个字符串和一个字符,如果此字符出现在字符串中,就将串中的该字符删除,要求删除该字符后,后续的字符向前移,以填充该空位。
二、测试题
1.选择题
(1)有如下程序段:
其中0≤i≤9,则对a数组元素的引用不正确的是()。
A.a[p-a] B.*(&a[i]) C.p[i] D.*(*(a+i))
(2)有如下程序段:
执行后,a的值为()。
A.11 B.12 C.10 D.编译出错
(3)以下程序的输出结果是()。
A.7 B.3 C.10 D.11
(4)以下程序段给数组元素输入数据:
则下划线处应填入的是()。
A.a+(i++) B.a+i C.&a[i+1] D.&a[++i]
(5)以下程序段的输出结果是()。
A.1 B.2 C.3 D.4
(6)以下程序段的输出结果是()。
A.99 B.字符‘c’ C.字符‘c’的地址 D.0
(7)以下程序段的输出结果是()。
A.Morning B.Afternoon C.Evening D.Night
(8)以下程序段的输出结果是()。
A.2 4 B.2 2 C.4 4 D.4 6
(9)有如下定义:(www.xing528.com)
则能正确引用c数组元素的是()。
A.1+p B.*(p+3)C.*(p+1)+3 D.*(*p+2)
(10)有如下定义:
则不能正确表示a数组元素的是()。
A.*(*(ptr+3)+2)B.(*(p+1))[1]
C.p[0][0] D.ptr[2][2]
(11)已知函数fun的调用语句:
则正确的函数声明为()。
A.void fun(int m,int a[ ]); B.void fun(int n,int a[15]);
C.void fun(int,int*); D.void fun(int,int);
(12)若有下面的程序段:
则下列叙述正确的是()。
A.s和p完全相同
B.数组s中的内容和指针变量p中的内容相等
C.s数组长度和p所指向的字符串长度相等
D.*p与s[0]相等
(13)有以下函数定义:
函数的返回值是()。
A.无确切的值 B.形参p自身的地址
C.形参中存放的地址值 D.一个临时存储单元地址
(14)若要从键盘读入含有空格的字符串,应使用的函数是()。
A.getc()B.gets()C.getchar()D.scanf()
(15)若有语句int *point,a=4;和 point=&a;下面均代表地址的一组选项是()。
A.a, point, *&a B.&*a, &a, *point
C.*&point, *point, &a D.&a, &*point, point
(16)以下函数的输出结果是()。
A.计算str1和str2所指字符串的长度差
B.将str2所指字符串复制到str1所指的字符串中
C.比较字符串str1和字符串str2的大小
D.将str2所指字符串连接到str1所指的字符串后
(17)不合法的main函数参数的表示形式是()。
A.main(int a, char *c[ ]) B.main(int argc, char **argv)
C.main(int argc,char*argv) D.main(int argc,char*argv[ ])
(18)以下函数的功能是()。
A.求字符串的长度
B.比较两个字符串的大小
C.将字符串str1复制到字符串str2中
D.将字符串str1连接到字符串str2后
(19)以下选项中正确的语句是()。
A.char s[ ];s="book" B.char *s;s={"book"};
C.char s[10];s="book" D.char *s;s="book";
(20)以下定义:
叙述正确的是()。
A.ptr是指向一维数组的指针变量
B.ptr是指向int类型数据的指针变量
C.ptr是指向函数的指针,该函数返回一个int类型的数据
D.ptr是一个函数名,该函数返回值类型为int
(21)有如下程序:
该程序的输出结果是()。
A.1 B.-1 C.0 D.NULL无定义
(22)若有以下定义和语句:
则以下选项中错误的是()。
A.*q = 0 B.w = p C.*p = a D.*p = *w
(23)有如下程序:
程序运行时的输出结果为()。
A.a,B,a,B B.A,b,A,b C.B,a,B,a D.b,B,A,b
(24)设有定义:char p[]={‘1’,‘2’,‘3’},*q=p; ,以下不能计算出一个char型数据所占字节数的表达式是()。
A.sizeof(p)B.sizeof(char)
C.sizeof(*q)D.sizeof(p[0])
(25)有如下程序:
程序运行时的输出结果为()。
A.2 B.3 C.4 D.5
2.阅读程序写出运行结果
(1)下列程序的运行结果为()。
(2)下列程序的运行结果为()。
(3)下列程序的运行结果为()。
(4)下列程序的运行结果为()。
(5)下列程序的运行结果为()。
3.以下程序的功能是将已知字符串s2拷贝到s1中。请填空。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。