首页 理论教育 C语言程序设计实践教程:思考练习与测试解答

C语言程序设计实践教程:思考练习与测试解答

时间:2023-11-01 理论教育 版权反馈
【摘要】:A.2B.3C.4D.不确定给出以下定义:则正确的叙述为____。A.0650B.1470C.5430D.输出值不确定2.填空题若定义inta[10]={1,2,3};则a[3]的值是。实行学分制,学生的平均绩点是衡量学生学习的重要依据。编制程序测试字符串str2是否整体包含在字符串str1中,若包含,则指明str2在str1中的起始位置。

C语言程序设计实践教程:思考练习与测试解答

一、思考题

1.阅读下列程序,分析输出结果,若将s[j]=j/2改为s[j]=j%2,则结果是什么?

2.阅读下列程序,分析输出结果。

3.若输入20和8,则下列程序的输出结果是什么?

二、练习题

1.选择题

(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};

(2)假设int型变量占4个字节的存储单元,若有定义:

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]

(5)以下能对二维数组x正确进行初始化的语句是____。

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)编写程序,对输入的一行字符,统计其中有多少个单词,单词之间用空格隔开。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈