c/c++语言错题记录
c语言错题记录
判断题:设变量
n
的类型为int
,当n
的值为-10时,条件表达式((n>0) ? 2.9 : 1 )
的值为整数1。 (×)给定条件表达式:
1
(n > 0) ? 2.9 : 1
我们来看一下这两个分支表达式的类型:
2.9
是一个double
类型的浮点数。1
是一个int
类型的整数。
根据 C 和 C++ 的类型提升规则,当条件表达式的两个分支表达式类型不同时,结果的类型将是能够容纳这两个类型的最小公共类型。在这种情况下,
int
和double
的最小公共类型是double
。因此,整个条件表达式的结果类型是
double
,而不是int
。当
n = -10
时,条件n > 0
为假,所以条件表达式的结果是1
,但这个1
是double
类型的1.0
,而不是int
类型的1
。所以,条件表达式
((n > 0) ? 2.9 : 1)
的值是1.0
(double
类型),而不是整数1
(int
类型)。因此,原文中说条件表达式的值为整数1
是错误的。判断题:printf函数输出数据时会根据格式控制符自动进行数据类型转换。(×)
printf
函数不会自动进行数据类型转换。它依赖于格式控制符来正确地解释传入的参数类型。如果格式控制符和传入的参数类型不匹配,可能会导致未定义行为或错误输出。例如:
1
2int num = 10;
printf("%f", num); // 错误:%f 期望一个 double 类型在这个例子中,
%f
期望一个float
类型的参数,而num
是一个int
,这会导致未定义行为。程序员必须确保格式控制符与传入的参数类型匹配。判断题:在 C 程序中, 常量
10.0
是单精度浮点类型的数据。(×)
在 C 语言中,常量10.0
是双精度浮点类型的数据 (double
)。如果你想表示单精度浮点数 (float
),需要在数字后加上f
或F
,例如10.0f
。判断题: 设a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a > b)&&(n=c>d)后n的值为2。(√)
&&
和||
一样会短路。判断题: 运行包含以下代码段的程序将可能进入死循环。 (×)
1
2int i = 1;
while(i>0){ i++; printf("%d ",i); }因为当i超过int范围后会变成负数。
选择题:
以下不能正确定义二维数组的选项是(D)
A.
int a[2][2]={{1},{2}};
B.
int a[][2]={1,2,3,4};
C.
int a[2][2]={{1},2,3};` D.`int a[2][]={{1,2},{3,4}};
解析:在定义数组时,需要指定每一维度的大小,除了最外层维度。选项 D 中第二个维度的大小未指定,因此是错误的。
判断题:一次只能引用单个的数组元素,而不能一次引用整个数组。(√)
根据声明
int (*p)[10]
,p
是一个(B)。A.数组
B.指针
C.函数
D.数组的元素
解析:根据声明
int (*p)[10]
,p
是一个指向包含 10 个整数的数组的指针。知识点:指针是一个变量。
知识点:在C程序中,函数可以嵌套调用,但不可以嵌套定义。
选择题:
以下说法正确的是(D)A.一个C语言源文件(.c文件)必须包含main函数
B.一个C语言源文件(.c文件)可以包含两个以上main函数
C.C语言头文件(.h文件)和源文件(.c文件)都可以进行编译
D.在一个可以正确执行的C语言程序中,一个C语言函数的声明(原型)可以出现任意多次
解析:
A:一个 C 语言源文件(.c
文件)不一定必须包含main
函数。main
函数是程序的入口点,但它只需要出现在整个程序中一次。一个项目可以由多个
.c
文件组成,其中只有一个.c
文件需要定义main
函数,其余文件可以定义其他函数、变量等。
C:.h文件不能单独进行编译。
D:在一个可以正确执行的C语言程序中,一个C语言函数的声明(原型)可以出现任意多次正确
选择题:
已知函数定义如下
1
2
3
4int max(int a,int b)
{
return a>b?a:b;
}下面函数声明不正确的是(C)
A.int max(int a,int b);
B.int max(int x,int y);
C.max(int a,b);
D.int max(int,int );
解析:
B参数名x
和y
与定义中的a
和b
不同,但这不影响函数声明的正确性。函数声明只需要保证参数的类型和顺序与定义一致,参数名可以不同。
C这是不正确的,因为函数声明中必须明确指定返回值类型。这里缺少返回值类型int
。选择题:
下面说法不正确的是(C)。
A.函数是一个完成特定工作的独立程序模块,包含自定义函数和库函数。
B.函数定义的一般形式包含函数首部和函数体。
C.自定义函数被调用时都要先声明,跟主函数与被调函数的位置无关。
D.函数首部由函数类型、函数名和形式参数表组成,且首部后面不能加分号。
解析:
A函数是程序中的独立模块,用于完成特定任务。可以是程序员自己定义的(自定义函数),也可以是编程语言提供的(库函数)。
C自定义函数是否需要先声明,取决于函数的定义位置:如果函数定义在调用它的代码之前,则不需要声明。
如果函数定义在调用它的代码之后,则需要先声明(通常通过函数原型声明)。
- 因此,函数是否需要声明与主函数和被调函数的位置相关。
判断题:指针所占内存的大小由其指向的数据类型的大小决定。(×)
解析:题干说的是指针所占的内存,这是由系统的架构(操作系统和处理器)决定的,认真审题。