c语言

C语言学习笔记

允我心安 提交于 2020-02-28 19:32:54
正在学习C语言的沙雕DXS的笔记 目前在看浙大翁恺老师的视频 目录 if语句 if语句嵌套 else匹配问题 级联的if-else if if语句的常见错误 代码风格 switch语句( 多路分支 ) if语句 if语句嵌套 不管if的条件满足还是不满足,都要 接着执行if或if-else语句 else匹配问题 有{} if{}else 无{} else总是与最近的if匹配,缩进不能改变计算机当中else匹配的if 故.在if/else后跟上{}最保险,且人们不会有其他理解。 级联的if-else if 分段函数 if( expl 1) st 1; else if (expl2 ); st 2; else st3; 好处是单一出口,后续操作灵活。 if语句的常见错误 忘记{} if( );加上了分号 == or = 等于还是赋值? 格式排版 else 代码风格 在if和else之后必须加上{}形成语句块 {}内语句缩进一个tab位置 重视warning ctrl+/ 快速添加注释 switch语句(多路分支) switch-case if ( type==1 ) printf("你好"); else if ( type==2 ) printf("早上好"); else if ( type==3 ) printf("晚上好"); else if ( type==4 ) printf(

c/c++ extern 和extern "c"

混江龙づ霸主 提交于 2020-02-28 18:59:23
extern (c语言关键字):它告诉编译器,其使用的变量或者函数已经在其他模块定义了。(c语言的模块通常指文件范围) 举个例子: a.c文件 int j; 那么在b.c里面可以 extern int j;来使用a.c里面的int j。 当然可以在在a.c里面定义 static int j。通过添加static来限定int 只能在当前文件使用。 extern "c" (c++的关键字):主要用于c和c++的混合编程。他告诉编译器,被它包含的代码以c语言的方式编译和连接(c语言和c++对函数的编译会生成不同格式的名字)。使用例子如下 c++使用c代码: /* c语言头文件:cExample.h */ #ifndef C_EXAMPLE_H #define C_EXAMPLE_H int add(int x, inty); #endif /* c语言实现文件:cExample.c */ #include "cExample.h" int add( int x, int y ) { return x + y; } // c++实现文件,调用add:cppFile.cpp extern"C" //以c语言的方式编译和连接包含的代码 { #include"cExample.h" } int main(int argc, char* argv[]) { add(2,3); return0; }

初识c语言

我是研究僧i 提交于 2020-02-28 16:26:34
自我介绍: 我是西安邮电大学的一名研一学生,2020年2月28日,纪念我第一次的博客之旅,今天再次学习4年前的c语言,希望认识自己以前的不足,为自己,为未来的生活好好努力,静下心来好好学习。 目标:在本科的时候宿舍有位c语言的大神,天天看他在宿舍没事就敲代码,希望自己在一年内赶上他吧,也希望自己能学到真才实学。 如何学习编程:在以前的时候自己动力不足,没时间看,现在自己有足够的时间学习,学习编程还是要多敲代码,时间才是检验真理的唯一标准,多动手,多思考。 学习时间:在完成学校本身的学业后,希望尽可能多的学习编程,每天至少一个小时。 在了解了很多大型公司后,自己目前很想进节跳动,这是一个充满活力的公司,公司的员工都很年轻化,思想比较的新颖,创新力十足。 来源: 51CTO 作者: wx5e57bf3bd8568 链接: https://blog.51cto.com/14735930/2474159

记忆面包之C语言

帅比萌擦擦* 提交于 2020-02-28 15:32:41
字符串的输入 在C语言中,有两个函数可以让用户从键盘上输入字符串,它们分别是: scanf():通过格式控制符%s输入字符串。除了字符串,scanf() 还能输入其他类型的数据。 gets():直接输入字符串,并且只能输入字符串。 但是,scanf() 和 gets() 是有区别的: scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。 gets() 认为空格也是字符串的一部分,只有遇到回车键时才认为字符串输入结束,所以,不管输入了多少个空格,只要不按下回车键,对 gets() 来说就是一个完整的字符串。换句话说,gets() 用来读取一整行字符串。 #include <stdio.h> int main(){ char str1[30] = {0}; char str2[30] = {0}; char str3[30] = {0}; //gets() 用法 printf("Input a string: "); gets(str1); //scanf() 用法 printf("Input a string: "); scanf("%s", str2); scanf("%s", str3); printf("\nstr1: %s\n", str1); printf("str2: %s\n", str2); printf("str3

算法之递归-c语言实现

流过昼夜 提交于 2020-02-28 11:13:36
文章来源: http://blog.seclibs.com/算法之递归-c语言实现/ 在上一篇文章里说了递归,这里就使用其中的上楼梯问题来进行代码实现,在上一篇文章里也说过了中间会有重复计算的情况,这里我们使用一维动态数组来进行存储,一维数组的索引值就与楼梯层数相同,可以更加清晰的理解其中的含义,代码如下 如果需要下载代码,请移步至文末 代码: GitHub 文章首发公众号和个人博客 公众号:无心的梦呓(wuxinmengyi) 博客: http://blog.seclibs.com/ 来源: oschina 链接: https://my.oschina.net/u/3677719/blog/3162945

C语言string字符串函数memset()、memchr()、memcpy()\strcat()、strncat()、strchr()

旧巷老猫 提交于 2020-02-28 05:29:55
1.memchr() 原型:void memchr(const void str, int c, size_t n) 作用:在 str的前n个字节中寻找c 返回值:一个指向匹配字节的指针 否则空指针(第一个匹配的值的指针) 2.strchr() 原型:char strchr(const char*s,int c) 返回值:匹配字节的指针 区别:memchr检测的是一段内存,strchr检测的是一个字符串 如果一段内存中有0x0的话,不能用strchr去查找的,因为遇到0x0会当作字符串的结束符停止。而mem是根据后面的n停止。 # include <stdio.h> # include <string.h> int main ( ) { char * p1 , * p2 ; char ch [ ] = { "Nthing is impossible,Believe yourself!" } ; p1 = ( char * ) memchr ( ch , 'i' , strlen ( ch ) ) ; p2 = strchr ( ch , 'i' ) ; printf ( "Memchr()搜索i:%s\n strhr()搜索i:%s" , p1 , p2 ) ; return 0 ; } 运行结果: Memchr()搜索i:ing is impossible,Believe

逆置一个二维数组(C语言)

邮差的信 提交于 2020-02-28 03:40:16
源码如下: # include <stdio.h> # include <stdlib.h> # if 0 二维数组要注意研究它的下标! # endif int main ( ) { int arr [ 4 ] [ 4 ] ; for ( int i = 0 ; i < 4 ; i ++ ) { for ( int j = 0 ; j < 4 ; j ++ ) { arr [ i ] [ j ] = rand ( ) % 100 ; printf ( "%3d" , arr [ i ] [ j ] ) ; } putchar ( 10 ) ; } printf ( "逆置后:\n" ) ; printf ( "即绕主对角线旋转180度!\n" ) ; //第一种方法 for ( int i = 0 ; i < 4 ; i ++ ) { for ( int j = 0 ; j < i + 1 ; j ++ ) { int t ; t = arr [ i ] [ j ] ; arr [ i ] [ j ] = arr [ j ] [ i ] ; arr [ j ] [ i ] = t ; } } for ( int i = 0 ; i < 4 ; i ++ ) { for ( int j = 0 ; j < 4 ; j ++ ) { printf ( "%3d" , arr [ i ]

c语言心形告白代码实现

北城余情 提交于 2020-02-28 00:51:10
c语言心形告白代码实现 1.彩色告白 include include include include define U 0.1 define V 0.053 void SetColor(unsigned short ForeColor,unsigned short BackGroundColor) { HANDLE hCon=GetStdHandle(STD OUTPUT HANDLE); SetConsoleTextAttribute(hCon,(ForeColor%16)|(BackGroundColor%16*16)); } int main() { int i,s=0,t,a=10,b=11,c=12,d=13,e=14; int z[] = {32,32,206,210,207,178,187,182,196,227,33,32,32}; float x,y; srand(time(NULL)); for(y=1.3;y>=-1.1;y-=U) { for(x=-2;x{ if((((x x+y y-1) (x x+y y-1) (x x+y y-1)-x x y y y){ if(y>=1.3-10 U||yU) { s++; if(s%4==1){SetColor(a,0);printf("l");} if(s%4==2){SetColor(e,0);printf(

天生棋局(C语言)

廉价感情. 提交于 2020-02-27 23:40:25
源码如下: 生成一个 10*10 的棋局,要求,初始化为零。随机置入 10 颗棋子,棋子处置为 1,并打印。 # include <stdio.h> # include <stdlib.h> # include <time.h> int main ( ) { int chess [ 10 ] [ 10 ] = { 0 } ; srand ( time ( NULL ) ) ; //注意! //方法一 int t = 10 ; while ( t -- ) { int i = rand ( ) % 10 ; int j = rand ( ) % 10 ; if ( chess [ i ] [ j ] == 0 ) { chess [ i ] [ j ] = 1 ; } else t + = 1 ; //注意! } # if 0 //方法二 // int count = 0; // while(1) //死循环 // { // int i = rand()%10; // int j = rand()%10; // if(chess[i][j] == 0) // { // chess[i][j] = 1; // count++; // if(count == 10) // break; // } // } # endif # if 0 //方法三 // int count = 0; //

C语言 fgets

穿精又带淫゛_ 提交于 2020-02-27 19:25:50
C语言 fgets #include <stdio.h> char *fgets(char *s, int size, FILE *stream); 功能:从stream指定的文件内读入字符,保存到s所指定的内存空间,直到出现换行字符、读到文件结尾或是已读了size - 1个字符为止,最后会自动加上字符 '\0' 作为字符串结束。 参数: s:字符串 size:指定最大读取字符串的长度(size - 1) stream:文件指针,如果读键盘输入的字符串,固定写为stdin 返回值: 成功:成功读取的字符串 读到文件尾或出错: NULL fgets()在读取一个用户通过键盘输入的字符串的时候,同时把用户输入的回车也做为字符串的一部分。 通过scanf和gets输入一个字符串的时候,不包含结尾的“\n”,但通过fgets结尾多了“\n”。 fgets()函数是安全的,不存在缓冲区溢出的问题。 案例 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #include <time.h> int main(void) { // fgets() // 可以接受空格 // 将用户输入的回车也会算作为字符串的一部分 //