C语言习题小练

先写个小结

1.多组输入的方法
在这里插入图片描述

2.处理后面字符换行符
在这里插入图片描述
3.
在这里插入图片描述
4.计算数组元素个数:sizeof(数组)/sizeof(数组[0])
5.p是一指向结构体类型的指针变量,其初始值是让其指向结构体变量a,要通过指针变量p来引用结构体变量的成员next,通常可使用两种形式:p->next 或(*p).next,而p.next是非法的引用。

习题练习

在这里插入图片描述
答案:24

在这里插入图片描述在这里插入图片描述
尴尬了 我还以为是函数

在这里插入图片描述

在这里插入图片描述
答案:错误

在这里插入图片描述
在这里插入图片描述答案:单向值传递
本题考查函数调用时的数据流向问题。简单变量只能实现单向的值传递。在调用函数时,通常在主调函数和被调函数之间有数据传递关系。在定义函数时,函数名后面括号中的变量名称为“形参”;在调用函数时,函数名后面括号中的变量名称为“实参”。有关实参和形参的说明如下: (1)形参在函数未被调用时,不占用存储单元,只有在发生函数调用时形参才被分配内存空间,函数调用结束后,释放形参所占的内存空间。 (2)在被定义的函数中,必须指定形参的类型。 (3)实参可以是常量、变量或表达式。 (4)实参与形参的类型应一致。 (5)如果形参是简单变量,实参对形参的数据传递是按值传递,即单向传递,只能由实参传给形参,不能由形参传回来给实参。 如果形参是地址变量,实参对形参的数据传递是按地址传递,可以实现双向传递,既能由实参传给形参,又能由形参传回来给实参

在这里插入图片描述
答案:8
在这里插入图片描述
在这里插入图片描述答案:515

union为共享体,共享存储空间,在给i 分配存储空间后,并不会为char再开辟新的存储空间。此时union里的存储情况为 0000 0000 0000 0000 0000 0000 0000 0000,然后再从低8位开始分别存储3和2,低16位变为0000 0010 0000 0011(高16位全为0),再把它当做i来输出,自然就是515

下面程序运行后,输出的结果是()
#include“studio.h”
void main(void)
{union{char c: int i:}u;
u.c=‘A’; u.i=0×0143;
printf("%d,%d",u.c,u.i);
}

答案:67,323
在这里插入图片描述
在这里插入图片描述
答案:装载阶段、执行阶段

在这里插入图片描述在这里插入图片描述

答案:C
考察的是实参调用和形参声明的参数匹配。根据题干声明定义的f1 (int x,int y,int*p)函数中参数类型,调用所需要的实参类型也应该对应匹配。B、D语法错误。 A中的实参为整型变量和形参中的声明指针不匹配。

在这里插入图片描述答案:错误

宏定义不做语法检查。
预处理是在编译之前的处理,而编译的工作之一便是语法检查,所以预处理不做语法检查。
题中的S(a,b)是没问题的,有问题的调用的地方。
宏定义在代码中只是简单的替换,调用时简单的将S(a,b)替换为“t=a;a=b;b=t“,编译时会显示t未定义。
但是若是只是有宏定义,但代码中未使用S(a,b)的话,是不会出现t未定义的情况的,因为在代码中压根就没有替换来的”t=a;a=b;b=t“。

在这里插入图片描述答案:
a构造 b构造 b析构 a析构
按变量声明顺序构造对象,然后入栈。按相反顺序出栈,析构对象。

在这里插入图片描述答案:12
在这里插入图片描述

在这里插入图片描述
答案:4

32位计算机指针大小为4字节,64位计算机指针大小是8字节

在这里插入图片描述
答案:36

这就是一个递归题目 最终答案是 1+ 8 + 27 = 36

在这里插入图片描述答案:D
在这里插入图片描述

在这里插入图片描述
答案:A

看定义记得注意优先级,int * pa[5],首先[]优先级比高,所以pa与[]先结合,pa[5]表明pa是一个数组,大小是5,既然知道pa是数组了,接下来就是确认数组元素了,int表明数组元素是指针;
int(* p)[5],首先()优先级比[]高,所以pa先与*结合,*pa表明pa是一个指针,既然知道pa是指针,接下来确认指针指向的数据类型,int [5]表明指针指向大小为5的int型数组。

在这里插入图片描述
答案:7
在这里插入图片描述
在这里插入图片描述答案:0
这道题最主要考察了变量自动初始化相关知识点:
变量自动初始化分为内置类型和类类型之分:
1.内置类型的自动初始化:程序中有一个数据区,用来存放已初始化全局变量,静态变量和常量,这部分增加了目标文件的大小;还有一个未初始化数据区(BSS),用来存放未初始化全局变量,BSS的数据在程序开始执行之前被初始化为0或NULL,实际上BSS段数据在目标文件中只占一个符号位,编译器并没有给变量分配空间,“初始化为0”是指链接阶段才申请空间,并初始化。局部 非静态变量未显示初始化时是一个随机值。
2.类类型的自动初始化:没什么特别的,无论是全局的还是局部的,都会调用默认构造函数进行初始化,有一点需要注意的是,当对象为全局作用域或者静态局部对象时,类的内置成员变量被初始化为0,而局部作用域时,内置成员变量不被自动初始化。

在这里插入图片描述答案:4294967285 -128
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值