C语言 - 技术教程文章

C语言-srand种子详解

rand() 函数取得随机数的时候是通过一个叫做"种子"的变量经过计算得出一个数值, 然后得出的数值再作为新的"种子"参与下一次的运算, 这样就得到了所谓的随机数srand() 的作用就是用给定的数字来代替种子, 比如用当前的时间做种子, 因为每次运行程序时间都不一样, 所以 rand() 函数给出的随机数也不一样, 这样能使随机函数更具有随机性所以使用 srand() 设置一次种子即可(可以使用时间戳, 因为每次执行时间不一样, 此时 srand() 不要...

C语言指针,你还觉得难吗?

在研究式学习-c语言程序设计指针式这样介绍的:内存中存储变量的第一个单元的地址 称为指针,存放指针的变量称为指针变量;变量的访问方式有:直接访问方式:按变量名查找其首地址间接访问方式:通过指针访问int swap(int p,int q){ int temp; temp=p; p=q; q=temp;}现在理解了这个函数为什么要用指针了;因为C语言中实参变量和形参变量之间的数据传递是单向的值传递方式,虽然运用指针被调函数不能改变实参指针变量的值,但可以改...

C语言小练习【代码】

//递归求数的阶乘 #include <stdio.h> long recursion(int n); void main() {int n;long result;scanf("%d",&n);result=recursion(n);printf("%d!=%ld\n",n,result);} long recursion(int n) {long tmp_result;if(n==0 || n==1){tmp_result=n;}else if(n<0){printf("error input");}else{tmp_result=recursion(n-1)*n;}return tmp_result; } 原文:https://www.cnblogs.com/yanweichen/p/10322275.html

word2vec中文类似词计算和聚类的使用说明及c语言源代码【图】

word2vec相关基础知识、下载安装參考前文:word2vec词向量中文文本相似度计算文件夹:word2vec使用说明及源代码介绍1.下载地址2.中文语料3.參数介绍4.计算相似词语5.三个词预測语义语法关系6.关键词聚类1、下载地址 官网C语言下载地址:http://word2vec.googlecode.com/svn/trunk/ 执行 make 编译word2vec工具:Makefile的编译代码在makefile.txt文件里,先改名makefile.txt 为Makefile,然后在当前文件夹下运行make进行编译,生成...

程序设计入门——C语言 第2周编程练习 信号报告(5分)【代码】

2 题目内容:无线电台的RS制信号报告是由三两个部分组成的:R(Readability) 信号可辨度即清晰度.S(Strength) 信号强度即大小.其中R位于报告第一位,共分5级,用1—5数字表示.UnreadableBarely readable, occasional words distinguishableReadable with considerable difficultyReadable with practically no difficultyPerfectly readable报告第二位是S,共分九个级别,用1—9中的一位数字表示Faint signals, barely perceptib...

反汇编观察C语言的子函数跳转和参数的传递【图】

反汇编观察C语言的子函数跳转和参数的传递C是高级语言,在使用的时候我们不知道其子函数的跳转和参数的传递原则,现在通过反汇编的方式带着大家观察一下,反汇编后的代码执行,与程序入堆栈的原理。下面这个C代码是实现一个4个参数的加法运算。正文 接着带该函数进行反汇编,在该命令下输入:arm-linux-gnueabi-gcc -S sum.c得到该汇编的代码。如下所示汇编代码高能预警 在上面这段汇编中有几点说明:第一如果子函数的参数个数小...

C语言中的循环语句练习【代码】【图】

注:练习题目均出自《明解C语言 入门篇》一、do语句1,求多个整数的和及平均值#include<stdio.h> int main(void) {int sum = 0; //和 int cnt = 0; //整数个数 int retry; //判断是否继续do{int t;printf("请输入一个整数:");scanf("%d",&t);sum = sum + t;cnt = cnt + 1;printf("是否继续?<Yes...0/No...9:");scanf("%d",&retry);} while(retry == 0);printf("和为%d,平均值为%.2f。\n",sum,(double)sum / cnt);return0; } 二...

简单的通讯录(C语言实现)【代码】【图】

通讯录实现的功能 2017-01-11: 1、添加联系人 2、删除联系人 3、查找联系人 4、修改联系人 5、显示联系人 6、清空通讯录 7、按照姓名进行排序 8、退出程序 该通讯录将联系人的信息保存在文件中 在VS2013中打开文件直接创建,创建建的文件名字是contact.dat,操作步骤如下:使用的文件操作函数如下: fopen 函数原型为 FILE *fopen( constchar *fname, constchar *mode ); 打开由fname(文件名)指定的...

C语言基础丨运算符之赋值运算符(五)【图】

赋值操作是程序设计中最常用的操作之一,C 语言共提供了 11 个赋值运算符,均为二元运算符,其中仅有一个为基本赋值运算符 =,其余 10 个均是复合赋值运算符,即:(1)简单赋值运算符" = "用法: 变量标识符 = 表达式作用:将一个数据(常量或表达式)赋给一个变量 ,左侧必须是变量,不能是常量或表达式注意:1>.在程序中可以多次给一个变量赋值,每赋一次值,与该变量相应的存储单元的数据就被更新一次,内存中当前的数据就是最...

结对编程--C语言子程序词法分析【代码】

一、问题描述C语言小子集表的定义2.设计单词属性值,各类表格(表示标识符表、常量表),单词符号及机内表示,采用标准输入和输出的方式。程序从键盘接收代码,遇到代码结束符“#”时结束,并将词法分析的结果输出到屏幕上。要求实现:(1)对正确源程序的识别;(2)对包含有注释//和/* */的源程序的识别;(3)对包含错误标识符的源程序的识别。二、审查表代码 Conding链接功能模块名称c语言小子集的词法分析 审查人王屹超 审查日期2018...

C语言常见单链表面试题(1)【代码】

1、删除单链表的非尾节点解题思路:按照一般的思路单链表删除节点是必须知道其前驱节点才能删除,而在本题中不知道前驱节点,所以转换思路,先将需要删除的节点跟其后继节点的数据域交换,然后再删除既可。void EraseNotTail(pLinkNode pos) { assert(pos);pLinkNode del = NULL;//删除的节点del = pos->next;pos->data = pos->next->data;pos->next = pos->next->next;free(del);del = NULL; }2、冒泡排序单链表void BubbleSo...

C语言 · 乘法表【代码】

问题描述  输出九九乘法表。输出格式  输出格式见下面的样例。乘号用“*”表示。样例输出下面给出输出的前几行:1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=94*1=4 4*2=8 4*3=12 4*4=16…… 1 #include<stdio.h> 2int main(){ 3int i,j,n; 4for(i=1;i<=9;i++){ 5for(j=1;j<=i;j++) 6 printf("%d*%d=%d ",i,j,i*j); 7 printf("\n"); 8 } 9 } 格式更加漂亮一点的(但是输出样式不符题意): 1 #include<stdio.h>2i...

C语言结构体的内存对齐问题【代码】【图】

在C语言开发当中会遇到这样的情况: 1 #include <stdio.h>2 3struct test {4int a;5char b;6};7 8int main(int argc, constchar * argv[])9{ 10 printf("%lu\n", sizeof(struct test)); 11return0; 12 }sizeof操作输出的结果是8,可是int和char类型的长度加起来只有5,那么为什么输出了8呢?  这就牵扯到结构体的内存对齐问题,事实上,结构体中的变量在内存当中并不是以一种连续紧凑的方式存储的。  上面这个例子是一种最...

一起talk C栗子吧(第二回:C语言实例--判断闰年)

各位看官们,大家好,从今天开始,我们讲大型章回体科技小说 :C栗子,也就是C语言实例。闲话休提,言归正转。让我们一起talk C语言实例吧! 看官们,上一回中咱们给小说做了个开头,这一回咱们正式说C例子,这回说的例子是:判断闰年。看官们,闰年是什么?这个是地理天文方面的概念。如果不明白的话,自己百度去,哈哈。我也偷一把懒。看官们,判断闰年的方法有两种:如果某年能被4整除,但是不能被100整除,那么这一年就是闰年。...

C语言难点1之输入输出,链接,字符串操作【代码】【图】

C语言难点1之输入输出,链接,字符串操作  最近发现写了一段时间的C之后,还是有一些点并没有很好的get,我就想总结出来,写个系列博客,自己也好好的整理一下思路。这个系列主要出自三本书:《C专家编程》,《C陷阱和缺陷》,《C和指针》。有兴趣的同学可以好好看一下这几本书,对于打好C语言的基础是个非常不错的几本书。1 一些输入输出的格式对应的printf();和scanf()函数;在这里我给出常用的scanf格式码,和printf()函...

观察者模式(C语言实现)

一. 概述 Observer 模式要解决的问题为:建立一个一(Subject)对多(Observer)的依赖关系,并且做到当“一”变化的时候,依赖这个“一”的多也能够同步改变。 Sbuject 相当于通知者,它提供依赖于它的观察者Observer 的注册(Attach)和注销(Detach)操作,并且提供了使得依赖于它的所有观察者同步的操作(Notify)。 Observer 相当于观察者,则提供一个Update操作,注意这里的 Observer 的 Update 操作并不在Observer 改变了Su...

C语言算法:十进制转为二进制

#include<stdio.h> int main() {int b,i,c=0,a[30];scanf("%d",&b);while(b!=0){i=b%2;a[c]=i;c++;b=b/2;}c--;//因为c代表存入数据的长度而下表范围是0~c-1for(;c>=0;c--)//倒序输出即为这个数字对应的二进制{printf("%d",a[c]); }printf("\n");return 0; }原文:http://blog.csdn.net/u012110719/article/details/41148463

C语言笔记

C语言笔记 基础知识 数据类型序号类型与描述1基本类型: 它们是算术类型,包括:整数类型、浮点类型2枚举类型: 也是算术类型,被用来定义只能使用某些整型值的变量,使用时需要程序员先使用eumn关键字来声明定义3Void类型: 用于函数,指明函数的返回值或参数。作用于变量会发生编译错误4派生类型: 包括:指针类型、数组类型、结构类型、联合体类型、函数类型补充:1.函数类型是指函数返回值的类型,数组类型与结构类型统称为聚会...

C语言break语句【代码】

break语句不能用于循环语句和switch语句之外的任何其他语句中;breakh中断switchbreak如果用于循环,是用来终止循环;break如果用于switch,则是用于终止switch。break不能直接用于if,除非if是属于循环内部的一个子句(这种情况break用于终止循环)。#include <stdio.h>int main () {/* local variable definition */int a = 10;/* while loop execution */while( a < 20 ){printf("value of a: %d ", a);a++;if( a > 15){/* term...

c语言中typeof关键字

为什么因为一个关键字而专门写一篇随笔呢?因为这个关键字在Linux里面地位非同一般!这个关键字typeof在linux内核里面使用非常广泛!下面这两个等效声明,用于声明int类弄的变量atypeof(int) a;typeof(‘b‘) a; //相当于获取‘b‘的类型,定义一个变量a下面用于声明指针和数组typeof(int*) p1,p2;typeof(p1) p2 //p1与p2的类型一致int *p1,*p2;typeof(int [10]) a1,a2;int a1[10],a2[10];如果将typeof用于表达式,则该表达式不会执行...

C语言学习第一天~Eclipse MinGW环境搭建【图】

一、环境准备windows二、Windows环境下gcc编译器1.MinGW介绍 MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境,它是Minimalist GNU on Windows的略称。  实际上 MinGW 并不是一个 单纯的C/C++ 编译器,而是一套 GNU 工具集合。除开 GCC 以外,MinGW 还包含有一些其他的 GNU 程序开发工具 (比如 gawk bison 等等)。  开发 MinGW 是为了那些不喜欢工作在 Linux(FreeBSD) 操作系统而留在 Windows 的人提供一套...

C语言指针理解patr1【代码】

今天在看《Head First C语言》中,书中的代码是*lat=*lat+1;我则写成了*lat++;结果是并不能得到lat指针的内容加一。之后发现原来在C语言中*解指针运算符 与++后自增运算符的优先级是相同的,*p++,后自增运算符++只作用于p,并不能作用于*p(如果*的优先级更高的话才行)。之后在调试中又发现了一个之前不了解的地方,在C语言中栈的存储是向低地址扩展,也就是先声明的变量在内存中反而内存地址是更大的。 1 #include <stdio.h>2v...

C语言中const关键相关问题【代码】

1、const修饰的变量    const修饰的变量是不能通过变量再次赋值而改变。1int main{ 2char buf[4]; 3constint a = 0; //a不可改变4 a = 10; //error 5 } View Code  这个比较容易理解,编译器直接报错,原因在于“a = 10;”这句话,对const修饰的变量,后面进行赋值操作。 int main{char buf[4] = {0};constint a = 0;buf[4] = 97; //越界操作printf(“the a is %d\n”,a); }   如果const修饰的是变量是...

在Ubuntu 下编译c语言【代码】

1.平台搭建LInux下如果单纯是进行C编译环境搭建的话,是比较容易实现的,因为系统内置了编译器gcc,所以我们要做的只不过是写好c源文件然后在进行编译就可以了 如果没有gcc编译器的话,使用以下命令获取 ~# sudo apt-get install gcc同时要下载辅助工具 ~# sudo apt-get install binutils 头文件库 ~# sudo apt-get install Llibc6-dev CLibrary (用来查询语法使用方式的文档) ~# sudo apt-get install glibc-docLinux下C语言编程...

(1.21)为什么C语言要分. h和. c文件,这样有什么好处?

第一个小问题:为什么要分.h和.c文件?首先要先弄清.c和.h代表什么,.c是源文件,.h是头文件,在我看来源文件就是写的整个代码,而头文件是我们在有很多源文件时会有很多相同定义和很多重复使用的函数,这时候用一个头文件来放在一起。简而言之,我想之所以要分这两种文件的意思就在好管理和使用定义和函数。第二个小问题:这样有什么好处?我也没使用过,没办法亲自体会它有什么好处,查阅资料得知,这样的好处是“解决文件编译时...

c语言指针的强制转换【图】

在c语言中经常看到以下类似的代码:int x = 1;(char*)&x;这样的形式的代码,这个里面就涉及一个类型转换的问题。以下是在VC6.0中调试的结果代码:int main(int argc, char* agrv[]) {int num = 1;printf("&num=%p \n", &num);printf("&num+1=%p \n", &num+1);printf("(char*)&num=%p \n", &num);printf("(char*)&num+1=%p \n", (char*)&num+1);return 0; }输出: (注意:输出为内存地址,不同的机器有可能值不一样)有些人可能会对...

C语言中内存的申请函数

C语言跟内存申请相关的函数主要有 alloca,calloc,malloc,free,realloc,sbrk等.  alloca是向栈申请内存,因此无需释放.   malloc分配的内存是位于堆中的,并且没有初始化内存的内容,因此基本上malloc之后,调用函数memset来初始化这部分的内存空间.  calloc则将初始化这部分的内存,设置为0.   realloc则对malloc申请的内存进行大小的调整.申请的内存最终需要通过函数free来释放.   sbrk则是增加数据段的大小; malloc/calloc/...

深入浅出剖析C语言函数指针与回调函数(二)【图】

上一篇博文的地址:http://blog.csdn.net/morixinguan/article/details/65494239这节,我们来看看函数指针与回调函数在Linux内核中的应用。从上节我们了解到,函数指针和回调函数在开发者和用户之间的一个例子,那么这节,我将引用Linux内核中文件操作结构体来详细的说明。我们首先来看到这个结构体,这段代码位于linux内核的include/linux/fs.h中,由于代码众多,我只截取几个最基本的例子:File_operations文件操作结构体:这段代码...

关于C语言

1.关于选择程序(IF语句和switch语句)a:if 语句分为简单if语句和if-else语句。if语句:if(表达式1){  语句}if-else语句:注意else要与第一个if看作一个整体,不能与第二个if结合。if(表达式1){  if(表达式2)  {    语句1   }}else{ 语句2}b:switch语句是多分支结构程序。(switch执行程序的时候,匹配到哪一项,当把匹配的那项执行完后,会继续后面的程序。如果不需要继续执行后面的程序,需要使用break语句来终...

C语言清空指针【代码】【图】

#include <stdio.h> int main() {/*********************************************** %d int* %f float\double* %ld long* %lld long long* %c char* %s 字符串* %zd unsigned long** 清空指针:* int a = 10;* int *p = &a;* //1、* // p = 0;* //2、注意不是null* //p = NULL;* 清空指针后指针将不能再访问指向的区域***********************************************/int a = 10;int *...