c语言

C语言实验(三)

て烟熏妆下的殇ゞ 提交于 2020-03-28 17:45:28
第四章分支结构实验 实验项目: 第四章实验设计 实验项目: 4.3.1 if语句的应用 ,4.3.2 switch case的应用 ,4.3.3 switch case嵌套if语句的应用 ,4.3.4 switch case结构嵌套的运用 ,4.3.5 分析程序, 计算器。 姓名:蔡鹏 实验地点:家中  实验时间:2020.03.25 实验目的与要求: 1、 掌握各种形式的if语句语法和使用方法 2、掌握使用算术运算符和运算规则,switch case语句的使用方法 3、掌握switch case结构的嵌套使用,break语句的用法 4、熟练掌握C语言的运算符,即运算符的优先级和结合性、运算规则、运算对象类型等。 实验内容: 1 ·实验练习:4.3.1 if语句的应用 (1)问题的简单描述:读入3个表示箱子长、宽、高的整数值,判断并输出是正方体还是长方体。 (2)实验代码: #include<stdio.h> int main() { int l,w,h; printf("请输入箱子的长、宽、高:\n"); scanf("%d,%d,%d",&l,&w,&h); if(l==w&&w==h&&l==h) printf("该箱子是正方体。\n"); else printf("该箱子是长方体。\n"); return 0; } (3)问题分析:比较长,宽,高用 l==w&&w==h&

关于C语言的assert(断言)

☆樱花仙子☆ 提交于 2020-03-27 14:58:41
3 月,跳不动了?>>> 1、assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: #include <assert.h> void assert( int expression ); assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。 2、使用assert的缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。在调试结束后,可以通过在包含#include <assert.h>的语句之前插入 #define NDEBUG 来禁用assert调用,示例代码如下: #include <stdio.h> #define NDEBUG #include <assert.h> 3、一些建议: 3.1、使用断言捕捉不应该发生的非法情况。不要混淆非法情况与错误情况之间的区别,后者是必然存在的并且是一定要作出处理的。 3.2、在函数的入口处,使用断言检查参数的有效性(合法性)。 3.3、在编写函数时,要进行反复的考查,并且自问:“我打算做哪些假定?”一旦确定了的假定,就要使用断言对假定进行检查。 3.4、一般教科书都鼓励程序员们进行防错设计,但要记住这种编程风格可能会隐瞒错误。当进行防错设计时,如果“不可能发生”的事情的确发生了

Linux系统C语言开发环境学习

喜你入骨 提交于 2020-03-27 13:25:58
实验四 Linux系统C语言开发环境学习 项目 内容 这个作业属于哪个课程 < 班级课程的主页链接 > 这个作业的要求在哪里 < 作业要求链接接地址 > 学号-姓名 <17043221-汪贵军> 作业学习目标 1.学习Linux系统下C语言开发环境的搭建和使用;2.学习Linux系统环境C语言开发过程。 1.安装C语言开发环境 sudo apt install build-essentia #安装c语言开发环境 gcc -v #查看信息 make -v #查看信息 2.简单C语言练习 1)通过man命令查看帮助文档 man gcc #帮助查看gcc 2)命令行模式简单C语言编译链接等操作 通过vim编辑器编写一个简单的C语言程序,输出自己学号 a)预编译 b)编译 c)汇编 d)链接 可执行文件是二进制文件,同样需要用objdump命令来反汇编该文件分析文件内容 objdump -d test e)运行 ./test #运行文件 3)多文件编译 每个文件的内容分别为 对于多文件编译,我们可以一次编译链接生成可执行文 件,也可以分别编译每个C文件,最后再进行链接得到可执行文件。 前者为一次性编译,可以直接使用源文件链接生成可执行文件。后者为分别编译,会各自生成目标文件,须使用目标文件进行连接生成可执行文件。 编写一个简单的Makefile,通过make工具帮助我们进行编译

免费学习C语言

别来无恙 提交于 2020-03-26 22:53:45
深圳宝安区的朋友注意啦,信盈达春耕计划C语言第二期即将开班了,0元学习,快来抢名额。 机会是留给有准备的人,信盈达助你度过疫情难关。 报名微信17727800897 来源: 51CTO 作者: qq59a65ffb52e85 链接: https://blog.51cto.com/13258379/2482216

C语言memset()函数的用法

感情迁移 提交于 2020-03-26 01:58:23
C 库函数 void *memset(void *str, int c, size_t n) 复制字符 c(一个无符号字符) 到参数 str 所指向的字符串的前 n 个字符。 声明 下面是 memset() 函数的声明。 void *memset(void *str, int c, size_t n) 参数 str -- 指向要填充的内存块。 c -- 要被设置的值。该值以 int 形式传递,但是函数在填充内存块时是使用该值的无符号字符形式。 n -- 要被设置为该值的字节数。 例:char a[100];memset(a, ‘/0’, sizeof(a)); memset可以方便的清空一个结构类型的变量或数组。 struct sample_struct { char csName[16]; int iSeq ; int iType ; } ; int main() { struct sample_struct stTest; //一般的情况stTest方法: /* stTest.csName[0]='\0'; stTest.iSeq=0; stTest.iType=0;*/ memset(&stTest,0,sizeof(stTest)); printf("%c%d%d",stTest.csName[0],stTest.iSeq,stTest.iType); //如果是数组 /*

C语言typedef

白昼怎懂夜的黑 提交于 2020-03-25 08:37:35
#include <stdio.h> //基本类型 typedef int MyInt; //可以对typedef产生的类型名二次起别名 typedef MyInt MyInt2; // 给指针类型char *起一个新的类型名称String typedef char * String; //给结构体定义别名 //方法一:先定义类型,再声明别名 struct Student1 { int age; }; typedef struct Student1 MyStu1; //方法二:定义类型的同时声明别名 typedef struct Student2 { int age; } MyStu2; //方法三:定义类型的同时声明别名,此时省略了结构体名称 typedef struct { int age; } MyStu3; //使用枚举的方法和结构体类似 //定义结构体指针 //方法一:先定义类型,在定义指针别名 struct Student4 { int age; }; typedef struct Student4 *MyStu4; //方法二:定义类型的同时定义指针别名 typedef struct Student5 { int age; } *MyStu5; //使用typedef定义函数指针类型的别名,此时MyPoint就是函数指针类型 typedef void (

Tiny4412使用C语言实现流水灯的裸机程序

。_饼干妹妹 提交于 2020-03-25 08:37:29
3 月,跳不动了?>>> 本文转自: http://www.techbulo.com/1347.html 在前边我们使用汇编完成了一个流水灯实验: https://my.oschina.net/cht2000/blog/1622224 但是,汇编语言可读性太差,在这一节我们用 C语言来实现了同样的功能,而以后的试验也尽量用 C语言实现。 我们在编写上位机程序时,C语言程序执行的第一条指令,并不在main函数中。生成一个 C程序的可执行文件时,编译器通常会在我们的代码中加上几个被称为启动文件的代码—— crtl.o 、crti.o、crtend.o 、crtn.o 等,它们是标准库文件。这些代码设置C程序的堆栈等,然后调用 main 函数。它们依赖于操作系统,在裸板上这些代码无法执行,所以需要自己写一个。 这段代码很简单, 关键指令只有2条。自己编写的 start .S启动文件内容如下: .text .globl _start _start: ldr sp, =0x02060000 // 调用C函数之前必须设置栈,栈用于保存运行环境,给局部变量分配空间 // 参考ROM手册P14, 我们把栈指向BL2上方1K处(1K已经够用), // 即:0x02020000 (iRAM基地址) + 5K(iROM代码用) + 8K(BL1用) + 16K(BL2用) + 1K(用作栈)) bl

C语言中——关于typedef

╄→гoц情女王★ 提交于 2020-03-25 08:37:20
  typedef是一种特殊的声明方式,不过它与普通声明 的含义大不相同。普通声明的主角是“变量”,它或是创建一个新变量或是对外文件变量使用前的声明;而typedef声明的主角则是“类型”,通过这个声明对一种数据类型引入新的名字。从引入 新名字这个角度 来说,typedef声明又和宏定义有些相似:用新名字代替已有的名字。接下来的叙述会看到这两者之间的区别。 typedef是特殊的   正如一开始所说的那样,typedef是特殊的声明。最常见以及常用的方式如下: 1 /* 代码段1 */2 struct stuinfo3 {4 char id[20];5 char name[20];6 int age;7 };8 typedef struct stuinfo stu; /* 语句1 */    通过typedef声明为stuinfo结构体引入了一个新的名字stu。现在stuinfo结构和stu属于同一种数据类型,只不过两者在声明一个变量时使用的名字不同: 1 /* 代码段2 */2 stu mystu1;3 struct stuinfo mystu2; /* 语句2 */   通过上述两个代码段,可以再一次的理解typedef声明和普通声明的区别。代码段1通过typedef声明为stuinfo引入了一个新的名字stu;而代码段2则通过

C高阶

北城余情 提交于 2020-03-25 04:30:15
C Primer Plus》 C语言经典教程之一,讲述了C语言大量的细节来深刻诠释概念。条理清晰,易于入门,唯一的缺陷是太厚…… 《 POINTERS ON C》 对指针这一C语言中最重要的概念提供了深入的讨论 《C Traps and Pitfalls》 从词法分析、语法语义、连接、库函数、预处理器、可移植性缺陷等几个方面分析了C编程中可能遇到的问题,适合初学者获取进一步的编程经验,在编程能力上获得进阶 《Expert C Programming Deep C Secrets》 当对C编程有了一定经验后,可以对进一步提高水平 《Compilers:Principle,Techniques and Tools》和《汇编语言》 对C语言和其他语言理解的终极目标和最高水平是对其汇编和编译的每一个细节了如指掌。达到这个程度,此时便可以称作“精通”和“专家”了。 ———————————————— 版权声明:本文为CSDN博主「取次花丛懒回顾」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/shaqoneal/article/details/50119497 来源: https://www.cnblogs.com/lemaden/p/12563666.html

Word Count(C语言)

妖精的绣舞 提交于 2020-03-25 04:26:15
1.项目地址 https://github.com/namoyuwen/word-count 2.项目相关要求 2.1 项目描述 Word Count 1. 实现一个简单而完整的软件工具(源程序特征统计程序)。 2. 进行单元测试、回归测试、效能测试,在实现上述程序的过程中使用相关的工具。 3. 进行个人软件过程(PSP)的实践,逐步记录自己在每个软件工程环节花费的时间。 2.2 WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数、单词数和行数。这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数。 实现一个统计程序,它能正确统计程序文件中的字符数、单词数、行数,以及还具备其他扩展功能,并能够快速地处理多个文件。 具体功能要求: 程序处理用户需求的模式为: wc.exe [parameter] [file_name] 基本功能列表: wc.exe -c file.c //返回文件 file.c 的字符数(已完成) wc.exe -w file.c //返回文件 file.c 的词的数目 (已完成) wc.exe -l file.c //返回文件 file.c 的行数(已完成) 扩展功能: -s 递归处理目录下符合条件的文件。 -a 返回更复杂的数据(代码行 / 空行 / 注释行)。 空行