在编译时将所用函数的代码嵌入到主调函数中,这种函数称为()。
第1题:
一个函数返回值的类型是由()决定的。
A.return语句中表达式的类型
B.定义函数时指定的函数类型
C.在调用函数时临时指定
D.调用函数的主调函数的类型
第2题:
在C语言中,函数返回值的类型最终取决于( )。
A.函数定义时在函数首部所说明的函数类型
B.return语句中表达式值的类型
C.调用函数时主调函数所传递的实参类型
D.函数定义时形参的类型
第3题:
下列说法正确的是( )。
A.内联函数在运行时将该函数的目标代码插入每个调用该函数的地方
B.内联函数在编译时将该函数的目标代码插入每个调用该函数的地方
C.类的内联函数必须在类体内定义
D.类的内联函数必须在类体外通过加关键字inline定义
第4题:
A、return语句中的表达式类型所决定
B、调用函数时的主调函数类型所决定
C、调用函数时系统临时决定
D、在定义该函数时所指定的函数类型所决定
第5题:
阅读以下两个说明、c函数和问题,将解答写入答题纸的对应栏内。
【说明1】
函数main()的功能旨在对输入的一个正整数n,计算12+22+32+…+n2,但是对该函数进行测试后没有得到期望的结果。
【c函数】

1.输入5测试上述main函数时,显示结果如下所示。
input an integer:5
result:-582598909
2.将行号为7的代码修改为:prinff(”n=%d\nresuh:%d\n”,n,sum);并再次
输入5测试main函数,显示结果如下所示。
input an interger:5
n=2293632
result:-582598909
阅读以上两个说明、c函数和问题,将解答写入答题纸的对应栏内。
【问题1】
请给出上述main函数中需要修改的代码行号,并给出修改后的整行代码。

【说明2】
函数test_f2{}编译时系统报告有错,修改后得到函数12_B{}。对函数12_B{}
进行编译时顺利通过,在某些C系统中执行时却由于发生异常而不能正确结束。
【c函数2】

【问题2】(1)请指出函数test_f2中不能通过编译的表达式;(2)请指出可能导致函数f2_B运行异常的表达式。
以上的答案仅供参考并没有先后顺序。另外对sum进行初始化的“sum=O;”也可以加在第3行第4行以及第5行的适当的位置。
问题(2):(1)str++ (2) str:‘a’
以上的答案仅供参考,并没有先后顺序。另外对sum进行初始化的“sum=O;”也可以加在第3行,第4行以及第5行的适当的位置。
问题(2):(1)str++ (2) str:‘a’ 解析:问题(1)解析:程序中的错误可以分为语法错误和语义错误,其中语义错误又可以分为静态语义错误和动态语义错误。语法错误和静态语义错误可以在编译的时候发现,而动态的语义错误只有在程序运行的结果中才能表现出来。C函数1中的main函数通过编译但是运行结果不对,虽然输出的是sum的值,但是在for循环中sum的值的得到与k以及n的值是相关的,因此我们需要从n、k、sum的定义和初始化查起。首先来看k,在定义的时候没有被初始化,但是在for循环进行使用的时候被初始化为1,后面通过k++进行改变的,这一部分是正确的。接下来看n,n在定义的时候也没有被初始化,n的值是通过scanf(“%d”,n)取得的,由第二次测试的显示结果可以看出,n的值并不是我们的输入值5,很显然n的值设定不对,回头仔细检查scanf函数的调用才发现n的前面缺少取地址运算符“&”,作为一名程序员都应该知道scanf中的变量使用的是地址,所以正确的写法为“scanI。(“%d”,&m);”;再来看sum,sum的值主要是通过for循环中的语句“sum+=k*k”来改变的。“sum+=k*k”实际上等同于“sum=sum+k*k”,可是我们知道sum在定义的时候并没有初始化,那么在我们第一次进入for循环的时候sum的值是不确定的,在这种情况下执行语句“sum+=k*k”得到的值自然也就无法预料了,所以我们需要在sum使用之前对其进行初始化“sum=0”。另外,在程序中还有一处就是第5行,可以看到在句末有一个分号,这样就等于for循环语句的循环体为空,“sum+=k * k”语句并没有被包含到for循环语句中,只是在循环结束后执行一次,最后输出地结果sum是等于n * n,不符合题目要求的结果(12+22+32+……+n2),正确的做法就是删除第5行末位的分号。问题(2)的解析:函数test~12()编译时系统报错,检查函数能够发现“char str[ ]=“test string”;”定义了字符数组str,并进行了初始化,因此str就是数组名,也是数组在内存中的首地址,*str则表示的是str[O],通过“* str=‘a’”改变str[O]的值是对的,但是“str++”就不对了,在c语言中str是数组名是地址常量,是不能修改的,所以系统在编译的时候会报告错误。如果我们将str定义为一个char类型的指针的话,则可以通过str++来修改str的值,使它指向不同字符对象,但是在函数f2_B()中定义“char *str=‘test string’;”的时候,直接对指针str用常量进行了初始化,使得str为一个指针常量,这样即使我们可以通过str++取得字符串中的任何一个字符,但是却不能够通过“*str=‘a’”修改*str的值,所以在运行的时候就会发生异常不能够正常结束。
第6题:
在C 语言中函数返回值的类型是由( )决定的。
A)调用该函数时系统临时
B)return 语句中的表达式类型
C)定义该函数时所指定的函数类型
D)调用该函数时的主调函数类型
第7题:
被调用函数调用结束后,返回到()。
第8题:
关于函数声明,以下不正确的说法是()。
第9题:
GNU的C编译器支持内联函数,因此可以将内联函数直接编译到内核当中。()
第10题:
在函数调用过程中,如果函数A调用函数B,函数B又调用函数A,则这种函数调用被称为()
第11题:
对
错
第12题:
数组名作函数的参数,调用时将实参数组复制给形参数组
数组名作函数的参数,主调函数和被调函数共用一段存储单元
数组名作参数时,形参定义的数组长度不能省略
数组名作参数,不能改变主调函数中的数据
第13题:
对于一个类的定义,下列叙述中错误的是
A.如果没有定义复制构造函数,那么编译器将生成一个复制构造函数
B.如果没有定义默认的构造函数,那么编译器将一定生成一个默认的构造函数
C.如果没有定义构造函数,那么编译器将生成一个默认的构造函数和一个复制构造函数
D.如果已经定义了构造函数和复制构造函数,那么编译器不会生成任何构造函数
第14题:
对于一个类定义,下列叙述中错误的是( )。
A.如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数
B.如果没有定义缺省的构造函数,编译器一定将生成一个缺省的构造函数
C.如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数
D.如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数
第15题:
模板函数的真正代码是在( )时候产生。
A.源程序中声明函数时
B.源程序中定义函数时
C.源程序中调用函数时
D.运行执行函数时
第16题:
Astdio.h文件中包含标准输入输出函数的函数说明,通过引用此文件以便能正确使用prinff、scanf等函数
B将stdio.h中标准输入输出函数链接到编译生成的可执行文件中,以便能正确运行
C将stdio.h中标准输入输出函数的源程序插入到引用处,以便进行编译链接
D将stdio.h中标准输入输出函数的二进制代码插入到引用处,以便进行编译链接
答案:A
第17题:
下列说法正确的是
A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方
B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方
C.类的内联函数必须在类体内定义
D.类的内联函数必须在类体外通过加关键字inline定义
第18题:
对于一个类定义,下列叙述中错误的是( )。
A.如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数
B.如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数
C.如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数
D.如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数
第19题:
在C语言中,函数返回值的类型最终取决于()
第20题:
函数模板在编译时不生成可执行代码。
第21题:
在EXCEL中,引用函数时,函数的参数又引用函数,称为“函数的嵌套”。
第22题:
第23题:
stdio.h文件中包含标准输入输出函数的函数说明,通过引用此文件以便能正确使用prinff、scanf等函数
将stdio.h中标准输入输出函数链接到编译生成的可执行文件中,以便能正确运行
将stdio.h中标准输入输出函数的源程序插入到引用处,以便进行编译链接
将stdio.h中标准输入输出函数的二进制代码插入到引用处,以便进行编译链接