《C语言程序设计》第17章在线测试
1、从下列选项中选择不会引起二义性的宏定义是:A、#defineC(x)x*xB、#defineC(x)(x)*(x)C、#defineC(x)(x*x)D、#defin...
1、从下列选项中选择不会引起二义性的宏定义是:
A、#define C(x) x*x B、#define C(x) (x)*(x)
C、#define C(x) (x*x) D、#define C(x) ((x)*(x))
2、以下程序运行后,main(){char *s="abcde"; s+=2; printf("%d\n",s); },输出结果是:
A、cde B、字符c的ASCII码值
C、字符c的地址 D、值不确定
3、声明一个函数为外部函数,应该在声明函数的函数类型的前面加( )。
A、auto B、static
C、extern D、register
4、在主函数中定义的变量( )。
A、只在主函数中有效 B、可以在整个文件中有效
C、可以在所有函数中有效 D、可以在被调用的函数中有效
5、如果全局的外部变量和函数体内定义的局部变量重名,则( )。
A、出错 B、局部变量优先
C、外部变量优先 D、全局的外部变量优先
第二题、多项选择题(每题2分,5道题共10分)
1、以下叙述中,正确的叙述是:
A、预处理命令须以#开始
B、在程序中凡以#开始的语句都是预处理命令
C、预处理行不是c的可编译语句
D、C程序在执行过程中对预处理命令进行处理
2、下列对宏定义的描述中,正确的描述是:
A、宏不存在类型问题,宏名无类型,参数也无类型
B、宏替换不占用运行时间
C、宏替换是先求出实参表达式的值,然后带入形参运算求值
D、宏替换只不过是字符替代而已
3、下列描述中,错误的描述是:
A、凡是C源程序中行首以#标示的控制行都是预处理指令
B、预处理是指完成宏替换和文件包含指定的文件调用
C、预处理指令只能位于程序首部
D、预处理就是完成c编译程序对C源程序第一遍扫描,为编译的词法分析和语法分析做准备
4、以下叙述中,不正确的叙述是( )。
A、函数的形参都属于全局变量
B、全局变量的作用域不比局部变量的作用域范围大
C、静态(static)类别变量的生存期贯穿整个程序的运行期间
D、未在定义语句中赋初值的auto变量和static变量的初值都是随机值
5、设char s[10];int i=5;,下列表达式中,不正确的表达式是( )。
A、s[i+6]
B、*(s+i)
C、*(&s+i)
D、*((s++)+i
第三题、判断题(每题1分,5道题共5分)
1、允许在不同的函数中使用相同的变量名。
正确 错误
2、设int x=5,*p=&x;则&(*p)与p是同一回事。
正确 错误
3、设有定义语句“struct {int a;float b;char c;}abc;”,则对结构体成员a的引用可以是abc->a。
正确 错误
4、若形参是简单变量形式,则对应的实参不能是数组名。
正确 错误
5、C函数可以递归调用。
正确 错误
哥哥 姐姐们 也去看看这个把http://zhidao.baidu.com/question/288642855.html 展开
A、#define C(x) x*x B、#define C(x) (x)*(x)
C、#define C(x) (x*x) D、#define C(x) ((x)*(x))
2、以下程序运行后,main(){char *s="abcde"; s+=2; printf("%d\n",s); },输出结果是:
A、cde B、字符c的ASCII码值
C、字符c的地址 D、值不确定
3、声明一个函数为外部函数,应该在声明函数的函数类型的前面加( )。
A、auto B、static
C、extern D、register
4、在主函数中定义的变量( )。
A、只在主函数中有效 B、可以在整个文件中有效
C、可以在所有函数中有效 D、可以在被调用的函数中有效
5、如果全局的外部变量和函数体内定义的局部变量重名,则( )。
A、出错 B、局部变量优先
C、外部变量优先 D、全局的外部变量优先
第二题、多项选择题(每题2分,5道题共10分)
1、以下叙述中,正确的叙述是:
A、预处理命令须以#开始
B、在程序中凡以#开始的语句都是预处理命令
C、预处理行不是c的可编译语句
D、C程序在执行过程中对预处理命令进行处理
2、下列对宏定义的描述中,正确的描述是:
A、宏不存在类型问题,宏名无类型,参数也无类型
B、宏替换不占用运行时间
C、宏替换是先求出实参表达式的值,然后带入形参运算求值
D、宏替换只不过是字符替代而已
3、下列描述中,错误的描述是:
A、凡是C源程序中行首以#标示的控制行都是预处理指令
B、预处理是指完成宏替换和文件包含指定的文件调用
C、预处理指令只能位于程序首部
D、预处理就是完成c编译程序对C源程序第一遍扫描,为编译的词法分析和语法分析做准备
4、以下叙述中,不正确的叙述是( )。
A、函数的形参都属于全局变量
B、全局变量的作用域不比局部变量的作用域范围大
C、静态(static)类别变量的生存期贯穿整个程序的运行期间
D、未在定义语句中赋初值的auto变量和static变量的初值都是随机值
5、设char s[10];int i=5;,下列表达式中,不正确的表达式是( )。
A、s[i+6]
B、*(s+i)
C、*(&s+i)
D、*((s++)+i
第三题、判断题(每题1分,5道题共5分)
1、允许在不同的函数中使用相同的变量名。
正确 错误
2、设int x=5,*p=&x;则&(*p)与p是同一回事。
正确 错误
3、设有定义语句“struct {int a;float b;char c;}abc;”,则对结构体成员a的引用可以是abc->a。
正确 错误
4、若形参是简单变量形式,则对应的实参不能是数组名。
正确 错误
5、C函数可以递归调用。
正确 错误
哥哥 姐姐们 也去看看这个把http://zhidao.baidu.com/question/288642855.html 展开
展开全部
1、D 因为#define C(x) ((x)*(x))宏中需要使用完备的括弧才不会有引用错误
2、D 认真区分char a[]和char *p的区别,a是数组的首地址,也是指针,但是p仅仅是指向一个字符串的首地址的指针,虽然也是指针,但是你并不知道p指针具体在什么代码段的什么位置,从而p+=2的位置你也无法确定。
3、C extern本来就是外部的意思嘛
4、A 仅仅在主函数中有效,这是对的。
5、B 局部变量优先,给你举个例子:
int a=1;
int main()
{
int a=2;
cout<<a;
return 0;
}
就是类似这样的例子,你在main函数外定义了一个全局变量a,在main内部又定义了一个变量名也是a的局部变量,那么你在main中用cout输出的时候就是输出了局部变量a的值,要输出全局变量a的值时则要使用::a,实际上是局部变量将全局变量屏蔽了,可以看做局部变量的优先于全局变量
/**********************************************************************************/
第二题1、ABC
2、ABD
3、CD
4、AB
5 、AD
/**********************************************************************************/
第三题
正确
错误,可改为int *p=&x
错误,不是指向结构体的指针,不可以用->
正确,因为数组名那可是一个指针,是数组的首地址
正确 当然可以递归了,网上多的是那种递归的小程序
如果有什么不清楚,咱们可以后续交流哦@—@
2、D 认真区分char a[]和char *p的区别,a是数组的首地址,也是指针,但是p仅仅是指向一个字符串的首地址的指针,虽然也是指针,但是你并不知道p指针具体在什么代码段的什么位置,从而p+=2的位置你也无法确定。
3、C extern本来就是外部的意思嘛
4、A 仅仅在主函数中有效,这是对的。
5、B 局部变量优先,给你举个例子:
int a=1;
int main()
{
int a=2;
cout<<a;
return 0;
}
就是类似这样的例子,你在main函数外定义了一个全局变量a,在main内部又定义了一个变量名也是a的局部变量,那么你在main中用cout输出的时候就是输出了局部变量a的值,要输出全局变量a的值时则要使用::a,实际上是局部变量将全局变量屏蔽了,可以看做局部变量的优先于全局变量
/**********************************************************************************/
第二题1、ABC
2、ABD
3、CD
4、AB
5 、AD
/**********************************************************************************/
第三题
正确
错误,可改为int *p=&x
错误,不是指向结构体的指针,不可以用->
正确,因为数组名那可是一个指针,是数组的首地址
正确 当然可以递归了,网上多的是那种递归的小程序
如果有什么不清楚,咱们可以后续交流哦@—@
展开全部
第一题1-5 : DACAB
第二题1AC 2BD 3AC 4AB 5 ACD
第三天T F F F T
好多题目都模棱两可啊,这什么题目啊,编译器不一样,还有好多例外情况
第二题1AC 2BD 3AC 4AB 5 ACD
第三天T F F F T
好多题目都模棱两可啊,这什么题目啊,编译器不一样,还有好多例外情况
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是鐧惧害鍦板浘
本数据来源于百度地图,最终结果以百度地图最新数据为准。
追问
你这个干什么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、D
因为#define
C(x)
((x)*(x))宏中需要使用完备的括弧才不会有引用错误
2、D
认真区分char
a[]和char
*p的区别,a是数组的首地址,也是指针,但是p仅仅是指向一个字符串的首地址的指针,虽然也是指针,但是你并不知道p指针具体在什么代码段的什么位置,从而p+=2的位置你也无法确定。
3、C
extern本来就是外部的意思嘛
4、A
仅仅在主函数中有效,这是对的。
5、B
局部变量优先,给你举个例子:
int
a=1;
int
main()
{
int
a=2;
cout<<a;
return
0;
}
就是类似这样的例子,你在main函数外定义了一个全局变量a,在main内部又定义了一个变量名也是a的局部变量,那么你在main中用cout输出的时候就是输出了局部变量a的值,要输出全局变量a的值时则要使用::a,实际上是局部变量将全局变量屏蔽了,可以看做局部变量的优先于全局变量
/**********************************************************************************/
第二题1、ABC
2、ABD
3、CD
4、AB
5
、AD
/**********************************************************************************/
第三题
正确
错误,可改为int
*p=&x
错误,不是指向结构体的指针,不可以用->
正确,因为数组名那可是一个指针,是数组的首地址
正确
当然可以递归了,网上多的是那种递归的小程序
如果有什么不清楚,咱们可以后续交流哦@—@
因为#define
C(x)
((x)*(x))宏中需要使用完备的括弧才不会有引用错误
2、D
认真区分char
a[]和char
*p的区别,a是数组的首地址,也是指针,但是p仅仅是指向一个字符串的首地址的指针,虽然也是指针,但是你并不知道p指针具体在什么代码段的什么位置,从而p+=2的位置你也无法确定。
3、C
extern本来就是外部的意思嘛
4、A
仅仅在主函数中有效,这是对的。
5、B
局部变量优先,给你举个例子:
int
a=1;
int
main()
{
int
a=2;
cout<<a;
return
0;
}
就是类似这样的例子,你在main函数外定义了一个全局变量a,在main内部又定义了一个变量名也是a的局部变量,那么你在main中用cout输出的时候就是输出了局部变量a的值,要输出全局变量a的值时则要使用::a,实际上是局部变量将全局变量屏蔽了,可以看做局部变量的优先于全局变量
/**********************************************************************************/
第二题1、ABC
2、ABD
3、CD
4、AB
5
、AD
/**********************************************************************************/
第三题
正确
错误,可改为int
*p=&x
错误,不是指向结构体的指针,不可以用->
正确,因为数组名那可是一个指针,是数组的首地址
正确
当然可以递归了,网上多的是那种递归的小程序
如果有什么不清楚,咱们可以后续交流哦@—@
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我只知道第三题选择C
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询