期末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;

}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PKG打包sqlite3项目,如何添加node_sqlite3.node依赖

项目地址&#xff1a;https://github.com/helson-lin/pkg_sqlite 在ffandown项目内&#xff0c;由于项目使用了sqlite3&#xff0c;在跨平台打包的时候&#xff0c;除了本机外其他平台打包之后运行缺少node_sqlite3.node依赖。 为了解决问题&#xff0c;百度了很久&#xff0c…

分享一个导出数据到 Excel 的解决方案

前言 许多业务场景下需要处理和分析大量的数据&#xff0c;而 Excel 是广泛使用的文件格式&#xff0c;几乎所有人都能打开和查看 Excel 文件&#xff0c;因此将数据库中的原始数据处理后&#xff0c;导出到 Excel 是一个很常见的功能&#xff0c;对于数据管理、分析、备份、展…

【代码随想录】【算法训练营】【第45天】 [198]打家劫舍 [213]打家劫舍II [337]打家劫舍III

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 day 45&#xff0c;周五&#xff0c;坚持不了一点~ 题目详情 [198] 打家劫舍 题目描述 198 打家劫舍 解题思路 前提&#xff1a;相邻两房屋不能连续盗窃 思路&#xff1a;动态规划, dp[i]: [0,…

【C语言】--操作符详解

&#x1f32d;个人主页: 起名字真南 &#x1f37f;个人专栏:【数据结构初阶】 【C语言】 目录 1 算术操作符1.1 和 -1.2 *1.3 /1.4 % 2 赋值操作符 &#xff1a;2.1 复合赋值符 3 单目操作符3.1 和- - 4 强制类型转换5 printf 和 scanf5.1 printf5.1.1 基本用法5.1.2 占位符5.…

Navicat连接Oracle出现Oracle library is not loaded的解决方法

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 使用Navicat链接Oracle的时候,出现如下提示:Oracle library is not loaded. 截图如下所示: 2. 原理分析 通常是由于缺少必需的 Oracle 客户端库或环境变量未正确配置所致 还有一种情况是 32位与64位的不匹配:Navica…

【数据可视化技术】1、如何使用Matplotlib和Seaborn库在Python中绘制热力图

热力图是一种数据可视化技术&#xff0c;可以显示变量之间的相关性。这个代码段是数据分析和可视化的常用方法&#xff0c;特别适合于展示变量之间的相关性&#xff0c;对于数据科学和机器学习项目非常有帮助。 1、 导入必要的库 首先&#xff0c;确保你已经安装了matplotlib…

javaSE知识点整理总结(上)

目录 一、面向对象 1. 类、对象、方法 2.面向对象三大特征 &#xff08;1&#xff09;封装 &#xff08;2&#xff09;继承 &#xff08;3&#xff09;多态 二、常用类 1.Object类 2.Array类 3.基本数据类型包装类 4.String类 5.StringBuffer类 6.Math类 7.Random…

WAIC2024 | 华院计算邀您共赴2024年世界人工智能大会,见证未来科技革新

在智能时代的浪潮汹涌澎湃之际&#xff0c;算法已成为推动社会进步的核心力量。作为中国认知智能技术的领军企业&#xff0c;华院计算在人工智能的广阔天地中&#xff0c;不断探索、创新&#xff0c;致力于将算法的潜力发挥到极致。在过去的时日里&#xff0c;华院计算不断探索…

Mac可以读取NTFS吗 Mac NTFS软件哪个好 mac ntfs读写工具免费

在跨操作系统环境下使用外部存储设备时&#xff0c;特别是当Windows系统的U盘被连接到Mac电脑时&#xff0c;常常会遇到文件系统兼容性的问题。由于Mac OS原生并不完全支持对NTFS格式磁盘的读写操作&#xff0c;导致用户无法直接在Mac上向NTFS格式的U盘或硬盘写入数据。下面我们…

SpringBoot:使用Spring Batch实现批处理任务

引言 在企业级应用中&#xff0c;批处理任务是不可或缺的一部分。它们通常用于处理大量数据&#xff0c;如数据迁移、数据清洗、生成报告等。Spring Batch是Spring框架的一部分&#xff0c;专为批处理任务设计&#xff0c;提供了简化的配置和强大的功能。本文将介绍如何使用Spr…

排序(冒泡排序、选择排序、插入排序、希尔排序)-->深度剖析(一)

欢迎来到我的Blog&#xff0c;点击关注哦&#x1f495; 前言 排序是一种基本的数据处理操作&#xff0c;它涉及将一系列项目重新排列&#xff0c;以便按照指定的标准&#xff08;通常是数值大小&#xff09;进行排序。在C语言中&#xff0c;排序算法是用来对元素进行排序的一系…

【高性能服务器】服务器概述

&#x1f525;博客主页&#xff1a; 我要成为C领域大神&#x1f3a5;系列专栏&#xff1a;【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 ​ 服务器概述 服…

DDMA信号处理以及数据处理的流程---聚类

Hello,大家好,我是Xiaojie,好久不见,欢迎大家能够和Xiaojie一起学习毫米波雷达知识,Xiaojie准备连载一个系列的文章—DDMA信号处理以及数据处理的流程,本系列文章将从目标生成、信号仿真、测距、测速、cfar检测、测角、目标聚类、目标跟踪这几个模块逐步介绍,这个系列的…

静态链表详解(C语言版)

顺序表和链表的优缺点 顺序表和链表是两种基本的线性数据结构&#xff0c;它们各自有不同的优缺点&#xff0c;适用于不同的应用场景。 顺序表&#xff08;Sequential List&#xff0c;通常指数组&#xff09; 优点&#xff1a; 随机访问&#xff1a;可以通过索引快速访问任…

【技术追踪】UNest:一种用于非配对医学图像合成的新框架(MICCAI-2024)

前天看了一篇文章图像分割用diffusion&#xff0c;今天看了篇文章图像合成不用diffusion&#xff0c;你说说这~ 传送门&#xff1a;【技术追踪】SDSeg&#xff1a;医学图像的 Stable Diffusion 分割&#xff08;MICCAI-2024&#xff09; UNest&#xff1a;UNet结构的Transforme…

Java对象类辨识指南:Object与Objects类的区别详解

今天在写lambda表达式时&#xff0c;用filter来做过滤判断我的结果是否为null时使用到了Objects.nonNull&#xff0c;但是敲着敲着发现不对劲&#xff0c;怎么没有nonNull方法?? 其实时我少敲了一个s&#xff0c;当时自己并没有很清楚Object和Objects两者之前的区别&#xf…

Ansible-综合练习-生产案例

斌的招儿 网上教程大多都是官网模板化的教程和文档&#xff0c;这里小斌用自己实际生产环境使用的例子给大家做一个详解。涉及到一整套ansible的使用&#xff0c;对于roles的使用&#xff0c;也仅涉及到tasks和files目录&#xff0c;方便大家快速上手并规范化管理。 0.环境配置…

波音危机:星际客机飞船故障,宇航员被困太空!马斯克的SpaceX的“龙”飞船来救援?

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 在人类探索宇宙的漫漫征途中&#xff0c;波音公司的“星际客机”承载着无限的希望与梦想&#xff0c;却也面临着前所未有的挑战。从原计划的8天…

pdf已加密如何解除?解密密码的两个方法【可加密】

电脑文件加密的目的就是保护重要信息&#xff0c;防止数据泄露。如果需要解除密码&#xff0c;应该如何操作呢&#xff1f;pdf已加密如何解除&#xff1f;本文整理了以下两种解除文件方法&#xff0c;希望能够帮到有需要的朋友们&#xff01; 方法一、使用金舟文件夹加密大师解…

实验八 T_SQL编程

题目 以电子商务系统数据库ecommerce为例 1、在ecommerce数据库&#xff0c;针对会员表member首先创建一个“呼和浩特地区”会员的视图view_hohhot&#xff0c;然后通过该视图查询来自“呼和浩特”地区的会员信息&#xff0c;用批处理命令语句将问题进行分割&#xff0c;并分…