【C语言】教程文章相关的互联网学习教程文章

C语言移除链表元素【代码】【图】

删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5我的错误:一开始没考虑到删除头结点的问题if(p->next->next!=data)这是不对的。方法:哨兵节点:链接:https://leetcode-cn.com/problems/remove-linked-list-elements/solution/yi-chu-lian-biao-yuan-su-by-leetcode/如果删除的节点是中间的节点,则问题似乎非常简单:选择要删除节点的前一个结点 prev。将 prev 的 next 设置...

队列的顺序存储结构(循环队列)(C语言实现)【代码】【图】

1 #include <stdio.h>2 #include <stdlib.h>3 4#define OK 15#define ERR 26#define TRUE 17#define FALSE 08#define MAXSIZE 4 //定义队列的最大长度 9 10 typedef int status; //定义函数返回的状态,OK & ERR 11 typedef char datatype; //定义队列中每个元素的数据类型,这里暂定为字符型 12 13 typedef struct {14 datatype data[MAXSIZE]; //存储着队列中的每个元素 15int front, rear; //头指针和尾指针 16/* 17 假...

【C语言】用循环语句输出菱形【图】

//用循环语句输出菱形 #include <stdio.h> int main() {int i,j;for(i=0;i<=3;i++) //上4行{for(j=0;j<=3;j++) //上4行的左边{if(i+j<=2)printf(" ");elseprintf("*");}for(j=4;j<=6;j++) //上4行的右边{if(j-i>=4)printf(" ");elseprintf("*");}printf("\n");}for(i=4;i<=6;i++) //下3行{for(j=0;j<=3;j++) //下3行的左边{if(i-j>=4)printf(" ");elseprintf("*");}for(j=4;j<=6;j++) //下3行的右边{if(j+i>=10)...

2、C语言实现通讯录【代码】

main函数入口://test.c #include<stdio.h> #include<stdlib.h> #include<string.h> #include "address.h"//显示界面void Interface_Display() {printf("**********通讯录**********\n");printf("****1.添加联系人信息******\n");printf("****2.删除指定联系人信息**\n");printf("****3.查找指定联系人信息**\n");printf("****4.修改指定联系人信息**\n");printf("****5.显示所有联系人信息**\n");printf("****6.清空所...

c语言可变参数函数【代码】

c语言支持可变参数函数。这里的可变指,函数的参数个数可变。其原理是,一般情况下,函数参数传递时,其压栈顺序是从右向左,栈在虚拟内存中的增长方向是从上往下。所以,对于一个函数调用 func(int a, int b, int c); 如果知道了参数a的地址,那么,可以推导出b,c的地址#include <stdio.h>void test(int a, int b, int c) {printf("%p, %p, %p\n", &a, &b, &c); }int sum(int n, ...) {int * p = &n;int s = 0;for (int i = 0; i ...

C语言 百炼成钢23【代码】【图】

/* 题目59:链表如下 typedef struct _LinkList { int data; struct _LinkList*next; } LinkList; 有如下结点数据域 1 2 3 4 5 6 7 8 12 19 。。。。 要求1:创建链表 要求2:删除结点值为偶数的结点 ;70分 要求3:编写测试用例 30分 */#include<stdio.h> #include<stdlib.h> #include<string.h>typedef struct _linklist{int data;struct _linklist *pnext; }LinkList;//初始化链表头结点int InitLink(LinkList **pout/*out*/)...

第四次学习笔记(c语言基础)

1.数据类型(1)常量与变量(2)c语言一共有32个关键字(3)变量定义:数据类型 变量名(标识符) 变量赋值:变量名=值(4)标识符命令规则: 1)不能是关键字 2)标识符只能由字母、数字、下划线组成 3)见名知义 4)第一个字符必须为字母或下划线 5)不能和同一函数内的其他标识符重复 6)标识符命名大小写(5)常量定义: 1)const 数据类型 常量名 2)#define【宏定义】 常量名 数值①注意;通过#d...

【C语言】12-指向一维数组元素的指针【代码】【图】

一、用指针指向一维数组的元素 1 // 定义一个int类型的数组2 int a[2];3 4 // 定义一个int类型的指针5 int *p;6 7 // 让指针指向数组的第0个元素8 p = &a[0];9 10 // 修改所指向元素的值 11 *p = 10; 12 13 // 打印第一个元素的值 14 printf("a[0] = %d", a[0]);输出结果:,说明已经通过指针间接修改了数组元素的值,跟指向一个普通int类型变量是一样的。由于数组名代表着数组的首地址,即a == &a[0],因此第8行代码等价于:// ...

队列C语言实现【代码】

typedef struct QUEUE {ElementType *data;int front;int rear;int maxSize; }*Queue;Queue CreateQueue(int maxSize){Queue Q = (Queue)malloc(sizeof(struct QUEUE));Q->data = (ElementType*)malloc(sizeof(ElementType)*maxSize);Q->front = 0;Q->rear = 0;Q->maxSize = maxSize;return Q; }void DestroyQueue(Queue Q) {if (Q && Q->data) {free(Q->data);free(Q);} }int IsFullQueue(Queue Q){return (Q->front == (Q->rear ...

Linux 下使用C语言 gets()函数报错

在Linux下,使用gets(cmd)函数报错:warning: the ‘gets‘ function is dangerous and should not be used. 解决办法:采用fgets(cmd,100,stdin);//100为size问题解决! fgets从stdin中读字符,直至读到换行符或文件结束,但一次最多读size个字符。读出的字符连同换行符存入缓冲区cmd中。返回指向cmd的指针。gets把从stdin中输入的一行信息存入cmd中,然后将换行符置换成串结尾符NULL。用户要保证缓冲区的长度大于或等于最大的行长...

c语言关于scanf读取回车(空格)的问题

#include<stdio.h>int main(){ int a1, a2; char c1, c2; scanf("%d%d", &a1, &a2); scanf("%c%c", &c1, &c2); printf("%d %d %c %c", a1, a2, c1, c2);}输入10 20<CR> A B<CR> 的输入为什么输出是10 20 空格 A 这是由于scanf读取数据时回车会虽然不会读取但会放在缓存区下面执行的是%c将缓存区的回车读入,然后再读取A。 B读取不输出需要直接输入 10 20AB<C R> 这样可以完全输入输出 原文:https://www.cnblogs.com/old-horse/p...

在C语言中,double、long、unsigned、int、char类型数据所占字节数【代码】【图】

在C语言中,double、long、unsigned、int、char类型数据所占字节数http://blog.csdn.net/lyl0625/article/details/7350045============================实在记不住,贴下来: 和机器字长及编译器有关系:所以,int,long int,short int的宽度都可能随编译器而异。但有几条铁定的原则(ANSI/ISO制订的):1 sizeof(short int)<=sizeof(int) 2 sizeof(int)<=sizeof(long int) 3 short int至少应为16位(2字节) 4 long int至少应...

C语言指针与数组的定义与声明易错分析【代码】【图】

部分摘自《C语言深度解剖》1.定义为数组,声明为指针在文件1中定义:char a[100];在文件2中声明:extern char *a;  //这样是错误的这里的extern告诉编译器a这个名字已经在别的文件中被定义了,下面的代码使用的a是在别的文件中定义的。编译器是按文件分别编译的,当a被声明为char* a时,编译器理所当然的认为a是一个指针变量,在32位系统下占用4个byte,这4个byte存放的是地址,地址指向的空间存储的是char类型数据。程序会返回SI...

C语言的struct/union字节对齐【代码】【图】

C语言的一大优势就是对内存空间的控制,当然,一般情况下对于开发人员来说都是透明的。看一个始终困扰初学者的问题:字节对齐!先看四个重要的基本概念:1.数据类型自身的对齐值:对于char型数据,其自身对齐值为1,对于short型为2,对于int,float,double类型,其自身对齐值为4,单位字节。2.结构体或者类的自身对齐值:其成员中自身对齐值最大的那个值。3.指定对齐值:#pragma pack (value)时的指定对齐值value。4.数据成员、结构...

C语言学习篇:逗号运算符的应用【代码】【图】

今天来说说我最近碰到的一道C语言题!虽然说这个知识点应该有大神说过了,但是为了确保我确实掌握啦,还是决定将这个写出来! 先看看该题目的要求:对于一个数n,如果是偶数,就把n砍掉一半;如果是奇数,把n变成 3*n+ 1后砍掉一半,直到该数变为1为止。请计算需要经过几步才能将n变到1,并且测试案例需要多组输入!(就直接说了吧,这个是九度oj里面的编号为1031的题目要求,大家有兴趣或者想刷题,感觉这是一个不错的选择)首先看看...