c语言:知识点、易错题

news2025/1/12 10:07:46
  1. c程序的特点;
  1. 简洁紧凑、灵活方便
  2. 运算符丰富
  3. 数据结构丰富
  4. C语言是结构式语言
  5. 语法限制不太严格、程序设计自由度大
  6. 允许直接访问物理地址、直接对硬件操作
  7. 生成代码质量高、程序执行效率高
  8. 使用范围大、可移植性好
  9. 介于高级语言与低级语言之间
  10. 自检机制比较弱
  11. 缺乏代码重用机制

  1. 标识符的特点,关键字有哪些及作用

标识符特点:

  1. 必须以字母或下划线开头。
    2、只能包含字母数字和下划线。
    3、不能使用关键字作为标识符。
    4、大小写敏感。

关键字(一共32个):

auto double int struct break else long switch
case enum register typedef char extern return union
const float short unsigned continue for signed void
default goto sizeof volatile do if while static

A 基本数据类型(5个)
void :声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果
char :字符型类型数据,属于整型数据的一种
int :整型数据,通常为编译器指定的机器字长
float :单精度浮点型数据,属于浮点数据的一种
double :双精度浮点型数据,属于浮点数据的一种
B 类型修饰关键字(4个)
short :修饰int,短整型数据,可省略被修饰的int。
long :修饰int,长整形数据,可省略被修饰的int。
signed :修饰整型数据,有符号数据类型
unsigned :修饰整型数据,无符号数据类型
C 复杂类型关键字(5个)
struct :结构体声明
union :共用体声明
enum :枚举声明
typedef :声明类型别名
sizeof :得到特定类型或特定类型变量的大小
D 存储级别关键字(6个)
auto :指定为自动变量,由编译器自动分配及释放。通常在栈上分配
static :指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部
register :指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数
extern :指定对应变量为外部变量,即在另外的目标文件中定义,可以认为是约定由另外文件声明的韵蟮囊桓觥耙�谩?
const :与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)
volatile :与const合称“cv特性”,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值
2 流程控制关键字
A 跳转结构(4个)
return :用在函数体中,返回特定值(或者是void值,即不返回值)
continue :结束当前循环,开始下一轮循环
break :跳出当前循环或switch结构
goto :无条件跳转语句
B 分支结构(5个)
if :条件语句
else :条件语句否定分支(与if连用)
switch :开关语句(多重分支语句)
case :开关语句中的分支标记
default :开关语句中的“其他”分治,可选。
C 循环结构(3个)
for :for循环结构,for(1;2;3)4;的执行顺序为1->2->4->3->2...循环,其中2为循环条件
do :do循环结构,do 1 while(2); 的执行顺序是 1->2->1...循环,2为循环条件
while :while循环结构,while(1) 2; 的执行顺序是1->2->1...循环,1为循环条件
以上循环语句,当循环条件表达式为真则继续循环,为假则跳出循环。

        

  1. 标准库函数;C程序的执行过程及产生的相关文件

   标准库函数:

C标准函数库(C Standard library)是所有符合标准的头文件(head file)的集合,以及常用的函数库实现程序,例如I/O 输入输出和字符串控制。不像 COBOL、Fortran 和 PL/I等编程语言,在 C 语言的工作任务里不会包含嵌入的关键字,所以几乎所有的 C 语言程序都是由标准函数库的函数来创建的。

C程序的执行过程及产生的相关文件

  1. 编辑输入源程序并保存c文件)
  2. 编译将源程序翻译成目标文件obj文件)
  3. 连接将目标文件转换可执行文件exe文件)
  4. 运行执行exe文件得到运行结果

  1. C语言规定的数据类型有哪些?特点是什么?

         数据类型:

  1. 基本数据类型(常量和变量)

   整型常量(整常数:8进制16进制10进制)

      

  1. 构造数据类型

  数组类型

结构类型

联合类型

  1. 指针类型

另一种:整型常量、整型变量(基本型int占2字节,短整型short int,长整型long int占4字节,无符号型unsigned(int \~ed\short\long))、浮点常量、字符常量、字符变量、枚举常量、枚举变量

5. 常量与宏定义P14(#define)

6. 不同整型变量及其他类型的表示方法

1.基本型:int(内存中占4字节)

2.短整型:short int(int)

3.长整型:long int (long)

4.无符号型: unsigned

其他:

(1) char :声明字符型变量或函数 

(2) double :声明双精度变量或函数 

(3) enum :声明枚举类型 

(4) float:声明浮点型变量或函数 

(5) int: 声明整型变量或函数 

(6) long :声明长整型变量或函数 

(7) short :声明短整型变量或函数 

(8) signed:声明有符号类型变量或函数 

(9) struct:声明结构体变量或函数 

(10) union:声明共用体(联合)数据类型 

(11) unsigned:声明无符号类型变量或函数 

(12) void :声明函数无返回值或无参数,声明无类型指针(1) char :声明字符型变量或函数 

(2) double :声明双精度变量或函数 

(3) enum :声明枚举类型 

(4) float:声明浮点型变量或函数 

(5) int: 声明整型变量或函数 

(6) long :声明长整型变量或函数 

(7) short :声明短整型变量或函数 

(8) signed:声明有符号类型变量或函数 

(9) struct:声明结构体变量或函数 

(10) union:声明共用体(联合)数据类型 

(11) unsigned:声明无符号类型变量或函数 

(12) void :声明函数无返回值或无参数,声明无类型指针

7. 实型常量的书写格式

   1.小数形式

   2.科学计数形式(1.23e-4表示0.000123,1.23e5表示12300)

   3.后缀形式(float/f,double/d,long double/L,3.14d表示double类型的实型常量,3.14L表示long double类型的实型常量)

   4.十六进制形式

8. 字符型数据及其表示的数据值;转义字符及其功能

       字符数据类型:

        \n换行

        \t横向跳格

        \v竖向跳格

        \b退格

        \r回车

        \f走纸换行

       转义字符:

       所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思

         

  1. 算术运算及其优先级/结合性

1.结合方向只有三个是从右往左,其余都是从左往右。

2.所有双目运算符中只有赋值运算符的结合方向是从右往左。

3.另外两个从右往左结合的运算符也很好记,因为它们很特殊:一个是单目运算符,一个是三目运算符。

10. 自增自减的常规用法

11. 其他运算,用法及特点

    

运算类型

运算符

四则运算

+,-,*,/,%

关系运算

<,>,<=,>=,==,!=

逻辑运算

&&,||,!

位运算

&,|,^,>>,<<,~

12. 输出函数用法 ; 输入函数用法。

13.格式符及附加格式符用法特别是二进制,八进制及十六进制的定义方法。

    

14.关系运算符,逻辑运算符,条件运算

15. if语句用法,switch语句用法

16. while循环用法; for循环用法

17. break与continue使用场合

18.数组定义和初始化方式

19.排序应用冒泡、插入、选择、快速、归并、堆、计数、桶、奇数、摇摆、希尔

20. 二维数组的定义,二维数组元素的访问方式

21.常规指针用法,指针与函数。give up

示例:

1、以下选项中实型常量不正确的是( D )

A. 10E3       B.0.14E4          C.-1.0e4         D.12E4.0

解:e/E之前必须要有数字,e/E之后必须为整数。

2、若有定义:int a; float b; double c; ,程序运行时输入:1,2,3<回车>,能把1输入给变量a、2输入给变量b、3输入给变量c的输入语句是(   A  )

A.scanf("%d,%f,%lf", &a,&b,&c);    B.scanf("%d,%lf,%lf", &a,&b,&c);       

C.scanf("%d%f%f", &a,&b,&c);      D.scanf("%d,%f,%f", &a,&b,&c);

3、有以下程序

#include <stdio.h>

int f(int s,int t){

if (s < t) s=t;

return s;}

void main( ){

int i=3, j=5, *p=&i, *q=&j, r;

r = f(*p,*q);

printf("%d,%d,%d,%d,%d ", i, j, *p, *q, r);

}

程序运行后的输出结果是(   D )

A.3,5,5,5,5       B.5,3,3,3,5       C.5,5,5,5,5         D.3,5,3,5,5

解:注意值传递不会改变原文件的值

4、有以下程序

#include <stdio.h>

char *a = "you";

char *b = "Welcome you to Beijing!";

int main( )

{ char *p;

p = b;

while (*p != *a) p++;

printf("%s ", p);}

程序运行后的输出结果是(   C  )

A.Beijing!                              B.to Beijing!

C.you to Beijing!                        D.Welcome you to Beijing!

解:注意指针会往后移动,然后重新读取数据

5、若有以下说明int a[10]={1,2,3,4,5,6,7,8,9,10};*p=a;则数值为6的表达式是( C   )。 

A. *p+6      B. *(p+6)       C.*p+=5          D. p+5

6、 有定义如下:

int a=10; float b=3.14; char c=’A’; double d=6.62607004

下列选项中会丢失精度的是( D ) 

  1. a=c;            B.b=c;         C.d=c;          D.a=b;

解:实型给整型赋值会丢失精度

7、 sizeof(int)是(  B  )

A.一个双精度表达式                    B.一个整型表达式        

C.不合法表达形式                      D.一个函数调用

8 若有说明语句:char c=';',则变量c中存放的是 (  D   )  

A.2个字符       B.3个字符    C.说明语句不合法    D.1个字符

9、 逻辑运算符中,优先级按从高到低依次为( D    ) 

A.&&、!、||      B.||、&&、!   C.&&、||、!        D.、&&、||

10、 下列函数返回值类型是(   A  )

func(float x)

{   float y; y=3*x-1; return y;}

  1. int          B.void         C.float         D.不确定

解:未定义类型的函数默认为int型

11、 关于数组的定义和初始化,下列哪一项是错误的( D   )      

A.int arr[5]={1,2,3,4,5};               B.int arr[]={1,2,3,4,5};     

C.int arr[5]={1,2,3};                  D.int arr[5]={1,2,3,4,5,6};

12、有如下程序:

char *s=“\ta\018bc”;

for(;*s!=‘\0’;s++)

printf(“*”);

输出*的个数是( C )   

  1. 9            B. 5           C. 6             D.7

13、有以下程序段,其中的变量已定义为int类型
sum = pad = 5;

pAd = sum++, pAd++, ++pAd; 

printf( "%d ", pad );
程序运行时,输出结果是(D    )。

A. 4            B. 7            C.6                 D.5

14、 若int a[2][3]={{1,2,3},{4,5,6}},则a[1][2]的值为( C  )

A. 3            B.4            C. 5                 D. 6

15、 下列选项没有构成死循环的是(  C )。 

A.int i=100;while(1){i=1%100+1;if(i>100);break;}            B.for(; ;) 

C.int i=100;do{i=i+1;}while(i>=1000);      D.int i=100;while(1);s=s+1;

16、 下列选项中,哪一个是构造数据类型( C )     

A.整型        B.浮点型         C.数组            D.字符型

17、 下列程序的运行结果是(  B   )

int main()

{

int a=1,b=3,c=5;

int *p1=&a,*p2=&b,*p3=&c;

*p3=*p1*(*p2);

printf(“%d”,c);
}

  1. 1           B. 3            C. 5               D. 4

解:可以用指针改变某个地址所指向内存地址的值

18、 有以下程序

int a=1,b=7;

do{

   b=b/2; a=a+b;} 

while(b>1);  程序运行后a的值是( B   )

A.3          B.4           C.5            D.6

定义如下:int a=10,b=2,c=0;则表达式a&&c?a+b||c:!b的结果为__0____。

在程序中,如果使用printf()函数,应该包含stdio.h头文件。

在C语言中,用于结束函数并返回函数值的是return关键字。

请复习3.4节的所有课后习题,及实验报告1做过的题

请编写程序,求1-3+5-7+9+………-99的值。

int main() {

int i,j=0,k=1;

for(i=1;i<100;i+=2)

{ j=j+i*k;

  k=-k;}

printf("sum=%d",j);

return 0;

}

#include "stdio.h"

int main(){

int s,i;

for(s=0,i=1;i<100;i+=2)

s += (i+1)%6 ? i : -i;

printf("s = %d\n",s);

return 0; 

}

从键盘输入一个3位的整数num,将其个,十,百位倒序生成一个数字输出,如输入123,则输出321,请编写程序实现该功能。

C 语言编写的源智序,其文件扩展名为.c

自标程序是经编译程序翻译生成的程序,文件扩展名为.obj

可执行程序是经连接程序处理过的程序,文件扩展名为.exe

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1374716.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RabbitMQ安装和快速入门

文章目录 1. RabbitMQ2. 安装RabbitMQ2.1 创建shell文件2.2 编写shell文件2.3 检查rabbitmq状态2.4 设置开机自启动2.5 启动插件2.6 开放端口号2.7 创建用户2.8 登入管理页面 3. SpringBoot中集成RabbitMQ3.1 依赖安装3.2 SpringBoot配置3.3 RabbitMQ的配置类3.4 定义消费者和生…

【论文阅读】Deep Graph Infomax

目录 0、基本信息1、研究动机2、创新点2.1、核心思想&#xff1a;2.2、思想推导&#xff1a; 3、准备3.1、符号3.2、互信息3.3、JS散度3.4、Deep InfoMax方法3.5、判别器&#xff1a;f-GAN估计散度 4、具体实现4.1、局部-全局互信息最大化4.2、理论动机 5、实验设置5.1、直推式…

ubuntu 挂载新硬盘

1、检测新硬盘 新增加硬盘&#xff0c;检测硬盘识别情况。 命令检查&#xff1a;sudo fdisk -l 3、格式化磁盘 格式化&#xff1a;sudo mkfs.ext4 /dev/sdb 其中&#xff0c;/dev/sdb是新分区的设备文件名&#xff0c;ext4是要使用的文件系统类型。 4、挂载新分区 sudo mk…

uni-app中实现音乐播放器

uni-app中实现音乐播放器 1、主要利用的是uni-app中提供的uni.createInnerAudioContext()来进行实现&#xff1b; 2、代码示例 &#xff08;1&#xff09;主页面代码展示 <template><view class"music-layout"><view class"tn-flex">…

nvm管理多版本Node.js

nvm管理多版本Node.js 可能大家都曾苦恼于Node环境问题&#xff0c;某个项目需要升版本&#xff0c;某项目又需要降&#xff0c;甚至还出现npm版本与Node对不上的情况。 通过nvm进行版本管理&#xff0c;即可解决。 卸载Node 通过命令行输入node -v命令查看是否已安装Node&…

Realm Management Extension领域管理扩展之颗粒保护检查

本节描述了RME引入的颗粒保护检查。颗粒保护检查使得能够在不同的物理地址空间之间动态分配内存区域。 本节将向您介绍以下功能: 颗粒保护表的结构用于颗粒保护检查的故障报告区域在物理地址空间之间的过渡正如在物理地址一节中所述,RME提供了四个物理地址空间。以下图表显示…

金额用Long还是BigDecimal?

问题 今天在网上看到一个有意思的问题&#xff0c;金额的数据类型用Long还是BigDecimal&#xff1f; 具体问题大概是这样的&#xff1a;关于金额的数据类型&#xff0c;组长认为使用BigDecimal比较稳妥&#xff0c;总监认为使用Long才不会出问题&#xff0c;然后开发认为Long…

85.乐理基础-记号篇-速度记号

内容来源于&#xff1a;三分钟音乐社 上一个内容&#xff1a;85.乐理基础-记号篇-力度记号-CSDN博客 速度记号在下方两个里面已经写过一部分了&#xff0c;这些标记总体上是属于 不变速度 的标记&#xff0c;比如一首乐谱就记了 每分钟60拍&#xff0c;那整首速度就都是不变的…

软件测试|如何在Linux中下载和安装软件包

简介 在Linux操作系统中&#xff0c;下载和安装软件包是一项基本任务。不同的Linux发行版可能有不同的包管理工具和方式&#xff0c;但总体流程是类似的。以下是在Linux中下载和安装软件包的详细步骤。 步骤1&#xff1a;选择适当的包管理工具 因为Linux有不同的发行版本&am…

【Kafka-3.x-教程】-【四】Kafka-消费者-Consumer

【Kafka-3.x-教程】专栏&#xff1a; 【Kafka-3.x-教程】-【一】Kafka 概述、Kafka 快速入门 【Kafka-3.x-教程】-【二】Kafka-生产者-Producer 【Kafka-3.x-教程】-【三】Kafka-Broker、Kafka-Kraft 【Kafka-3.x-教程】-【四】Kafka-消费者-Consumer 【Kafka-3.x-教程】-【五…

JDBC初体验(二)——增、删、改、查

本课目标 理解SQL注入的概念 掌握 PreparedStatement 接口的使用 熟练使用JDBC完成数据库的增、删、改、查操作 SQL注入 注入原理&#xff1a;利用现有应用程序&#xff0c;将&#xff08;恶意的&#xff09;SQL命令注入到后台数据库引擎执行能力&#xff0c;它可以通过在…

芯片命名大全:完整的器件型号包括主体型号、前缀、后缀等!

不少公司的采购会发现&#xff0c;拿到工程师提供的BOM中的器件去采购物料时&#xff0c;经常供应商还会问得更仔细&#xff0c;否则就不知道供给你哪种物料&#xff0c;严重时&#xff0c;采购回来的物料用不了。为什么会有这种情况呢&#xff1f;问题就在于&#xff0c;很多经…

PFA撞击滤尘器-PFA冲击瓶-PFA缓冲瓶

还在用玻璃材质冲击瓶吗&#xff1f;一碰就会碎的辛酸谁能理解啊&#xff1f;还会被各种酸气腐蚀&#xff0c;怎办&#xff1f; 进口氟树脂材质PFA冲击瓶&#xff0c;值得拥有。 与玻璃撞击器不同&#xff0c;PFA冲击瓶坚固&#xff0c;不易损坏&#xff0c;并且由于PFA材质本…

自动驾驶状态观测1-坡度估计

背景 自动驾驶坡度对纵向的跟踪精度和体感都有一定程度的影响。行车场景虽然一般搭载了GPS和IMU设备&#xff0c;但pitch角一般不准&#xff0c;加速度也存在波动大的特点。泊车场景一般在室内地库&#xff0c;受GPS信号遮挡影响&#xff0c;一般无法获取高程和坡度。搭载昂贵…

vue前端开发自学demo-input标签数据双向绑定

vue前端开发自学demo-input标签数据双向绑定&#xff01;今天为大家 展示的内容是&#xff0c;前端开发常见的&#xff0c;form表单里面的&#xff0c;一些输入数据的元素&#xff0c;动态绑定数据的案例。比如input,以及checkbox的状态绑定案例。 首先&#xff0c;老规矩&…

别不信,搭建企业知识库后真的效率翻倍了

在当今信息时代&#xff0c;知识是最宝贵的财富。一个企业要想越办越大&#xff0c;就需要保证信息的透明度和流通率。而搭建一套企业知识库&#xff0c;就能实现这个目标。今天我们就来聊聊为什么建立企业知识库后&#xff0c;你的工作效率会大大提高。同时&#xff0c;我们会…

C/C++ 有关质数(素数)的问题

第一题:判断是否为质数 代码&#xff1a; #include <bits/stdc.h> using namespace std; int main() {int a;int flag 1;cin>>a;for(int j2;j<a;j){if(a % j 0){cout<<a<<"不是质数";flag0;break;}}if(flag1) cout<<a<<&quo…

[足式机器人]Part3 机构运动学与动力学分析与建模 Ch00-3(2) 刚体的位形 Configuration of Rigid Body

本文仅供学习使用&#xff0c;总结很多本现有讲述运动学或动力学书籍后的总结&#xff0c;从矢量的角度进行分析&#xff0c;方法比较传统&#xff0c;但更易理解&#xff0c;并且现有的看似抽象方法&#xff0c;两者本质上并无不同。 2024年底本人学位论文发表后方可摘抄 若有…

Open100: 开源系统杰出成果

了解更多&#xff1a;芝士AI吃鱼 背景 开源的根源可以追溯到计算机的早期&#xff0c;并在20世纪末发展迅猛。贝尔实验室在20世纪70年代开发的AT&T Unix是开源的关键里程碑&#xff0c;其共享源代码的概念为开源运动奠定了基础。开源已重溯软硬件产业生态&#xff0c;并正…

C++ 之LeetCode刷题记录(八)

&#x1f604;&#x1f60a;&#x1f606;&#x1f603;&#x1f604;&#x1f60a;&#x1f606;&#x1f603; 开始cpp刷题之旅&#xff0c;多学多练&#xff0c;尽力而为。 先易后难&#xff0c;先刷简单的。 35. 搜索插入位置 给定一个排序数组和一个目标值&#xff0c;…