⑴ c语言的问题若有以下调用语句,则不正确的fun函数的首部是
若有以下调用语句,则不正确的fun函数的首部是?
main(){
int a[50],n;
fun(n, &a[9]);
}
解答:答案d是错误的,因为调用函数中的实在参数为一个是整型变量n,一个是指针变量a[9]的地址,即为指针变量。因为函数的实在参数与形式参数应该类型相同,个数相同。而答案d中的两个参数均为整型变量,所以d是错误答案。答案a中的m为整型变量,x是一个数组类型的变量,而数组名代表数组的首地址,所以与形式参数类型相同。答案b与答案a原因相同。而答案c中的变量p为整型变量,变量s为指针类型的变量。
语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是什么?其他3项哪里错了?
a\bre\'hi\'y\\\bou\n
a\bre\'hi'y\bou
ar'e'hi'you
b'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。