【C语言练习】牛客题库第(一)期

:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】
:文章若有幸对你有帮助,可点赞 收藏 ⭐不迷路
:内容若有错误,敬请留言 指正!原创文,转载请注明出处

文章目录

  • 选择题
    • 第1题
    • 第2题
    • 第3题
  • 编程题
    • 第1题
    • 第2题
    • 第3题


选择题

第1题

为表示关系x≥y≥z,应使用C语言表达式为()

A. (x>=y)&(y>=z)
B. (x>=y)AND(y>=z)
C. (x>=y>=z)
D.(x>=y)&&(y>=z)

答案:D
知识点:运算符,包括算数、判断、逻辑和位运算符
思路: &&是逻辑与,符合题意。注意区分位运算的运算符,容易搞混。
【C语言练习】牛客题库第(一)期_第1张图片

第2题

设有如下的定义:

int *(*ptr)( ):

A. ptr是指向一维数组的指针变量
B. ptr是指向int型数据的指针变量
C. ptr是指向函数的指针,该函数返回一个int型数据
D. ptr是指向函数的指针,该函数的返回值是指向int型数据的指针

答案:D
知识点:函数指针与指针函数
思路:
int ( ptr )( )是很常见的函数指针,其形参为空,返回值是int,ptr 是指向函数的指针。
int * ( * ptr )( )这个就是将返回值类型变成了一个int
,实际上就是返回了这个整型数据的地址。

第3题

在C语言中,运行下面代码表示一次性地给数组a的10元素赋值。

int a[10];
scanf("%d",a);

A.正确 B.错误

答案:B
知识点:数组名表示的地址
思路:数组名表示该数组的首地址,等同于首元素的地址&a[0]。而scanf 是 C 语言中的一个函数,用于从标准输入(通常为键盘)读取输入数据。它是标准库 中的一个函数。因此scanf(“%d”,a)的结果是将数组a的首地址作为输入数据,而并不表示一次性地给数组a的10元素赋值。

补充:scanf 函数的基本语法

scanf(format, variable1, variable2, ...);

其中,format 是一个字符串,用于指定输入的格式;variable1variable2 等是变量,用于存储输入的值。

例如,如果要读取一个整数并存储到变量 num 中,可以使用以下 scanf 语句:

int num;
scanf("%d", &num);

请注意,%d 是格式控制符,用于指定输入为整数。
要读取多个值,可以在 format 字符串中使用相应的格式控制符,并在变量参数前加上取址符 &

编程题

第1题

下面程序执行后的输出值是()

#include
#define SUM(x) 3*x*x+1

int main()
{
	int i = 5, j = 8;
	printf("%d\n", SUM(i + j));
	return 0;
}

A.64 B.508 C.420 D.其他几项都不对

答案:A
知识点:宏定义函数的运算
思路:将i+j不加括号带入函数SUM(x)中,因为自变量x无括号
【C语言练习】牛客题库第(一)期_第2张图片

第2题

有如下C语言的程序段

short si = -32767;
unsigned short usi = si;

执行上述两条语句后,usi的值为()
A.-32767 B.32767 C.32768 D.32769

答案:D
知识点:无符号整型的转化
思路:先把-32767表示成原码形式是(因为补码不是一步可以得到的,先原码再补码)
-32767原码=1111 1111 1111 1111
-32767补码 =1000 0000 0000 0001
再把这个补码赋给usi,usi会把最高位符号位1也当做数值位
usi=1000 0000 0000 0001=32769
【C语言练习】牛客题库第(一)期_第3张图片

第3题

以下代码的输出结果是?

char* p = “abc”;
char* q = “abc123”;
while (*p == *q)
{
printf(“%c%c”, *p, *q);
p++;
q++;
}
A.aabbcc B.aabbcc123 C.abcabc123 D.代码段错误

答案:A
知识点:字符串常量
思路:字符串常量保存在一个只读常量区的内存段中,其中的内容可读但是不可写。
【C语言练习】牛客题库第(一)期_第4张图片

【C语言练习】牛客题库第(一)期_第5张图片

你可能感兴趣的:(#,C语言,c语言,开发语言)