二级C语言2024-3易错题

1 结构

一个C语言程序是由( )。

A. 一个主程序和若干子程序组成
B. 函数组成
C. 若干过程组成
D. 若干子程序组成

一个C语言程序是由多个部分组成的,其中最核心的部分是函数。在C语言中,函数是实现特定功能的代码块,它们可以被重复调用以执行相同的任务。因此,选项B是正确的。

而一个程序可能包含多个函数


2 输出相关

下列叙述中正确的是( )。

A. 调用printf()函数时,必须要有输出项
B. 使用putchar()函数时,必须在之前包含头文件stdio.h
C. 在C语言中,整数可以以二进制、八进制或十六进制的形式输出
D. 调节getchar()函数读入字符时,可以从键盘上输入字符所对应的ASCII码

正确答案:B
关于C语言中的输入和输出函数,以下是对各选项的解释:

  • A.
    错误。printf()函数可以没有输出项,例如,printf(“Hello, world!\n”); 中的 “Hello, world!” 就是一个输出项,它可以输出字符。 但这样的一种情况 printf(“”); 是合法的,只是它什么都不输出。
  • B.
    正确。putchar() 函数是标准库函数,它是定义在 stdio.h 中的。因此要使用 putchar(),必须包含头文件 stdio.h。正确的写法如下:
#include <stdio.h>

int main() {
    
   putchar('A');
   return 0;
}
  • C.
    错误。C语言中的标准库函数 printf 并不直接支持二进制输出。整数可以使用八进制和十六进制的形式输出,但必须通过合适的格式控制符,例如,基于八进制使用 %o,基于十六进制使用 %x 或 %X。C语言中没有直接的格式化控制符来输出二进制。不过可以通过一定的逻辑实现二进制输出。
  • D.
    错误。getchar() 函数从标准输入读取下一个字符,并返回该字符的ASCII值。如果说”调节getchar()函数读入字符时,可以从键盘上输入字符所对应的ASCII码“,意思是要把字符转换成它的ASCII码来输入,这是不符合实际操作的。实际操作是直接输入字符,由getchar()捕获。例如输入 A 则 getchar() 返回 65(这是A的ASCII值)。

所以,正确答案是 B。


3 字符串比较

下述语句中,在字符串s1和s2相等时显示"they are Equal"的是( )。

A. if(*s1==*s2) puts(“they are Equal”);
B. if(!strcmp(s1,s2)) puts(“they are Equal”);
C. if(s1==s2) Puts(“they are Equal”);
D. if(strcmp(s1,s2)) puts(“they are Equal”);

正确答案 B.

  • A.
    这个条件仅比较了s1和s2的第一个字符是否相等。
  • C.
    这里使用的是直接指针比较(s1 == s2),它检查的是s1和s2这两个指针是否指向内存中的同一个地址,而不是比较它们所指向的内容是否相等。

strcmp

strcmp 是 C 语言标准库中的一个函数,用于比较两个字符串。它位于 <string.h> 头文件中。这个函数通过逐字节比较两个字符串来判断它们是否相等以及它们之间的顺序关系。下面是 strcmp 函数的一些关键点:

函数原型
int strcmp(const char *s1, const char *s2);
参数:

s1: 指向第一个要比较的以空字符终止的字符串。
s2: 指向第二个要比较的以空字符终止的字符串。

返回值:
  • 如果 s1 和 s2 完全相同,则返回 0。
  • 如果 s1 小于 s2(根据字典序),则返回一个小于 0 的整数。
  • 如果 s1 大于 s2(根据字典序),则返回一个大于 0 的整数。

这里的“小于”和“大于”是基于 ASCII 值进行比较的。例如,在 ASCII 中,大写字母 ‘A’ 到 ‘Z’ 的值小于小写字母 ‘a’ 到 ‘z’ 的值。


4 函数指针

给定程序中,函数fun的功能是用函数指针指向要调用的函数,并进行调用。规定在__2__处使fa指向函数f1,在__3__处使fb指向函数f2。当调用正确时,程序输出:

x1=5.000000,x2=3.000000,x1x1+x1x2=40.000000

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK.C中。

不得增行或删行,也不得更改程序的结构!

给定源程序:

#include  <stdio.h>
double f1(double x)
{
   return x*x;}
double f2(double x, double y)
{
   return x*y;}
double fun(double a, double b)
{
   
/**********found**********/
  __1__ (*f)();
  double r1, r2;
/**********found**********/
  f = __2__ ;   /* point fountion f1 */
  r1 = f(a);
/**********found**********/
  f =<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追逐远方的梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值