1、7以下选项中,不能正确赋值的是【 】。A) char s110; s1=China B) char s2 =C,hina;C) char s310= D) char s310=【答案】A【解析】因为s1 是数组名,代表数组的首地址,是常量,常量不能被赋值。8若有定义:char x =abcdefg char y =bcdefg则正确的叙述为【 】。A) 数组x和数组y等价 B) 数组x和数组y的长度相同 C) 数组x的长度大于数组y的长度 D) 数组x的长度小于数组y的长度【解析】因为x数组初始化是用字符串,x数组的长度为8,y数组初始化是用7个字符,y数组的长度为7,所以,数组x的长度大于数
2、组y的长度。9函数调用:strcat(strcpy(str1,str2),str3)的功能是【 】。A) 将串str1复制到串str2中后再连接到串str3之后B) 将串str1连接到串str2之后再复制到串str3之后C) 将串str2复制到串str1中后再将串str3连接到串str1之后D) 将串str2连接到串str1之后再将串str1复制到串str3中10下列程序的输出结果是_。#include stdio.hstring.hvoid main( ) char st20=hello printf(%dn,strlen(st);A) 6 B) 7 C) 11 D) 12二、填空题1若有以
3、下定义:double m20; 则m数组元素的最小下标是_,最大下标是_。【答案】0和192在C语言中,二维数组元素在内存中的存放顺序是按_ 存放的。【答案】行3若有以下定义:int a35=0,1,2,3,4,3,2,1,0,0; 则初始化后a12的值是_,a21的值是_ 。【答案】1和04若有以下定义:char s100,d100;int j=0,i=0; 且s 中已赋字符串,请填空以实现字符串复制。(注意:不得使用逗号表达式)while (si) dj= _ ;j+;dj=0;【答案】si+5下列程序的输出结果是_。 int k,a2; k=a1*10;,k);A) 0 B) 1 C)
4、10 D)不定值【解析】定义a数组时没有赋初值,初值不定,因此,a1*10是个不定值。6下列程序的输出结果是_。 int i,a10; for (i=9; i=0; i-) ai=10-i;%d%d%dn,a2,a5,a8);A) 258 B) 741 C) 852 D) 3697下面程序的功能是:从键盘上输入若干个学生的成绩,当输入负数时表示输入结束,计算每位学生的平均成绩,并输出低于平均分的学生成绩。请填空。 float x1000,sum=0,ave,a; int n=0,i;Enter mark:n); scanf(%f,&a); while (a=0 & n=100) sum+=【1
5、】_; xn=【2】_; n+; ave=【3】_;Output:ave=%fn,ave); for (i=0; in; i+) if (xi=j) printf(Yes! else printf(No!【答案】【1】s 【2】ij 或 i=j 【3】!= 9下面程序的功能是求二维数组周边元素之和。二维数组中的数据如下所示,输出结果:sum=631 2 3 4 52 3 4 5 63 4 5 6 74 5 6 7 8#define M 4#define N 5 int aMN,i,j,sum=0;M; for (j=0; j=0 & chiai) t=aj;aj=ai;ai=t; for(i=
6、0;istri+1) t=stri; stri=stri+1; stri+1=t;,stri);运行情况如下:eifjsacropacefijoprs3已知a数组中的数据已按升序排序,要求从键盘输入一个数后将其插入a数组中,并使该数组中的数据仍然有序。思路:这是一个“插入法排序”问题。若a数组中的数已经按由小到大排好序,现在要将输入的数n按顺序插入到a数组中。从a0开始,将a数组中的每个数与n比较大小,当找到第一个比n大的数时,该位置i就是n要插入的位置,然后将ai开始的所有数依次后移一个位置,最后将n插入到ai中。方法1算法如图5-1所示。 int a11=2,4,5,6,8,10,23,3
7、6,47,68, n,i,j;array a:%5dnInsert data:n); if (na9) a10=n; else for (i=0; if (ain) for (j=9; j=i; j-) aj+1=aj; ai=n; break;Now,array a:11;运行结果: 2 4 5 6 8 10 23 36 47 68Insert data:7 2 4 5 6 7 8 10 23 36 47 68方法2算法如图5-2所示。 int a11=2,4,5,6,8,10,23,36,47,68; int t1,t2,n,i,j;narray a:a9) a10=n; else if
8、(ai t1=ai; for (j=i+1; t2=aj; aj=t1; t1=t2;4分别求N阶方阵的两条对角线上元素之和。N阶方阵就是N行N列的矩阵,矩阵左对角线上的元素是aii(i=0N-1),右对角线上的元素是aij(其中:i=0N-1,j=N-1-i)。由于j的值取决于i,因此只要一个for循环即可。例如三阶方阵左对角线元素之和是:1+3+6=10,右对角线上元素之和是3+3+2=8。 int a33=1,2,3,1,3,5,2,4,6,sum1,sum2,i; sum1=sum2=0; sum1=sum1+aii; sum2=sum2+ai3-1-i;sum1=%d sum2=%d
9、n,sum1,sum2);sum1=10 sum2=8 5打印出以下的杨辉三角形(要求打印出6行)。11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1算法:如图5-3所示 #define N 7 int aNN,i,j; aii=1; ai1=1; for (i=3; for (j=2;i; aij=ai-1j-1+ai-1j; for (j=1;6输入一行英文字母,统计其中有多少个单词,单词之间用空格分隔。设:变量word作为标志变量,初值为0;当读到非空格时,word置1,读到空格时,word置0;变量num作为单词记数变量,读到第一个非空格时,num加1。因此,当读到非空格字符时首先判断是否是新单词开始,如果word为0即为新单词开始,单词记数变量num加1,单词标志变量word置1,接下来若还是非空格字符,只要word为1就不是新单词开始,接着判断下一字符,当读到空格时,将word置0。如图5-4所示。 int i,num=0,word=0; char str80; gets(str); stri! if (stri= ) word=0; else if (word=0) word=1; num+;,num);Chinese Materials Research Society4
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1