单选题
1、第299题 (1.0分) 题号:664 以下正确的函数定义形式是()。
A
double fun(int x,int y)
B
double fun(int x;int y)
C
double fun(int x,int y);
D
double fun(int x,y);
答案解析
正确答案:A
解析:
这道题考查的是 C 语言中**函数定义**的语法规范。我们需要区分“函数定义”和“函数声明”,并掌握参数列表的正确写法。
### 详细解析:
1. **区分函数定义与函数声明**:
* **函数定义**:包含函数头(返回类型、函数名、参数列表)和函数体(花括号 `{}` 及其中的代码)。在选择题中,如果没有给出函数体,通常考察的是**函数头**部分的语法正确性,或者默认后续接有函数体。
* **函数声明**:告诉编译器函数的存在,以分号 `;` 结尾,不包含函数体。
* 题目问的是“函数定义形式”,虽然选项都没有给出函数体 `{...}`,但我们可以根据语法规则排除明显错误的选项。通常这类题目中,不带分号的头部被视为定义的开始,带分号的被视为声明。但在某些语境下,如果必须选出一个“最符合定义语法结构(即参数列表合法且非声明语句)”的选项,我们需要看参数的写法。
2. **分析各个选项**:
* **A. `double fun(int x,int y)`**
* **返回类型**:`double`,合法。
* **函数名**:`fun`,合法。
* **参数列表**:`(int x, int y)`。每个参数都独立指定了类型和名称,中间用逗号 `,` 分隔。这是**完全正确**的参数列表写法。
* **结尾**:没有分号,符合函数定义头的特征(后面应紧跟 `{`)。
* **结论**:**正确**。
* **B. `double fun(int x;int y)`**
* **错误点**:参数之间应该用**逗号** `,` 分隔,而不是分号 `;`。
* **结论**:语法错误。
* **C. `double fun(int x,int y);`**
* **分析**:这个语法本身是合法的,但它是一个**函数声明**(Function Declaration),因为它以分号 `;` 结尾,且没有函数体。
* **题目要求**:题目明确问的是“函数**定义**形式”。虽然在实际考试中,有时对“定义”和“声明”的界限考察不严,但对比选项 A 和 C,A 是定义的头部,C 是完整的声明语句。如果有函数体,A 的形式才是定义的起始部分。更重要的是,在很多教材和考试标准中,带分号的被视为声明,不带分号的被视为定义的一部分。因此 A 比 C 更符合“定义”的语境。
* **结论**:这是函数声明,不是函数定义。
* **D. `double fun(int x,y);`**
* **错误点 1**:参数 `y` 缺少类型说明符。在 C 语言中,每个参数都必须单独声明类型,不能写成 `int x, y` 这样的简写形式(这在变量定义中可以,但在函数参数列表中不行,必须写成 `int x, int y`)。
* **错误点 2**:以分号结尾,这是声明而非定义。
* **结论**:语法错误。
### 总结:
* **B** 错在参数间用了分号。
* **D** 错在第二个参数没写类型,且它是声明。
* **C** 是函数声明(因为有分号)。
* **A** 是函数定义的头部,参数格式正确(类型+变量名,逗号分隔),且没有表示结束的分号,符合函数定义的语法结构。
因此,正确答案是 **A**。
题目纠错
c语言选择判断题库
相关题目
单选题
1、〖第20题〗96) 若有下列定义,则对a数组元素地址的正确引用是()。 int a[5],*p=a;
单选题
1、〖第19题〗13) 执行下列语句后变量x和y的值是()。y=10;x=y++;
单选题
1、〖第18题〗21) 以下不符合C语言语法的赋值语句是()。
单选题
1、〖第17题〗89) 以下标识符中,不能作为合法的C用户定义标识符的是()。
单选题
1、〖第16题〗202) 设有如下定义: struct sk {int a; float b;} data,*p;
单选题
1、〖第15题〗33) 若有以下定义:char s='\092'; 则该语句()。
单选题
1、〖第14题〗211)fgets(str,n,fp)函数从文件中读入一个字符串,以下正确的叙述是()。
单选题
1、〖第13题〗205) 变量p为指针变量,若p=&a,下列说法不正确的是()。
单选题
1、〖第12题〗22) 以下不符合C语言语法的赋值语句是()。
单选题
1、〖第11题〗61)设j和k都是int类型,则for循环语句 for(j=0,k=-1;k=1;j++,k++) printf(”****\n”);()。
