练习17
考试规则:点击你认为正确的选项
1.以下fun函数的功能是将形参s所指字符串内容颠倒过来
void fun( char*s )
{
int i,jk;
for( i=0, j=strlen(s) ______; i<j; i++,j-- )
{
k=s[i]; s[i]=s[j]; s[]=k;
}
}
在横线处应填入的内容是( )。
A.+1
回答错误 ✕
B.-1
回答正确 √
试题解析
strlen(s)函数的功能是计算s指向字符串的实际长度( 不包含结束标志),由于数组的起始下标为0,所以字符串最后一个字符的下标为strlen(s)-1,所以填入的内容为-1,答案选B。
C.+0
回答错误 ✕
D.,k=0
回答错误 ✕
点击答题丨点击选项查看对错丨展开动画
2.若有语句: int a[3][4], (*p)[4]; p=a;,则以下选项中叙述错误的是( )。
A.系统将开辟一个名为p的二维数组,p[0][0]中的值即为a[0][0]中的值
回答正确 √
试题解析
(*p)[4]定义了一个数组指针。p可以指向类似于ary0[4]的数组,题设中,p不是一个二维数组,只是可以指向这类二维数组,因此选项A错误。p+1代表了第一行第一个元素的地址,p=a指向数组a的首地址,则B、C选项正确,同理可知选项D也正确。故答案为A选项。
B.p+1代表a[1][0]的地址
回答错误 ✕
C.p中将存放 a数组的首地址
回答错误 ✕
D.p+2代表 a数组最后- -行的首地址
回答错误 ✕
点击答题丨点击选项查看对错丨展开动画
3.有以下程序:
#include
#define PT 3.5;
#define S(x) PT*x*x;
main()
{
inta=1, b=2;
printf(%4.1f\n",S(a+ b));
}
程序运行后的输出结果是( )。
A.7.5
回答错误 ✕
B.31.5
回答错误 ✕
C.程序有错无输出结果
回答正确 √
试题解析
宏定义不是C语句,末尾不需要有分号。所以语句printf("%4.1f\n",S(a + b));展开后为print("%4.1f\n",3.5; *a+b*a+b; );所以程序会出现语法错误。选项C正确
D.14.0
回答错误 ✕
点击答题丨点击选项查看对错丨展开动画
4.以下结构体类型说明和变量定义中正确的是()。
A.struct REC; {int n; char c;}; REC t1,t2;
回答错误 ✕
B.typedef struct {int n; char C;} REC; REC t1,t2;
回答正确 √
试题解析
选项A定义变量时需要加上struct,选项C结构体定义不正确,选项D中REC已经为结构体变量,不能用它去定义其他变量,所以答案选B。
C.typedef struct REC; {int n=0; char c='A;}t1,t2;
回答错误 ✕
D.struct {int n; char c;} REC; REC t1,t2;
回答错误 ✕
点击答题丨点击选项查看对错丨展开动画