期末C语言易错知识点整理

1.在定义多维数组时,除了最左边的维度,其余的维度必须明确指定大小

2.int m[1][4]={4}; 定义的是一个 1 行 4 列的二维数组,初始化时提供了一个元素 4,其余元素默认初始化为 0,因此是正确的。

3.二维数组 a[3][6] 中的索引从 0 开始。也就是说,第一维度(行)的索引范围 是 0 到 2,第二维度(列)的索引范围是 0 到 5。

下面是该数组的索引结构:

a[0][0], a[0][1], a[0][2], a[0][3], a[0][4], a[0][5]

a[1][0], a[1][1], a[1][2], a[1][3],  a[1][4], a[1][5]

a[2][0], a[2][1], a[2][2], a[2][3], a[2][4], a[2][5]

4.在C语言中,如果一个二维数组的部分元素没有显式初始化,未初始化的元素会自动被设为0。

5.在字符数组的定义和初始化过程中,双引号 " 和单引号 ' 所代表的含义和用法有所不同:

双引号 " 在字符数组中的用法:

双引号用于表示字符串常量。当你使用双引号来初始化一个字符数组时,它会自动包含字符串的所有字符,并在末尾添加一个空字符 \0 作为字符串的结束标志。

例如,char str[] = "Hello"; 会创建一个字符数组 str,其内容为 'H', 'e', 'l', 'l', 'o', '\0'。

单引号 ' 在字符数组中的用法:

单引号用于表示单个字符常量。如果你使用单引号来初始化一个字符数组,每个单引号中只能包含一个字符。

例如,char arr[] = {'H', 'e', 'l', 'l', 'o'}; 是一个有效的字符数组定义,但不会自动添加 \0。这意味着这个数组虽然包含了字符,但不符合 C 字符串的规范,因为缺少字符串结束标志。

6.char s1[10]; s1 = "Ctest";(×

正确的方式:

char s1[10];

strcpy(s1, "Ctest");

②char s1[10] = "Ctest";

7.

 getc()

该函数用于从输入流中获取一个字符,并不是用于读取整个字符串。

 gets()

该函数可以读取一行输入,包括空格字符,直到遇到换行符为止。因此,它适用于从键盘读入含有空格字符的字符串。

 getchar()

该函数一次读取一个字符,也不适合读取包含空格的整个字符串。

scanf()

该函数在遇到空格、制表符或换行符时会停止读取,因此不适合读取包含空格的整个字符串,除非使用特定的格式说明符来处理这一点(如使用 %[^\n])。

8.

\065 是一个八进制转义序列,表示字符 '5',占 1 个字符。

\xff 是一个十六进制转义序列,表示字符 ÿ,占 1 个字符。

9.标准的C语言标识符中不允许出现中划线(-),但是允许出现下划线(_)

10.

用户标识符可以包含字母(大小写均可)和数字。不能以数字开头,但可以包含数字。可以包含下划线 _,但不能以下划线开头。不可以使用C语言中的关键字(如 int, float, if, for等)作为用户标识符,保留字指的是标准中定义的一些特殊用途的标识符,例如 typedef, extern等,这些也不能用作用户标识符。

11.C语言中有逻辑类型 F

12.int a=b=0;是正确的定义语句。 F

13.假定x和y为double型,则表达式x=2,y=x+3/2的值是3.500000  F

14.C语言中不能用关系运算符比较字符串大小

15.要进行字符串内容的比较,应该使用 strcmp 或 strncmp 等字符串处理函数,而不是直接使用关系运算符。

16.

位运算符(&, |, ^, ~, <<, >>)和 求模运算符(%)是必须使用整型数据的运算符。在这些运算符中,操作数必须是整型类型,如 int、short、long 等。

17.

单目运算符 ++(自增)和 --(自减)用于对变量进行增减操作。它们的运算对象必须是变量

18.

用do-while语句构成的循环,在while后的表达式为(假)时结束循环 F

19.goto 语句可以用于跳出循环

20.

假定int类型变量占用两个字节,其有定义:int  x[10]={0,2,4};,则数组x在内存中所占字节数是6 F(20)

21.若有定义:int a[2][3];对a数组元素正确引用的是a[2][3] F

22.

%d:以十进制整数形式输出变量 k 的值。

%o:以八进制形式输出变量 k 的值。

%x:以十六进制形式输出变量 k 的值(小写字母)。

23.

C语言中用于结构化程序设计的三种基本结构是顺序结构、选择结构、循环结构

24.strlen() 不会计算结尾的空字符 '\0',所以计算的长度确实是6

25.空字符 '\0' 的 ASCII 值是 0。

26.

a > b > c看起来很直观,但在C语言中,它不是像数学表达式那样工作。在C语言中,这个表达式会被解析为两个独立的比较操作:

a > b 会先计算,结果是 1(因为 5 > 4 为真)。

然后,将这个结果 1 与 c 比较: 1 > 3,结果是 0(因为 1 不大于 3)。

27.

28.

在C语言中,数组名在大多数表达式上下文中会被隐式地转换为指向其第一个元素的指针。这种转换叫做“数组到指针”的转换。具体来说,当数组名出现在表达式中并且不是作为&、sizeof或字符串初始化(例如字符数组)的操作数时,它就会转换为指向数组第一个元素的指针。

以下是一些常见的情形,在这些情形中数组名会隐式地转换为指向数组第一个元素的指针:

作为函数参数传递时:

void foo(int *p);

int main() {

    int x[10];

    foo(x);

}

在这里,x作为参数传递给函数foo时,它会被隐式地转换为指向x[0]的指针,即&x[0]。

在表达式中使用时:

int x[10];int *p = x;

在这里,x在赋值给指针p时,会被隐式地转换为指向x[0]的指针。

在算术运算中使用时:

int x[10];int *p = x + 1;

在这里,x在进行加法运算时,被隐式地转换为指向x[0]的指针,然后x + 1表示指向第二个元素的指针,即&x[1]。

间接访问数组元素时:

int x[10];int y = *x;

在这里,x在解引用操作*x中被隐式地转换为指向x[0]的指针,因此*x等价于x[0]。

简而言之,数组名在大多数表达式上下文中会自动转换为指向其第一个元素的指针,这是C语言的一种特性,用于方便处理数组和指针的关系。

29.冒泡

#include <stdio.h>

// 定义冒泡排序函数

void bubbleSort(int arr[], int n) {

    int i, j, temp;

    for (i = 0; i < n - 1; i++) {

        for (j = 0; j < n - i - 1; j++) {

            // 如果当前元素大于后面的元素,则交换它们

            if (arr[j] > arr[j + 1]) {

                temp = arr[j];

                arr[j] = arr[j + 1];

                arr[j + 1] = temp;

            }

        }

    }

}

int main() {

    int arr[] = {64, 34, 25, 12, 22, 11, 90};

    int n = sizeof(arr) / sizeof(arr[0]);

    int i;

    printf("原始数组: \n");

    for (i = 0; i < n; i++) {

        printf("%d ", arr[i]);

    }

    printf("\n");

    bubbleSort(arr, n);

    printf("排序后的数组: \n");

    for (i = 0; i < n; i++) {

        printf("%d ", arr[i]);

    }

    printf("\n");

    return 0;

}

30.素数

#include <stdio.h>

int main()

{

    int j;

    printf("输入一个数: ");

    scanf("%d", &j);

    

    if (j <= 1) {

        printf("%d 不是素数", j);

    } else {

        int i;

        for (i = 2; i < j; i++) {

            if (j % i == 0) {

                printf("%d 不是素数", j);

                break;

            }

        }

        if (i == j) {

            printf("%d 是素数", j);

        }

    }

    

    return 0;

}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IDEA中配置log4j日志

由于开发过程中总是会出现一些当时觉得莫名其妙的问题&#xff0c;排查问题时很难定位到具体的位置&#xff0c;所以这个时候如果加入日志可以在控制台打印出日志记录&#xff0c;遍能很快定位到问题的位置&#xff1b; 1.添加依赖 <dependency><groupId>log4j<…

goLang小案例-打印99乘法表

goLang小案例-打印99乘法表 1. 打印99乘法表 func Print99multiplication1() {//横向9排for i : 1; i < 9; i {//竖向9列//第一批第一个 和第一列比较 如果大于排就结束//假设第三排i3 最走有三列 1*3 2*3 3*3//j3打印完 j 当j4就要结束 以此类推for j : 1; j < i; j …

Meet AI4S 直播预告丨房价分析新思路:神经网络直击复杂地理环境中的空间异质性

近年来&#xff0c;房地产市场起起落落&#xff0c;房价已经成为了扰动居民幸福感的重要影响因素。大多数家庭都需要面对「买不买房、何时买房、在哪儿买房、买什么房」的艰难抉择&#xff0c;每一个问题的答案都在某种程度上与房价的波动息息相关。 近年来&#xff0c;我国各…

v-for中key的原理以及用法

在 Vue.js 中&#xff0c;v-for 指令用于基于源数据多次渲染元素或模板块。当使用 v-for 渲染列表时&#xff0c;为每个列表项提供一个唯一的 key 属性是非常重要的。key 的主要作用是帮助 Vue 跟踪每个节点的身份&#xff0c;从而重用和重新排序现有元素。 先来张原理图&#…

go sync包(五) WaitGroup

WaitGroup sync.WaitGroup 可以等待一组 Goroutine 的返回&#xff0c;一个比较常见的使用场景是批量发出 RPC 或者 HTTP 请求&#xff1a; requests : []*Request{...} wg : &sync.WaitGroup{} wg.Add(len(requests))for _, request : range requests {go func(r *Reque…

IBM Spectrum LSF RTM,针对 IBM Spectrum LSF 环境的高级报告、跟踪和监控工具

亮点 为 IBM Spectrum LSF 环境提供性能监控和报告 监控 FlexNet Publisher 和 Reprisebased 许可证的使用&#xff0c;提供详细和总结性报告 通过多个级别&#xff08;包括应用程序和组织&#xff09;的报告来监控共享存储的利用率 提供强大的生产力工具&#xff0c;包括操…

计算机公共课面试常见问题:线性代数篇

目录 1. 特征向量和特征值代表什么含义&#xff1f; 2. 矩阵的秩是什么&#xff1f;满秩代表什么&#xff1f;不满秩呢&#xff1f; 3. 奇异值分解是什么&#xff1f; …

二手房和新房市场冰火两重天!原因为何?杭州给出了答案

随着房市的回暖&#xff0c;也出现了不少的不利的消息&#xff0c;一边二手房被抢购&#xff0c;一边是新房难卖&#xff0c;为何如此矛盾&#xff1f;近期杭州的楼市行情给出了答案。 5月份在诸多政策的刺激下&#xff0c;杭州楼市保持了热度&#xff0c;不过却有点凉风&#…

“论云上自动化运维及其应用”写作框架,软考高级,系统架构设计师

论文真题 云上自动化运维是传统IT运维和DevOps的延伸&#xff0c;通过云原生架构实现运维的再进化。云上自动化运维可以有效帮助企业降低IT运维成本&#xff0c;提升系统的灵活度&#xff0c;以及系统的交付速度&#xff0c;增强系统的可靠性&#xff0c;构建更加安全、可信、…

【SGX系列教程】(三)Intel-SGX 官方示例分析(SampleCode)——Cxx11SGXDemo

文章目录 示例一. Cxx11SGXDemo1.1 README1.2 重点代码分析1.2.1 App/App.cpp1.2.2 App/TrustedLibrary/Libcxx.cpp1.2.3 Enclave.edl1.2.4 Enclave/TrustedLibrary/Libcxx.cpp1.2.5 Enclave/Enclave.cppEnclave.h 1.3 编译执行1.4 总结 示例二. Cxx14SGXDemo示例三. Cxx17SGXD…

SpringBoot集成道历(实现道历日期查询)

官网地址&#xff1a;官网地址https://6tail.cn/calendar/api.html 1、导入依赖 <dependency><groupId>cn.6tail</groupId><artifactId>lunar</artifactId><version>1.3.9</version></dependency><dependency><group…

斜光测距的原理及python实现

1.前言 最近做了一个基于opencv的斜光测距的小项目&#xff0c;东西不多&#xff0c;但是很有意思&#xff0c;值得拿出来学一学。项目里面需要比较精确的定位功能&#xff0c;将前人matlab代码移植到python上&#xff0c;并且做了一些优化&#xff0c;简化逻辑(毕竟我是专业的…

uView 2.0:uni-app生态的利剑出鞘,引领UI框架新纪元

引言 随着移动互联网的快速发展&#xff0c;跨平台应用开发成为了开发者们关注的焦点。uni-app&#xff0c;一个基于Vue.js的跨平台应用开发框架&#xff0c;因其高效、易用的特性而广受欢迎。在uni-app的生态系统中&#xff0c;UI框架的选择对于开发者而言至关重要。今天&…

AI 编程探索- iOS动态标签控件

需求分析&#xff1a; 标签根据文字长度&#xff0c;自适应标签居中显示扩展 超过内容显示范围&#xff0c;需要换行显示&#xff0c;且保持居中显示 AI实现过程 提问&#xff1a; 回答&#xff1a; import UIKit import SnapKitclass DynamicLabelsContainerView: UIView…

docker 多网卡指定网卡出网

前言 宿主机中有多个网卡 ens160 192.168.4.23/20 内网通信用 ens192 10.31.116.128/24 出公网访问-1 ens193 10.31.116.128/24 出公网访问-2 现在需要不同容器中不同出网访问&#xff0c;举例 容器1 192.168.0.1/20 网段走宿主机 ens160网卡&#xff0c;否则全部走ens192 网…

CAS自旋解析

CAS全称CompareAndSwap(比较并交换)&#xff0c;是cpu的指令&#xff0c;调用时不涉及上下文的切换。Java中属于乐观锁的一种&#xff0c;具体流程如下图&#xff1a; 具体的实现使用的是Unsafe类去调用native修饰的compareAndSwap方法&#xff0c;4个字段分别是对象实例&#…

Shell编程实战

脚本编程步骤 脚本编程一般分为以下几个步骤: 需求分析:根据系统管理的需求&#xff0c;分析脚本要实现的功能、功能实现的层次、实现的命令与语句等; 命令测试:将要用到的命令逐个进行测试&#xff0c;以决定使用的选项、要设置的变量等: 脚本编程:将测试好的命令写入到脚本文…

庆祝东兴市金顺心贸易有限公司代理越南三原竹系列产品五周年

&#x1f389;庆祝金顺心贸易代理越南三原竹系列产品五周年&#xff01;这五年&#xff0c;我们共同成长&#xff0c;每一份产品都承载着越南的美味与匠心。感恩有你们&#xff0c;未来的路&#xff0c;我们继续携手前行&#xff0c;品味更多美好&#xff01;&#x1f962;&…

电子名片小程序源码系统 前后端分离 带完整的安装代码包以及搭建教程

系统概述 电子名片小程序源码系统是一款基于前后端分离架构的综合性平台&#xff0c;旨在为用户提供一个集销售名片和企业商城于一体的解决方案。该系统采用先进的技术手段&#xff0c;实现了个性化名片设计、便捷的销售功能、企业商城模块等一系列实用功能。同时&#xff0c;…

vue-cli 搭建项目

创建 router 目录 在一个.js文件中添加 打开外部命令 打开外部命令后&#xff0c;在指令栏输入npm i vue-router3.5.3 &#xff0c;等待下载 下载完成后 在 main.js 中配置路由 输入这些后&#xff0c;基本的配置就实现了 最后进行测试&#xff0c;验证是否配置 或者打开外部命…