c语言的问题若有以下调用语句,则
39
若有以下调用语句,则不正确的fun函数的首部是????
main(){。。。
int a[50],n;。。。
fun(n, &a[9]);。。。
a
void fun(int m,int x[])
b
void fun(int s, int h[41])
c
void fun(int p, int *s)
d
void fun(int n, int a)
解答:答案d是错误的,因为调用函数中的实在参数为一个是整型变量n,一个是指针变量a[9]的地址,即为指针变量。 因为函数的实在参数与形式参数应该类型相同,个数相同。而答案d中的两个参数均为整型变量,所以d是错误答案。答案a中...全部
39
若有以下调用语句,则不正确的fun函数的首部是????
main(){。。。
int a[50],n;。。。
fun(n, &a[9]);。。。
a
void fun(int m,int x[])
b
void fun(int s, int h[41])
c
void fun(int p, int *s)
d
void fun(int n, int a)
解答:答案d是错误的,因为调用函数中的实在参数为一个是整型变量n,一个是指针变量a[9]的地址,即为指针变量。
因为函数的实在参数与形式参数应该类型相同,个数相同。而答案d中的两个参数均为整型变量,所以d是错误答案。答案a中的m为整型变量,x是一个数组类型的变量,而数组名代表数组的首地址,所以与形式参数类型相同。
答案b与答案a原因相同。而答案c中的变量p为整型变量,变量s为指针类型的变量。
40
语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是c为什么?其他3项哪里错了?
a\bre\'hi\'y\\\bou\n
a\bre\'hi'y\bou
re'hi'you
arbe'hi'y\bou(说明:'\b'是退格符)
解答:printf()函数由两部分组成,格式控制部分和输出表列,其中由双引号括起来的部分为格式控制部分,而格式控制部分有两种功能,一种是格式转换,该部分由%开始,另一部分属于原样输出的,而该print()函数中只包括原样输出的部分。
应该输出a\bre\'hi\'y\\\bou\n,但是在C语言中以'\'开始的字符为转义字符,所谓转义字符就是不是原来字符的含义,而转换成另一种含义了,比如说'\b'是退格符,就是光标由原来的位置向前移动一个位置。
'\''输出的是单引号,'\\'输出的是一个反斜线,'\n'为换行。因此该输出语句首先输出一个字符a,然后遇到'\b'向前移动一个位置,光标移动到字符a的下面,即下一次输出的从字符a的位置开始输出,然后输出re,字符r把字符a给覆盖掉了,接着输出单引号,然后输出字符hi,然后再输出单引号,然后输出字符y,然后输出一个反斜线,接着有遇到'\b'光标向前移动一个位置,即下一次输出的字符把反斜线给覆盖掉了,因此字符o把反斜线给覆盖掉了,接着输出字符u,然后换行。
因此输出数据为re'hi'you。
希望我的解释,你能明白,如果有什么不明白的地方,我会尽量给你答复的。
。收起