![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C语言学习笔记
一个编程初学者学习C语言所碰到的问题,以及解决问题后的总结。
归止于飞
一个正在不断学习的学生
展开
-
C语言小程序:如何用代码“画”出一个爱心
利用ASCII编码第三个字符,作为基础,然后利用三个多重循环画出一个爱心出来。要使用控制台改变运行框大小和文字的颜色,黑白的爱心不免有些诡异。#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <math.h>#include <stdlib.h>#include <conio.h>#define I 20#define R 350int main(){ system("mo原创 2021-06-15 22:17:01 · 16003 阅读 · 1 评论 -
图书管理系统(大一C语言大作业 包含主要结构体,文件操作, 如数据的修改 查询 删除等)
图书管理系统1.前言在大一下,我们的C语言课程布置了一次大作业,要求做出一个管理系统,整个系统可以设计为数据插入模块、数据修改模块、数据删除模块、数据显示模块和数据查询模块。各种信息管理系统本质上是没有太大区别的,对于数据的操作都是差不多的。2.功能及其相关函数2.1 菜单界面的构建建立两个界面函数,用来搭建主页,这里用到两个头文件#include<conio.h>定义了通过控制台的数据输入与输出函数#include<windows.h>用来调整方框大小与背景颜色原创 2021-06-15 17:10:29 · 65118 阅读 · 40 评论 -
fseek()函数的用法及其理解
函数的原型,即使用方法:int fseek(FILE *stream, long offset, int fromwhere);功 能: 重定位流上的文件指针描 述: 函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset个字 节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。返回值: 成功,返回0,否则返回其他值。注意:第一个参数stream为文件指针第二个参数offset为偏移量,整数表示正原创 2021-06-13 18:56:53 · 34616 阅读 · 1 评论 -
文本读取txt文本时,最后一行总是会重复两遍原因及解决办法
原因:没有注意\n在函数fprintf中的位置解决办法:如程序fprintf(fp, “%10s%10s%8.2f**\n**”, stu.no, stu.name, stu.total);改为fprintf(fp, “\n%10s%10s%8.2f”, stu.no, stu.name, stu.total);即可,此时再次输出程序不会改变。...原创 2021-04-24 13:39:59 · 758 阅读 · 0 评论 -
scanf()函数错误C4996解决办法(严重性 代码 说明 项目 文件 行 禁止显示状态)
问题如下:严重性 代码 说明 项目 文件 行 禁止显示状态错误 C4996 ‘scanf’: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.1.在文件顶部加入一行:#define _CRT_SECURE_NO_WARNINGS后可以解决。2.原创 2021-01-22 23:20:47 · 82339 阅读 · 10 评论 -
字符常量的注意事项
字符常量需要符合以下特点:1、单引号内的大小写字符代表不同的字符常量,例如‘Y’、‘y’是两个不同的字符常量。2、字符常量只能用英文单引号括起来,不能用双引号。例如“Y”不是一个字符常量,而是一个字符串。3、单引号内如果是一个空格符,也是一个字符常量。4、单引号内只能包含1个字符,‘xyz’写法是错误的。但超过1个的字符的话,除最后一个外前面的会自动失效,当然这在编程使用中应该避免。...原创 2021-01-12 20:55:37 · 2732 阅读 · 0 评论 -
C语言常量合法性的注意点
八进制常量:开头必须是0,且八进制是0-7之间组成的数,例如,029就是错误的八进制表示方式。十六进制常量:0X开头,包含字母ABCDEF,不区分大小写,例如0x与0X一样,0Xaa与0xAA,都是正确的。实数型常量:必须有小数点,例如定义double a=1就是错误的,必须写成double a=1.0。e与E,表示以10为底数的幂数,且e与E后面必须跟整数,若是小数,也是错误的,例如3.2e1.9 ,这里1.9是小数,所以错的。...原创 2021-01-12 16:28:55 · 8859 阅读 · 0 评论 -
C语言标识符命名注意点
C语言的标识符一般应遵循如下的命名规则:1、标识符必须以字母a~z、 A~Z或下划线开头,后面可跟任意个(可为0)字符,这些字符可以是字母、下划线和数字,其他字符不允许出现在标识符中。2、标识符区分大小写字母。3、标识符的长度,c89规定31个字符以内,c99规定63个字符以内。4、C语言中的关键字,有特殊意义,不能作为标识符。5、自定义标识符最好取具有一定意义的字符串,便于记忆和理解。...原创 2021-01-12 10:01:14 · 1702 阅读 · 1 评论 -
总结C语言学习字符串时常用的函数
1.确定字符串的长度strlen_s函数返回字符串的长度,它需要两个参数:字符串的地址(一维char数组的数组名),数组的大小。for(unsigned int i = 0;i < strCount;++i){ printf("The string is:\n%s contains %zu characters.\n",str[i],strlen_s(str[i],sizeof(str[i])));}2.复制字符串strcpy_s函数可以把一个字符串变量赋予给另一个字符串。它的第一个参原创 2021-01-05 15:20:40 · 158 阅读 · 0 评论 -
C语言数组,字符串的名称使用时的注意点
当我们初学数组,字符串,指针时,容易弄混其名称的作用,例如以下程序:#include<stdio.h>int main(){ int a[10]; printf("%d",a); getchar(); return 0;}此时输出结果为该数组名指向数组首元素的地址,但不能与指针混为一谈。此时可以注意a与&a的区别。a表示的是a[0]的起始地址,而&a表示的整个数组的起始地址。只是恰好他们表示的地址相等,但并不能说他们两个就完全相等。#原创 2021-01-04 22:17:08 · 274 阅读 · 0 评论 -
C语言中关键字double,float的包含范围与注意事项
思考以下程序:#include <stdio.h>const double DELTA=1e-9; //意为1乘10的-9次方,这是浮点数表示方式int main(){ int x,y; double f=0.0006; x=(int)(f*10000); printf("%d\n",x); y=(int)((f+DELTA)*10000); printf("%d\n",y); getchar(); retur原创 2021-01-04 22:01:20 · 1317 阅读 · 0 评论 -
逻辑运算符与++的使用与优先级差别
我们的教材通常会按级次区别优先级,如下图所示:那对于一个简单的编程题:int a,b,c,y;a=b=c=1;y = ++a||++b&&++c此时输出结果为:y=1,a=2,b=1,c=1按照逻辑运算符&&优先于||,结果不应该为2,2,2吗?对此,我进行了多次调试,并得出以下结论。以三个代表程序举例:#include<stdio.h>int main(){ int a,b,c,y; a=b=c=1; y = ++a||原创 2021-01-04 15:42:31 · 2042 阅读 · 2 评论 -
如何将结构指针用作结构成员
结构体指针如何用作结构成员任何指针都可以是结构体成员,包括结构指针在内。结构指针成员可以指向相同类型的结构。并使用到了链表的知识,链表便于使用且内存少。 下面是一个例子:/*将结构指针用作结构成员*/#define __STDC_WANT_LIB_EXT1__ 1#include<stdio.h>#include<ctype.h>#include<stdlib.h>typedef struct Horse Horse;//定义Horse作原创 2020-12-22 15:49:49 · 599 阅读 · 0 评论 -
C语言math.c的运用
1.fab(double x)该函数用于对double型变量取绝对值#include<stdio.h>#include<math.h>int main(){double db = -12.56;printf("%.2f", fabs(db));return 0;}2.floor(double x) ceil(double x)两个函数分别用于double类型变量的向下取整和向上取整,返回类型为double。#include<stdio.h>#inc原创 2020-12-14 09:22:06 · 2291 阅读 · 0 评论 -
如何灵活使用ASCII编码
对于ASCII编码,若灵活使用,可以将程序增加灵活性。例题:#include<stdio.h>char s[105];int a[105];int main(){ int len,rest=26,i=0,j=0,sum=0; while(gets(s) != NULL) { rest=26; sum=0; len=strlen(s); for(i=0;i<len;i++)原创 2020-11-29 10:36:33 · 6647 阅读 · 0 评论 -
关于if-else语句的使用
if-else的三种用法1.多个if语句,没有else,此时地语句类似于switch,注意运行了第一个if可能会接着运行下一个,保证每个if内的语句没有交集。2.if-else语句,else会与最近的且没有配对的if语句形成if-else结构。如果存在多个if语句搭配else语句,注意逻辑。3.加入else-if后,运行if-else语句后会停止程序的运行。...原创 2020-11-18 15:38:09 · 6737 阅读 · 0 评论