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

news2024/11/26 4:27:03

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;

}

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

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

相关文章

flash-Attention2安装和使用

flash-Attention2安装和使用 文章目录 flash-Attention2安装和使用写在前面解决方案 写在前面 就怕你不知道怎么查 pytorch、cuda 的版本 配置cuda&#xff1a;vim ~/.bashrc export CUDA_HOME/usr/local/cuda/ export PATH$PATH:$CUDA_HOME/bin export LD_LIBRARY_PATH$LD_LIB…

分页插件 count有数据,代码不往下执行

如下:如果打印了sql那么当row>0时会有图2下面sql详情的输出 问题出在了分页参数上,pageNum为1,并且pageSize>2才能打印出图二的结果,图一为pageNum值是0,注意,查询第一页,分页应该传入的是1而不是0

松下的台灯值得入手吗?书客、飞利浦真实横评大分享!

我们都知道&#xff0c;无论是学习还是工作&#xff0c;都需要一个良好的照明环境&#xff0c;而台灯就是我们日常生活中非常重要的照明工具。它不仅能够提供额外的光线&#xff0c;还能减少眼睛疲劳&#xff0c;提高我们的工作和学习效率。 所以&#xff0c;选购一款合适的台…

根据后端返回的省市区重新封装树结构(省市区通过children表示)

对比图&#xff08;截取部分&#xff09;&#xff1a; 注&#xff1a;先看分步&#xff0c;最后会附上完整代码&#xff08;如果有用&#xff0c;可以给小编点个赞吗&#xff1f;十分感谢&#xff09; 1.首先将前端返回相同的省份只展示一次 const obj {}; let keyList []r…

安防监控视频平台LntonAIServer视频监控管理平台裸土检测算法技术核心和应用场景

LntonAIServer裸土检测算法是一种基于人工智能技术的创新解决方案&#xff0c;旨在实现对裸土地表的自动识别。以下是对该算法的详细分析&#xff1a; 技术基础&#xff1a; 1、该算法利用深度学习和计算机视觉技术&#xff0c;通过捕捉视频或图像中的关键信息&#xff0c;如…

SDIO学习(2)--SD卡 2.0协议

目录 1 SD卡简介 1.1 SD卡概念 1.2 SD卡外形和接口 1.3 SD卡特点 2 SD 2.0特点 3 SD 2.0总线拓扑结构 3.1 SD模式 3.2 SPI模式 4 SD 2.0总线协议 5 SD卡寄存器 5.1 OCR寄存器 5.2 CID 寄存器 5.3 CSD 寄存器 5.3.1 CSD结构 5.3.2 CSD寄存器 (CSD Version 2.0)…

软件测试之接口测试(Postman/Jmeter)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、什么是接口测试 通常做的接口测试指的是系统对外的接口&#xff0c;比如你需要从别的系统来…

从零开始备考CCIE安全,这么做就对了

CCIE Security认证是思科提供的最高级别的安全认证&#xff0c;验证在设计、实施和故障排除复杂的安全网络基础设施方面的能力。 获得CCIE Security认证不仅是对你网络安全专业知识的高度认可&#xff0c;更是职业发展的重要转折。 它能够显著提升你的职业竞争力&#xff0c;为…

制造企业的仓库管理如何做好数据分析?

在竞争激烈的现代制造业环境中&#xff0c;仓库管理成为许多生产制造企业面临的一大挑战。随着产品种类的不断增加和客户需求的日一个型号&#xff0c;仓库不仅要处理物料、半成品和成品&#xff0c;还要应对产品更新换代、不同项目客户的特殊需求等复杂因素。面对这些挑战&…

分布式kettle调度管理平台简介

介绍 Kettle&#xff08;也称为Pentaho Data Integration&#xff09;是一款开源的ETL&#xff08;Extract, Transform, Load&#xff09;工具&#xff0c;由Pentaho&#xff08;现为Hitachi Vantara&#xff09;开发和维护。它提供了一套强大的数据集成和转换功能&#xff0c…

什么是产线工控安全,如何保障产线设备的安全

什么是产线工控安全&#xff1f; 工控&#xff0c;指的是工业自动化控制&#xff0c;主要利用电子电气、机械、软件组合实现。即是工业控制系统&#xff0c;或者是工厂自动化控制。产线工控安全指的是工业控制系统的数据、网络和系统安全。随着工业信息化的迅猛发展&#xff0…

首户完工!江门市特殊困难老年人家庭适老化改造资助项目初见成效

日前&#xff0c;江门市特殊困难老年人家庭适老化改造项目取得新进展。位于蓬江区杜阮镇的黄伯家&#xff0c;成为“慈善筑迹溢彩同行”江门市特殊困难老年人家庭适老化改造项目资助的首户完工受益户。 黄伯的家由两座旧平房构成&#xff0c;大门门槛处原步差较大&#xff0c;…

spring aop 初探

org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator#wrapIfNecessary 分析JDK动态代理 生成的代理对象 构造函数&#xff0c;入参为 InvocationHandler public com.sun.proxy.$Proxy164(java.lang.reflect.InvocationHandler) 生成动态代理Class对象&…

免交互和嵌入执行模式

目录 概念 语法格式 统计行数 赋值变量 修改密码​编辑往文件里添加内容 ​编辑​编辑引入变量 整体赋值​编辑 加引号不赋值变量 expect实现免交互 免交互设置密码 免交互切换用户 嵌入执行模式 添加用户并免交互设置密码 免交互登录 传参实现ssh 练习 概念 …

day22--77. 组合+216.组合总和III+17.电话号码的字母组合

一、77. 组合 题目链接&#xff1a;https://leetcode.cn/problems/combinations/ 文章讲解&#xff1a;https://programmercarl.com/0077.%E7%BB%84%E5%90%88.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV1ti4y1L7cv 1.1 初见思路 组合问题用回溯学会使用剪…

Java的异常处理体系

目录 异常处理1、Java的异常类层次结构2、try-catch-finally 使用注意事项3、在Web应用中如何实现全局异常处理机制 异常处理 1、Java的异常类层次结构 其中Error表示程序运行错误 常见的错误类型有&#xff1a; OutOfMemoryError (内存溢出错误) StackOverFlowError (栈内存溢…

计算机等级考试二级Java-第二篇:基本数据类型

1.运算符的优先级以及复杂表达式 优先级运算符结合性1( ) [ ]  .从左到右2!  ~    –从右到左3*  /  %从左到右4  -从左到右5<<  >>  >>>从左到右6<  <  >  >  instanceof从左到右7  !从左到右8&从左到右9^从左到右10|从…

定制聊天机器人,实现智能客服,完成冰箱报修对话 | Chatopera

系列文章 1/3 智能客服体验分析&#xff0c;使用小程序海尔服务完成电器报修 | Chatopera2/3 Chatopera 云服务实现类海尔服务智能客服的功能点比较 | Chatopera3/3 定制聊天机器人&#xff0c;实现智能客服&#xff0c;完成冰箱报修对话 | Chatopera 本篇为第三篇&#xff0…

突破SaaS产品运营困境:多渠道运营如何集中管理?

随着数字化时代的到来&#xff0c;SaaS&#xff08;软件即服务&#xff09;产品已成为企业日常运营不可或缺的工具。然而&#xff0c;在竞争激烈的市场环境下&#xff0c;SaaS产品运营越来越重视多渠道、多平台布局&#xff0c;以更广泛地触及潜在用户&#xff0c;然而&#xf…

报工计件工资核算h5开源版开发

报工计件工资核算h5开源版开发 小型计件工资管理系统&#xff0c;支持后台制定工价&#xff0c;核算工资。支持员工H5端报工&#xff0c;和查看工资情况。 H5手机端 支持在线报工&#xff0c;支持查看我的工资。 自定义费用项 在基础计件工资基础上增加扣除和增加项&#xff…