c语言

C语言获取当前时间

爷,独闯天下 提交于 2020-02-19 13:54:05
#include <stdio.h> #include <time.h> void main () { time_t rawtime; struct tm * timeinfo; time ( &rawtime ); timeinfo = localtime ( &rawtime ); printf ( "\007The current date/time is: %s", asctime (timeinfo) ); exit(0); } ================= #include <time.h> -- 必须时间函数头文件 time_t -- 时间类型(time.h 定义) struct tm -- 时间结构time.h 定义下: int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; time ( &rawtime ); -- 获取时间秒计从1970年1月日起算存于rawtime localtime ( &rawtime ); -- 转当地时间tm 时间结构 asctime ()-- 转标准ASCII时间格式: 星期 月 日 时:分:秒 年 ============================

【C语言零基础教程】- 预处理指令1 - 宏定义!

回眸只為那壹抹淺笑 提交于 2020-02-19 07:08:56
预处理指令简介 1. C语言在对源程序进行编译之前,会先对一些特殊的预处理指令作解释(比如之前使用的#include文件包含指令),产生一个新的源程序(这个过程称为编译预处理),之后再进行通常的编译 2. 为了区分预处理指令和一般的C语句,所有预处理指令都以符号"#"开头,并且结尾不用分号 3. 预处理指令可以出现在程序的任何位置,它的作用范围是从它出现的位置到文件尾。习惯上我们尽可能将预处理指令写在源程序开头,这种情况下,它的作用范围就是整个源程序文件 4. C语言提供的预处理指令主要有: 宏定义 、 文件包含 、 条件编译 这一篇先介绍一下宏定义,宏定义可以分为2种:不带参数的宏定义 和 带参数的宏定义。 一、不带参数的宏定义 1.一般形式 #define 宏名 字符串 比如#define ABC 10 右边的字符串也可以省略,比如#define ABC 2.作用 它的作用是在编译预处理时,将源程序中所有"宏名"替换成右边的"字符串",常用来定义常量。 接下来写个程序根据圆的半径计算周长 转存失败 重新上传 取消 在第4行定义了一个叫PI的宏,在编译预处理之后,第8行中的2 * PI *radius就会变成2 * 3.14 * radius。 输出结果: 3.使用习惯与注意 1> 宏名一般用大写字母,以便与变量名区别开来,但用小写也没有语法错误 2>

学习C语言感悟

二次信任 提交于 2020-02-19 05:37:06
还记得刚上第一节C语言课的时候,基本上一节课只有最后10分钟的内容听懂了。在此之前从没接触过C语言,想说看看书预习一下吧,可是完全找不到条理,发现老师也不是按书上的顺序讲的。当时就特别着急,想说难道第一节课就要落下么?就去图书馆找到了一本跟老师上课内容差不多的书,真的是一页一页看到了第一节课讲的内容那。这心里才有了一点点底。并在上机实验过后,我突然发现编程是一件非常有意思的事情。 就我个人而言,上课听老师讲语法知识是最重要的,老师一节课下来要讲的内容很多,所以基本上没有时间记笔记,最好记笔记的方式就是课下边回忆边总结。你能回忆起多少,就说明你这节课学到了多少。 进过两个多月的学习,我发现C语言也不是很陌生的名词了。下面是我学习C语言的一些方法,希望你们有更好的方法一起分享。 (1).课下一定要整理笔记,因为课上的学习只是瞬时记忆,要把它转为长期记忆。笔记也要常看。 (2).代码一定要自己写,不能只是懂了,眼高手低是不行的。 (3).重视每一次编译时出现的错误,特别是频繁出现的更要注意。出现错误也不要着急,多交流。也许别人会看到你发现不了的漏洞。 (4).多去图书馆上上自习,图书馆真的很多关于计算机各个方面的书。相信会给你带来惊喜! (5).课本不能丢,多看看运算符的优先级和常用字符与ASCII码对照表。 (6).多上机练习,这是学习好C语言的重要的环节,无论编程学得多好

C语言经典例74-连接两个链表

别来无恙 提交于 2020-02-19 04:33:38
目录 1 题目 2 分析 3 实现 4 运行结果 1 题目 连接两个链表,如有链表 A 和链表 B ,将链表 B 按原顺序接在链表 A 后面,链表结构为: typedef int ElementType ; typedef struct node { ElementType data ; struct node * Next ; } * List ; 2 分析 本题在逻辑上很简单,不难想出只要得到链表 A 的最后一个节点指针,然后将其指向链表 B 的第一个节点即可,注意创建链表时,链表带头节点,实际上链表 B 的第一个节点为链表 B 的头节点的下一个节点 B->Next (程序的第 57 行)。 3 实现 # include <stdio.h> # include <stdlib.h> # include <time.h> # include <unistd.h> typedef int ElementType ; typedef struct node { ElementType data ; struct node * Next ; } * List ; // 创建链表 List CreateList ( void ) { List L = ( List ) malloc ( sizeof ( struct node ) ) ; L -> data = 0 ; L ->

文献笔记(一)

孤街浪徒 提交于 2020-02-19 04:04:14
一、基本信息 标题 :基于UML的高校C语言自动考试系统的分析与设计 时间 :2018 出版源 :集宁师范学院; 领域分类 :信息与电脑 二、研究背景 问题定义 :针对高校C语言教学和考试工作需求,提出高校C语言自动考试系统的分析和设计,并使用UML建立软件模型,使用python语言实现系统,设计了一个使用灵活、交互良好的C语言考试平台。该系统的实现在一定程度上克服了传统纸质考试的局限性,对该课程教学的改革具有重要意义。 难点 :系统与外部系统以及用户之间的交互,对象接口的协作关系 相关工作 : 业务分析建模 需求分析建模 设计建模 三、研究内容 参与的外部实体及其职能 学生: ( 1 )可登录系统进行平时的练习; (2) 利用系统参加考试和相关的竞赛活动,并能够查询成绩 老师: (1) 利用系统为学生布置作业,并查看作业完成效果 ( 2 )可上传题目到系统; ( 3 )利用系统组织考试和竞赛 教务人员: (1) 为不同的人分配不同的权限; ( 2 )维护系统 管理员: ( 1 )安排考试; (2) 组织考试的进行; (3) 查看并导出考试成绩 类图 删除用户时序图 四、结论 该 C 语言自动考试系统采用基于 UML 的面向对象软件开发方法。在系统业务分析过程中从实际出发,考虑软件的使用环境,能充分发挥现代化教学的优越性,为学生及老师提供更好的平台。但该系统实现过程中还需要全面考虑

C语言数组成绩排序

扶醉桌前 提交于 2020-02-18 21:36:23
#include<stdio.h> #define N 10 int main() { int s,i,j,tmp; int a[10]={78,56,38,99,81,86,39,100,49,78}; for ( i=0; i<10;i++) printf ( "%d " ,a[i]); printf ( "\n" ); for ( i=0; i<N-1;i++) { s=i; for ( j=i+1;j<10;j++) if (a[s]>a[j]) s=j; if (s!=i) {tmp=a[s]; a[s]=a[i]; a[i]=tmp; } } for ( i=0; i<10;i++) printf ( "%d " ,a[i]); return 0; } 来源: https://www.cnblogs.com/gnnu-16lp/p/12328119.html

2020/2/18-C语言复习-字符串与指针

无人久伴 提交于 2020-02-18 21:27:03
C语言复习-字符串与指针 例一: 【字符串处理 去除C代码中的注释】      C/C++代码中有两种注释,/* */和//。编译器编译预处理时会先移除注释。就是把/*和*/之间的部分去掉,把//以及之后的部分删掉。这里约定,如果出现了/* AAAA /* BBBB */的情况,也就是/**/中出现了/*,那么第二个/*是不当作注释起始的。编写函数void removeComment(char *str)。    分析:对于字符串”int c=4,/*c累计量*/ a=3;/*变量*/ // a初值为3 ”先用 strstr函数 在str中确认”/*” 是否出现过,是则再确认”*/” 是否出现过,是则 把str中自”*/”出现位置后2个字符起始的字符串复制到str中”/*”开始的位置,覆盖掉注释部分。 循环查找直到找不到”/*”为止;再用strstr在str中确认”//” 是否出现过,是则 把出现”//”的位置上置为’\0’ 。 #include <stdio.h> #include <string.h> void removeComment(char *str) { char *p=str, *q; while ((p=strstr(p, "/*")) != NULL) { q=strstr(p, "*/"); if (q != NULL) strcpy(p, q+2); } p

实验七

China☆狼群 提交于 2020-02-18 16:33:48
1.本次课学习到的知识点: 函数 (1)定义:函数是一个完成特定工作的独立程序模块,包括函数和自定义函数两种: 1.scanf(),printf()等为库函数,由c语言系统提供定义,编程时只要直接调用即可。 2. cylinder(),fact()函数,需要用户自己定义,为自定义函数。 (2)cylinder(),fact()功能不同,但他们能实现一个计算,并可以得到一个明确的计算结果。 (3) 函数定义的一般形式为: 函数类型 函数名(形式参数表) { 函数实现过程 } (4)函数部首:由函数类型、函数名和形式参数表组成,位于函数定义第一行。 函数首部后面不能加分号,它和函数体一起构成完整的函数定义。 函数体:体现函数的实现过程。 (5)函数的调用 函数调用过程:任何c程序执行,首先从主函数main()开始 函数调用的形式:函数名(实际参数表) 实际参数可以使常量,变量和表达式 对于实现计算功能的函数,函数调用通常出现两种情况下: 赋值语句 volume=cylinder(radius,height); 输出函数的实参 printf("%f",cylinder(radius,height)); 实参和形参一一对应,数量应相同,顺序应一致。 (6)函数结果返回: return 表达式。 (7) 函数声明是一条c语言,而函数定义时的函数首部不是语句,后面不能跟分号. 2

C语言--内存泄漏之越界

…衆ロ難τιáo~ 提交于 2020-02-17 23:17:49
在软件开发过程中,我们常常会遇到内存泄漏问题。 一旦发生内存泄漏问题,就是个令大部分程序员头疼的问题,因为这太难找了,泄漏导致的死机,并不一定就是死机的地点,这就加大了开发难度。 这篇就聊聊函数传参要注意的事儿。 C 库函数 int sscanf(const char *str, const char *format, ...) 想必程序猿们都熟悉他,这个函数的作用是从字符串读取格式化输入。 很多新手使用的时候并未注意到参数是指针,而这指针空间是由使用者赋予的。如果使用不当,会导致输入的空间小于需要输出的空间,从而造成内存泄漏死机。 举个例子: uint8_t tmp_mac[6] = {0}; sscanf(mac, "%x:%x:%x:%x:%x:%x", &tmp_mac[0], &tmp_mac[1], &tmp_mac[2], &tmp_mac[3], &tmp_mac[4], &tmp_mac[5] ); 这段代码有什么问题嘛? 当然有了,sscanf的%x输出的格式是有要求的 是使用int类型输出,上例输出的格式是定义为uint8_t 也就是1个字节,而int是4个字节的,将4个字节的数值填入1个字节的空间,这就是我们常说的越界了,而这种问题,又是很难查的,要是没有注意到sscanf的这个特性,是真的不好查找越界的原因的。反正我是查了好久好久。。。(小声BB

第二次C语言实验

别来无恙 提交于 2020-02-17 23:11:48
Part1: printf(),scanf()函数的用法 /* C语言程序设计教程学习指导》p119 实验内容(2) 这是一个格式化输入输出函数及格式符使用练习 找出两处错误,修改并运行程序 为a1,a2,a3,c1,c2,c3,x,y输入数据,使得: a1=1,a2=2,a3=3,c1='a',c2='b',c3='c', x=1.5, y=2.5 */ #include <stdio.h> int main() { double x,y; char c1,c2,c3; int a1,a2,a3; scanf("%d%d%d",&a1,&a2,&a3); printf("%d,%d,%d\n",a1,a2,a3); scanf("%c%c%c",&c1,&c2,&c3); printf("%c%c%c\n",c1,c2,c3); scanf("%lf,%lf",&x,&y); printf("%lf,%lf\n",x,y); return 0; }    %d:按十进制整型输出 %f:用来输出实数,以小数形式输出,默认情况下保留小数点6位。 %c:用来输出一个字符。 %e:以指数形式输出实数。 %s:用来输出一个字符串。 %5d:表示按十进制输出数据,最小输出宽度为5个字符,右对齐,如果输出的数据小于5个字符,前补空格。如果超过5个字符,按实际数据长度输出。 %f