6.函数调用 strcat(strcpy(strl,str2),str3) 的功能是( )
①将字符串strl复制到字符串str2中后再连接到字符串str3之后
②将字符串strl连接到字符串str2中后再复制到字符率str3之后
③将字符串str2复制到字符串strl中后再将字符串str3连接到字符串strl之后
④将字符串str2连接到字符率strl之后再将字符串strl复制到字符串str3中
解 函数调用strcat(s1,s2)是将s2字符串复制连接到s1字符串之后,使s1字符串变得更长。函数调用strcpy(s1,s2)是将s2字符串复制到s1,使s1字符串的内容与s2字符串的内容相同。函数调用strcat(strcpy(strl,str2) ,str3) 是先执行strcpy(strl,str2),然后再执行strcat(strl,str3),所以其功能是将字符串str2复制到字符串strl中,然后再将字符串str3复制连接到字符串strl之后。正确的选择是③。
7.设有如下定义,则正确的叙述为( )
char x[]={ abcdefg };
char y[]={ a , b , c , d , e , f , g }
;
①数组x和数组y等价②数组x和数组y长度相同
③数组X的长度大于数组y的长度④数组X的长度小于数组y的长度
解 不指定数组长度的字符数组定义,其所需要的字节数可由初始化中给出的值的个数确定。字符数组可以用字符串初始化,也可用字符逐个给字符数组的元素初始化。但用字符初始化时,尽管给出了字符串中的全部字符,还是不会自动有字符率结束字符。但字符串初始化自动会含有字符串的结束标记符,字符串初始化所需要的字节个数会比用同样多的字符初始化多1个字节。所以只有③才是正确的。
4.2 填充题
1.根据变量定义 static int b[5], a[][3]={1,2,3,4,5,6}; ,b[4]=_____,a[1][2]
解 系统规定,静态变量定义时,若末初始化,系统自动给定二进制代码全0的值。所以态数组b的元素全为0,当然包括b[4]也为几静态数组a是二维数组,每行有三个元素,在初始化中结出了六个初值,所以数组a有2行。由于数组的元素按行顺序存储,并按行顺序初始化。前三个值是第一行,后三个值是第二行。a[1][2]是第二行的第三列元素,也是 a的最后一个元素,所以其值是6.
2.设有定义语句 static int a[3][4]={{1},{2},{3}}; 则a[l][l]值为_,a[2][1]的值为_.
解 给二维数组初始化时,可按行给出初值,并且每行可以只给前面部分的元素给出初值。系统规定,对哪些未给出初值的部分元素,系统自动置二进制代码全0的值。由于定义语句只给a[0][0]给定初值l、a[l][0]给定初值2、a[2][0]给定初值3.这样,其它元素都为0值。所以,a[1][1]= 0,a[2][1]= 0.
3.若在程序中用到 putchar( ) 函数时,应在程序开头写上包含命令_____,若在程序中用到 strlen( ) 函数时,应在程序开头写上包含命令______.
解 putchar()是系统提供的头文件stdio.h中定义的宏,所以程序要使用它,必须写上包含命令:#include.函数strlen()是系统提供的字符串处理函数之一,字符串处理函数的函数原型说明和它们用到的有关常量、数据结构等,在系统提供的头文件tring.h中定义,所以使用该函数的程序应在程序开头写上包含命令并include.
4.下面程序的功能是输出数组s中最大元素的下标,请填空。
main()
{int k, p ;
int s[]={1,-9,7,2,-10,3};
for(p=0, k=p;p 6; p++)
if(s[p] s[k])____________
printf( %d\n ,k);
}
解 为要寻找数组中的最大元素的下标,需先预设1个临时最大元素的下标,并顺序逐一考察数组的元素,当发现当前元素比临时最大元素更大时,就用当前元素的下标更新临时最大元素下标。直至考察了数组的全部元素后,这临时最大元素下标就是数组的最大元素下标。通常预设的最大元素下标是数组的首元素下标,考察是从首元素开始顺序向后继元素考察。程序中,存储临时最大元素下标的变量是k,变量p控制顺序考察的循环控制变量。当发现当前元素s[p]比临时最大元素s[k]更大时,应该用p更新k.所以在空框处应填入代码 k=p; 。