C语言
文章平均质量分 79
小Armand
这个作者很懒,什么都没留下…
展开
-
编写一个函数,任意输入一个整形数后可以得到其对应2或16进制结果
递归调用#include <stdio.h>void _fun(int num){ int data = num/2; if(data != 0) { _fun(data); } printf("%d ",num%2);}原创 2020-11-04 14:22:25 · 644 阅读 · 0 评论 -
TCP多路复用示例代码
接口声明:int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);参数:nfds:所有正在监测的套接字的最大值加1readfds:读就绪文件描述符集合writefds:写就绪文件描述符集合exceptfds:异常就绪文件描述符集合timeout:超时控制返回值:成功:就绪文件描述符总数(当超时返回...原创 2020-10-11 12:44:07 · 369 阅读 · 0 评论 -
选择排序算法
1、暂定第一个元素为最小元素,往后遍历,逐个与最小元素进行比较,如发现有更小者,与先前的最小元素交换位置。达到更新最小元素的目的。2、一趟遍历完成后,能确保第一个元素为最小元素,然后从第二个元素开始遍历。3、在新的一轮排序中重复第1、2步骤,直到范围不能缩小为止,排序完成。/* 选择排序算法 */int func(int *src,int len){ int i,j; int data; for(i=0;i<len-1;i++) { for(j=i+1; j<l原创 2020-08-04 15:24:03 · 96 阅读 · 0 评论 -
奇升偶降
使用双向循环链表对顺序数进行奇升偶降排列/* 奇升偶降 */bool odd_up_even_down(info_ptr head){ if(head == NULL) { return false; } struct list_head *pos = (&head->small_list)->prev; struct list_head *temp = pos; info_ptr node ; /* 从尾向头循环 思路:定义一个temp来跟随pos,在p原创 2020-07-31 11:11:50 · 738 阅读 · 0 评论 -
利用目录操作函数,读取一个目录里面所有的文件
最近学了IO编程方面,就想用IO编程来检索出一个文件夹里面所有的文件:具体实现过程:就是利用目录文件判断来通过不断递归调用不断将目录里面的文件搜索出来,并将搜索到的普通文件名和文件大小以链表方式保存。参考代码:/* 2、读取一个目录里面所有的文件(包括它的子目录里面的文件),并打印出来(递归) (把所有文件名插入到链表) */#include <stdio.h>#include <string.h>#include <strings.h>#incl原创 2020-06-17 13:08:11 · 536 阅读 · 0 评论 -
利用系统IO和标椎IO实现linux中cp功能
/*标椎IO实现*/#include <stdio.h>#include <stdlib.h>int my_cp(const char *src,const char *obj);int main(int argc,const char **argv){ if(argc < 1) { printf("no the file or dictory\n"); return -1; } else if(argc < 2) { print.原创 2020-07-24 20:11:47 · 309 阅读 · 0 评论 -
static和extern关键字的使用
static 多种用法:将存储区域设定为数据段修饰局部变量:使得局部变量由原来存储在栈内存,修改为存储在数据段。修改标识符的可见范围(有外部链接----->内部链接类型)修饰全部变量:使得全局变量由原来跨文件可见,变成仅限于文件可见。修饰普通函数:使得函数由原来跨文件可见,变成仅限于本文件可见。作用: 可确保全局变量或函数只在本文件生效,不与其他文件的同名变量或函数冲突。extern 用法:修饰变量或函数:声明其来自外部文件。注意: 如果变量或函数定义时候添加了stati原创 2020-07-14 13:53:37 · 94 阅读 · 0 评论 -
C代码实现strtok函数功能
strtok函数功能是根据自己设置好的分隔符对字符串进行分割,分割结束返回NULL。通过查阅源代码自己仿照写了一个strtok函数功能的代码,算法比较冗长还没有优化,但大致功能可以实现,供给大家参考。/******************************************************************** 功能:根据设置的分隔符对字符串进行分割,代码还需优化,敬请期待。。。。时间:2020-7-9********************************原创 2020-07-11 16:07:51 · 729 阅读 · 0 评论 -
指针习题
这部分指针习题对指针理解有很好巩固作用:1、设有定义:int a,*pa=&a;以下 scanf 语句中能正确为变量 a 读入数据的是( )A) scanf(“%d”,pa); B) scanf(“%d”,a);C) scanf(“%d”,&pa); D) scanf(“%d”,*pa);2、若有以下定义和语句#includeint a=4,b=3,*p,*q,*w;p=&a;q=&b;w=p;q=NULL;则以下选项中错误的语句是( )A) *q=0; B原创 2020-07-09 08:46:51 · 1424 阅读 · 1 评论 -
插入排序算法
/* 直接插入排序法 */ #include <stdio.h>int func(int *arry,int len);int main(int argc,const char **argv){ int a[12] = {32,5,34,64,24,3,56,4,76,4,0,1}; func(a,12); int i; for(i=0;i<12;i++) printf("%d\t",a[i]); return 0;}int func(int .原创 2020-07-08 19:50:54 · 1404 阅读 · 0 评论 -
杨辉三角
/* 杨辉三角 */#include <stdio.h>#include <string.h>int func(int n);int main(int argc,const char **argv){ int n; while(1) { printf("pls input n:\n"); scanf("%d",&n); func(n); } return 0;}int func(int n){ int a[n+1][n+.原创 2020-07-08 10:10:16 · 76 阅读 · 0 评论 -
编写一个程序,去掉给定字符串中重复的字符。如google,输出gole
#include <stdio.h>#include <string.h>int func(char *str);int main(int argc,const char **argv){ char str[256]; bzero(str,256); while(1) { fgets(str,256,stdin); //scanf("%s",str);while(getchar()!='\n'); func(str); printf("%s.原创 2020-07-07 17:21:08 · 1149 阅读 · 0 评论 -
编写一个函数 Fibonacci(),要求程序输出第 n 项斐波那契数,n 由用户输入。 斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21, … …
#include <stdio.h>#include <string.h>int my_Fibonacci_1(int n);int my_Fibonacci_2(int n);int main(int argc,const char **argv){ int n; while(1) { printf("input a int_number:\n"); scanf("%d",&n);while(getchar() != '\n'); if(n.原创 2020-07-07 09:57:49 · 3337 阅读 · 0 评论 -
int *p2=(int *)((int)a+1);
***今天看到这一道分析起来还是很有意思的,对内存的要有一定理解才能分析出来,现在我就以个人理解来对该题进行分析。***在 x86 平台下,分析以下代码的输出结果:#includeint main(void){int a[4] = {1, 2, 3, 4};int *p1=(int *)(&a+1);int *p2=(int *)((int)a+1);printf("%x, %x\n", p1[-1], *p2);return 0;}为了更好理解,画内存图来分析理解从图.原创 2020-07-06 20:40:05 · 1110 阅读 · 6 评论 -
解剖GCC编译器原理
解剖GCC编译器原理编译过程流程如图所示1. 预处理过程:预处理过程就是解析源程序过程中有文件包含,宏定义、条件编译,如#include,#define, #if等。把文件包含语句所指定的文件所包含进来,覆盖原来的#include语句,所有的宏定义都被展开。并且在预处理阶段将文件的注释给去除,把语句行号添加进来。想通过预处理来查看预处理文件是否顺利展开可以使用如下指令: gcc hello.c -o hello.i2.编译过程编译过程也称为汇编过程,这个过程是将c语言程序转译为汇编语言。编原创 2020-07-06 13:11:49 · 389 阅读 · 0 评论 -
使用26个字母金字塔
使用26个字母金字塔实现效果如下图所示:在这里插入代码片具体实现方式分析:[1] 首先根据输入字母打印出相应层数[2]根据金字塔特点确定实现流程```c#include<stdi.h>int main(){ while(1) { } return 0; }...原创 2020-07-01 20:06:00 · 657 阅读 · 0 评论 -
基于c语言学生信息管理系统
#include<stdio.h>#include<strings.h>#include<string.h>#include<stdlib.h>char password[6]="123456";enum message{ exit_T, name , sex, age, num, phone_number, score_c}; struct score{ int Chinese; int math; int Engli.原创 2020-05-20 15:26:56 · 618 阅读 · 0 评论 -
C语言经典笔试题(一)
一、请写出 float x 与“零值”比较的 if 语句:【标准答案】 const float EPSINON = 0.00001; if ((x >= - EPSINON) && (x <= EPSINON) 错误写法:if(x==0.0)if(x!=0.0)注意:不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”此类形式。*二、请写出 char p原创 2020-05-19 19:34:49 · 1231 阅读 · 3 评论 -
冒泡排序算法
使用c语言实现冒泡算法/*函数功能:冒泡排序参数:传入需要排序的数组的地址和数组的长度返回:排序好的数组地址*/int *sort(int *src,int len){ int i,j,k,data; printf("%d",len); for(i=0,k=len;i<len;i++) { for(j=0;j<k-1;j++) { if(src[j]>src[j+1]) //从小到大排序 { data = src.原创 2020-05-19 14:52:52 · 114 阅读 · 0 评论 -
内存思考题
**两道有意思的内存思考题1. 第一道题:char *GetMemory(void){ char p[] = "hello world"; return p;}void Test(void){ char *str = NULL; str = GetMemory(); printf(str);}原创 2020-05-18 11:17:56 · 536 阅读 · 0 评论 -
C语言联合体(union)
一、C语言联合体(union)1. 概念:联合体里面所有成员都共用一块内存,使用时候,所有成员属性选一个。2. 定义-定义联合体数据类型union sorce{ int a; char b; short c;}定义联合体变量 union a aaa;-访问联合体的成员aaa.a = 5联合体内存分分配原理如图所示所以成员变量中char类型数据只占其中的一个字节,short类型数据只占其中的两个字节。二、利用联合体可以判断主机的大小端序大端序:数据原创 2020-05-17 08:48:57 · 2606 阅读 · 0 评论 -
C代码实现strcpy函数功能
C语言实现类似strcpy函数功能功能描述:strcpy能实现将某一个一个数组字符串拷贝到另外的一个数组中实现字符串的复制。char *my_strcpy(char *str,char *src);int main(int argc,const char **argv){ char buf[10]; bzero(buf,10);//清空数组 my_strcpy(buf,"helloword"); printf("%s",buf); return 0;}char *my_str原创 2020-05-15 16:02:24 · 1808 阅读 · 0 评论 -
不同的数据类型定义变量
不同的数据类型定义变量(1)一个整型数 An integerint a;(2)一个指向整型数的指针A pointer to integerint *p;(3)一个指向指针的指针,它指向的指针是指向一个整型数(二级指针)A pointer to pointer to integnerint **q;(4)一个有10个整型数的数组 An array of 10 integerint array[10];(5)一个有10个指针的数组,该指针是指向一个整型数An array of 10 poin原创 2020-05-15 15:32:18 · 823 阅读 · 0 评论 -
C语言中getchar()函数使用场景
C语言中getchar()函数使用场景- 在我们每次使用scanf()这个函数的时候通常都是输入一个字符后敲击回车键作为输入结束,但回车键也是有对应的一个ascii码的,也就是说输入的字符后面也就带有一个’\n’这个字符。*所以有采用两次scanf()这个函数作为输入的时候就会出现将’\n’的最为最后第二次输入的字符就会出现错误*下面给出一个会出现错误的代码int main(int argc,const char **agrv){ char a,b; scanf("%c",&a原创 2020-05-14 20:22:06 · 206 阅读 · 0 评论 -
C语言对结构体数组进行赋值打印实例
C语言对结构体数组进行赋值打印1. 定义一个学生结构体数组有4个学生,通过键盘给他的成员赋值,然后遍历打印这里的数据类型是 struct student定义一个结构体数组和定义一个普通数据类型,使用方法也类似,只要明白C语言中的数据类型这个概念就行,下面就给出一个结构体数据类型数组的实例供各位参考学习。struct student{ char name[10]; char sex[5]; unsigned int age; int num;}int main(int argc,con原创 2020-05-14 11:24:13 · 6025 阅读 · 0 评论 -
类似C语言中atoi函数功能
C语言算法训练整形数返回:相应整形数*/long my_atio(char *p){long num = 0;unsigned int flag = 1;while(p) //’\0’对应数字是0{if(p<‘0’ || p>‘9’){if(p == ‘-’) //考虑负数情况{flag = 0;}else{break;}}if(flag){num = num10;原创 2020-05-13 17:55:14 · 709 阅读 · 0 评论