22个C语言小白常见问题总结

一.语言使用错误

在打代码的过程中,经常需要在中文与英文中进行转换,因此常出现一些符号一不小心就用错,用成中文。例如:“;”中文中的分号占用了两个字节,而英文中“;”分号只占用一个字节。编译器只能识别英文。因此会报错。在报错后检查这些字符时最需要眼力和时间的。因此打代码是需注意。

二.忘打分号

分号是C语言是语句的标志,在C中无分号不成语句,无语句不能识别。 在编译中如果没有分号,编译器就会将,b=2合到上一个语句a=1中,进而出现语法错误。

 

三.多打分号

复合语句中,花括号后不应再加分号,虽然不会有什么影响,但是多此一举,毫无意义。

 

另外,if(a == 0)后不应加分号,if(a ==0)后加分号就会是语句提前结束,而使用if的目的就是为了控制其后的语句,加了分号之后。程序将永远执行i++,不论a是否等于0.

 

for()后不应加分号。

 

本意是输入4个数,每输入一个数后再将它输出。由于for()后多加了个分号,导致循环变成空语句,此时就变成只能输入一个数并输出了。

四.变量命名的错误

C语言规定,标示符由字母,数字和下划线“_"组成,它的第一个字母必须是字母或下划线。 在C语言中变量的命名不允许出现的情况有以下三种:1.以数字开头进行开头;2.不能包含运算符;3.不能与系统保留字(即关键字重名)。一旦出现这三种情况之一,编译器就会报错。如下图所示:

 

这里附上C语言中的关键字,即用作专用的定义符,也称为保留字。

 

作为C语言的初学者,变量的命名往往是简单单调的。而程序员大佬往往用具有特定意义的英文单词进行命名,并形成了一套自己的命名法则:业界目前共有四种命名法则;驼峰命名法,匈牙利命名法,帕斯卡命名法和下划线命名法。其中前三种是比较流行的命名法。 1.驼峰命名法是将每个单词(逻辑断点)用大写字母区分开。2.匈牙利命名法通过在变量名前面加上小写字母的符号标识作为前缀,标识出变量的作用域,类型等。3.帕斯卡命名法。与驼峰命名法类似,只不过将开头首字母换成了大写字母。4.下划线命名法是将每个单词(逻辑断点)用下划线隔开。

 

五.忽略大小写字母的区别

 

出现这种情况编译器会将a和A认为是两个不同的变量,因而报错。因此在定义变量和输出变量的同时要注意大小写字母的一致性。因为C会将大写字母和小写字母看成是不同的字符。

六.数据类型的使用错误

例如:我们要输出一个a = 3.1415的情形。如果数据类型使用错误,将得不到我们想要的结果。使用整型,将只输出3。必须使用浮点型float,double,long double。

 

 

七.“/”运算时,和“%”时计算结果的错误

“/”运算时,参与运算的两个数均为整型时,结果为舍去小数的整型数,例如;

 

尽管定义了浮点型但是结果却是1.0,而不是我们想要的1.5。为得到1.5的结果,我们必须将3/2改成3.0/2,或者是3/2.0.才能输出1.5的结果。

 

如果除数和被除数中有一个为负值,其结果与具体实现有关。例如:“-9/7”在有的系统中计算结果为-2,有的系统计算结果为-1,这是对小数部分的舍入处理不同造成的。 “%”要求参与的运算操作数均为整型,计算结果的符号与“%”左侧运算对象的符号相同,如“-9/4"的结果为-1。一旦非整型,编译器将报错。

 

也就是说整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。

八.字符常量和字符串常量的表示错误

字符变量是用类型符char定义字符变量,字符常量是由一对单引号扣起来的单个字符;字符串常量是用双引号括起来的字符序列,在C中通常以“/”作为结束标志。像下面的字符串"a",实际上包含两个字符'a'和'',这把它们赋给一个变量是不行的。

 

九.“=”与“==”的混淆

在C语言中“=”是赋值运算符,而“==”则是关系运算符。命名的不同者也就意味着作用不同和优先级的不同。关系运算符的的优先级高于赋值运算符。

 

if()括号中的语句是进行判断的内容,判断a是否等于4,所以说里面的符号应该用关系运算符“==”而不是赋值运算符“=”。正确的表示如下:

 

十.scanf()括号中忘记加地址运算符“&”

 

这样的书写时不合法的。scanf函数是格式输入函数,它从标准输入设备(键盘)读取输入信息。也就是按照啊a,b在内存的地址将a,b的值存进去,“&a”就是指a在内存中的地址。

十一.间隔符的不注意

scanf()函数一般以空格键,Tab键或Enter键作为分隔符,当格式中字符传中存在非格式字符时,输入时也需要一并输入。例如:

 

应当输入:

 

十二.输入数据时结束情况的不熟悉

C语言中,输入数据时,遇到以下3种情况则认为该数据结束:1.遇空格键,Tab键,或Enter键;2.有指定数据长度时,系统自动按长度截取;3.遇非法输入。

十三.输入字符的格式与要求不一致

在C中,在用“%c”输入时,空格和转义字符均作为有效字符。

 

字符“a”赋给c1,字符“ ”赋给c2,字符“b”送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。

十四.输入数据时规定精度

 

输入数据时企图规定精度,这样做在C中是不合法的。

十五.使用switch语句中漏写break语句

例如:打印学生成绩

 

如果漏写break语句,case只起标号作用,而不起判断作用。也就是假如输入A,就会直接执行到最后一个printf语句,而不会在第一个printf语句执行后截止。因此必须在每个printf语句后加上break.例如:

 

十六.数组的部分错误

1.数组后面的元素个数应与声明的一致。如果与声明不一致,超出声明后面的数字默认为0。

 

2.必须声明元素个数。

 

十七.忽略了while和do-while语句在细节上的区别

 

 

如图所示,当输入i大于10时二者的结果就不同了。这是因为while循环是先判断后执行,而do-while循环是先执行后判断。对于大于10的数,while语句中编译器不循环循环体,而do-while语句编译器则要执行一次循环体。

十八.定义数组时误用变量

 

数组后面用方括号括起来的是常量表达式,可以包含常量和符号常量。即C不允许对数组的大小作动态定义。

十九.多加了地址运算符“&”

 

C语言中,scanf函数中的输入是字符数组名时,就不必在加地址符&。需改为:

 

二十.同时定义了形参和函数中的局部变量

 

形参应该在函数体外定义,而局部变量应该在函数体内定义。应改为:

 

二十一.在定义数组时将定义的“元素个数”误以为是可使的最大下标值

 

C语言规定:定义时用a[10],表示数组有10个元素。其下标值由0开始,所以数组元素a[10]是不存在的。

二十二.二维数组的定义

1.C语言中,不能使用一次方括号来表示二维数组的元素,表示非法的例子如下:

 

2.另外,由于系统不会检查二维数组元素的下标是否越界,以此需要编程人员注意限制下标不要越界。例如:

这里还有其他资源可以分享给大家,包括从零开始的教程和C语言C++项目案例。这些资源将帮助大家克服学习C语言的困难。点击进入学习社区

 

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

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

相关文章

Scala的简单学习一

一 相关知识 1.1 scala的安装 1.在idea中导入依赖,并在Idea下载scala插件 1.2 scala基础知识点 1.scala代码中一行语句的结束是以换行符为标准,可以不用写分号 2.class是一个普通的类,object相当于一个单例对象,object类中的…

OpenStack配置 之 不同cpu迁移虚拟机

介绍 OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合。 OpenStack由NASA(美国国家航空航天局)和Rackspace合作研发并发起,以Apache许可证(Apache软件基金会发布的一个自由软件许可证&#xff…

Vue的router.addRoutes不起作用

Vue的router.addRoutes()不起作用解决方案 最近在学习制作后台管理系统的时候,涉及到了权限,在通过后台获取到数据后使用router.addRoutes()时不起作用。 最终发现左侧菜单组件中的路由是根据this.$router.options.routes来渲染的,最终使用…

sw套合样条曲线

套合样条曲线,可以变成一条曲线,然后可以进行分段

UOS1060e分离ssh与sftp服务

文章目录 原理一、sftp 用户与目录二、ssh 和 sftp 服务分离三、启动与停止四、验证 原理 SFTP是SSH的一部分,SFTP没有单独的守护进程,它必须使用SSHD守护进程(端口号默认是22)来完成相应的连接操作。 通过新建另一个‘sshd’进程…

rclone迁移对象存储之间的数据

1 概述 rclone是一款文件复制工具,既可以用于在linux主机之间复制文件,也可以在对象存储之间复制文件。 rclone的官网为: https://rclone.orgrlcone关于对象存储的官方文档为: https://rclone.org/s32 安装 2.1 yum安装 yum …

PY32F系列32位单片机 特殊引脚复用说明

一 、 PY32F030 系 列 , 包 括 PY32F030 、PY32F003、 PY32F002A、 XL32F003 的特殊引脚使用说明。 1、晶振引脚的复用,使用 HSE/LSE 引脚作为 GPIO 功能引脚时,只要没有配置相关功能的情况下,正常配置 GPIO 功能即可。 其中&am…

SpringBoot3.x 整合 Spring AI

Spring AI 已经发布了一段时间,虽然推出的时候就被人说只是一个套了 API 的壳,但是作为 Spring 生态的一个开源项目,用它来结合到现有业务系统中还是一个比较好的方案,毕竟像笔者当初为了接入 OpenAI 的 API,还专门学了…

pcd点云江湖之处处碰壁:点云文件pcd加载02

江湖好汉,休走,废了半天力气把threejs自带的代码搬迁到自己项目中了,高高兴兴给领导看。领导一句话,顿时无奈:领导曰:点云单色太丑,能不能按照分类展示? 一句话难道英雄好汉&#xf…

eclipse配置JDK和Tomcat

eclipse配置JDK jdk配置 配置JDK: 首先,确保JDK已经安装并配置了环境变量。这包括设置JAVA_HOME环境变量,指向JDK的安装目录,以及更新CLASSPATH和PATH环境变量以包含JDK的bin目录。 在Eclipse中,通过Window > Pre…

【Verilog编程题】

20240514 20240515 20240516 题目时序有问题,valid_b在第六位数据的同时拉高,而不是在下一个时钟 20240517 module valid_ready( input clk , input rst_n , input [7:0] data_in , input valid_a , input ready_b , output ready_a , output re…

LaTeX 2022软件安装教程(附软件下载地址)

软件简介: 软件【下载地址】获取方式见文末。注:推荐使用,更贴合此安装方法! LaTeX 2022是基于ΤΕΧ的一种排版系统,特别适用于生成科技和数学文档的高质量打印。它可用于各种文档类型,从简单信函到完整…

Java进阶学习笔记2——static

static: 叫静态,可以修饰成员变量、成员方法。 成员变量按照有无static修饰,分为两种: 类变量:有static修饰,属于类,在计算机中只有一份,会被类的全部对象共享。静态成员变量。 实…

慢性乙型肝炎肝脏剪切波弹性成像的深度学习放射学显著改善了肝纤维化的诊断性能 | 文献速递-深度学习结合影像组学

慢性乙型肝炎肝脏剪切波弹性成像的深度学习放射学显著改善了肝纤维化的诊断性能 | 文献速递-深度学习结合影像组学 麦田医学 美好事物中转站 2024-05-21 11:03 Title 题目 Deep learning Radiomics of shear wave elastography significantly improved diagnostic performa…

面试准备-项目【面试准备】

面试准备-项目【面试准备】 面试准备自我介绍:项目介绍: 论坛项目功能总结简介数据库表设计注册功能登录功能显示登录信息功能发布帖子评论私信点赞功能关注功能通知搜索网站数据统计热帖排行缓存 论坛项目技术总结Http的无状态cookie和session的区别为什…

《我的阿勒泰》观后感(二、返璞归真也是一种美)

看了李娟的小说《我的阿勒泰》逐渐悟到一个道理,返璞归真也是一种美,没必要每个人的人生三十年的年华,都去追求房子,车子等逐渐贬值的东西。人究竟应该追求怎样的一种活法? 什么是城市化?这是我听到的最好…

UniApp 2.0可视化开发工具:引领前端开发新纪元

一、引言 在移动互联网迅猛发展的今天,移动应用开发已经成为前端开发的重要方向之一。为了简化移动应用开发流程,提高开发效率,各大开发平台不断推出新的工具和框架。UniApp作为一款跨平台的移动应用开发框架,自诞生以来就备受开…

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(十八)- JUC(4)

线程安全分析 成员变量和静态变量是否线程安全? 如果它们没有共享,则线程安全 如果它们被共享了,根据它们的状态是否能够改变,又分两种情况 如果只有读操作,则线程安全如果有读写操作,则这段代码是临界区…

PySODEvalToolkit 使用笔记

1. 克隆仓库 首先,克隆PySODEvalToolkit仓库到你的本地机器: git clone https://github.com/lartpang/PySODEvalToolkit.git2. 创建虚拟环境 cd PySODEvalToolkit conda create -n pysodeval python3.73. 安装依赖 pip install -r requirements.txt4…