c语言编程
开始淡漠
这个作者很懒,什么都没留下…
展开
-
字符串常量初始化指针
今天写个小文说一说字符串地址和字符串常量。在C/C++中,一个字符串常量表示的是该字符串第一个元素的地址,就跟char指针名,char数组名表示的是字符串第一个元素的地址一样。想要打印一个地址,用一个简单的 cout << 地址; 语句就可以搞定;但是下面这两条语句将打印整个字符串char a[20] = "1234";cout << a << endl;char *p = a;cout << p << endl;这也转载 2020-06-17 15:52:23 · 1510 阅读 · 2 评论 -
检查一个数能不能表示成两个质数之和
#include int prime(int n);int main(){ int n, i, flag=0; printf("Enter a positive integer: "); scanf("%d",&n); for(i=2; i { if (prime(i)!=0) {原创 2017-06-19 22:26:23 · 849 阅读 · 0 评论 -
linux下的文件拷贝
#includeint main(int argc, char *argv[]){if (argc != 3){printf("usage : ./copy filename1 file name2\n");}char buffer[1024] = {0};FILE *file1 = fopen(argv[1], "r");原创 2017-06-04 10:17:58 · 306 阅读 · 0 评论 -
C语言二叉树的各种功能的实现
//A(B(D,E(G,H)),C(F( ,I))) //二叉树的标准输入方法#include #include #define MAX 20typedef char ElementType; struct TreeNode {Elem原创 2017-06-07 22:16:03 · 1630 阅读 · 0 评论 -
linux下的读写打开,读写文件操作
#include#include#include#include#include#includeint main(){int fd = open("./test123", O_RDWR | O_APPEND); //O_RDWR表示可以进行读写操作,O_APPEND表示光标从文档的文段开始char str[100] = {0};if (fd ==原创 2017-06-03 18:13:35 · 1775 阅读 · 0 评论 -
C语言的插入排序
#include#include#define N 8void insert_sort(int a[],int n);//插入排序实现,这里按从小到大排序void insert_sort(int a[],int n)//n为数组a的元素个数{ //进行N-1轮插入过程 for(int i=1; i { //首先找到元素a[i]原创 2017-06-18 21:22:20 · 351 阅读 · 0 评论 -
父亲分桔子问题
某桔农家共有2520只桔子, 父亲要将它们分给六个儿子,其分法如下:父亲先将2520只桔子分给六个儿子, 然后说:“老大,把你分到的桔子的八分之一给老二;老二拿到以后,连同原来的桔子分出七分之一给老三;老三拿到以后,连同原来的桔子分出六分之一给老四;老四拿到以后,连同原来的桔子分出五分之一给老五;老五拿到以后,连同原来的桔子分出四分之一给老六;老六拿到以后,连同原来的桔子分出三分之一给老大”。这样原创 2017-06-02 22:57:04 · 2533 阅读 · 0 评论 -
杨辉三角的二维数组实现
#include #include main(){ int i,j,k,n=0; int a[100][100]={0}; printf("请输入杨辉三角的行数:"); scanf("%d",&n); for (i = 0; i a[i][0]=1; for (i = 1; i for (j=1;ja[i][j]=a[i-1][原创 2017-06-07 00:01:55 · 1346 阅读 · 0 评论 -
双链表的冒泡排序
//冒泡排序 void BubbleSort(Node *pHead,Node *pTail){ int count = SizeList(pHead, pTail); Node *pMove; pMove = pHead->next; while (count > 1) { while (pMov转载 2017-06-01 22:28:13 · 811 阅读 · 0 评论 -
双向链表的功能实现:初始化,插入,按位置插入,按位置删除,按值删除,遍历打印等
#include#include #define F -1typedef struct Node* node;struct Node{node prior;node next;int value;};int init(node *head); //初始化int insert原创 2017-05-21 22:05:37 · 721 阅读 · 0 评论 -
用函数实现strcat功能
#include<stdio.h>char *cat(char *d, char *s){ char *q = d; char *b = s; int i = 0; int j = 0; if (q == NULL || b == NULL) { return NULL; } else {...原创 2017-06-16 22:52:24 · 1065 阅读 · 0 评论 -
删除字符串中的*号
问题:假设输入的字符串为****A*BC*DEF*G********,删除串中的*号后,字符串变为****ABDEFG********设置两个指向字符的指针变量t和f。先使用循环语句让t指针指向字符串中最后一个字符,而f指针指向字符串中第一个字符;再判断t和f指向的字符是否为“*”,如果为“*”,则t指针自减,f指针自增,直到遇到第一个不是的字符为止。再定义一个函数fun()用于删原创 2017-06-20 19:35:27 · 7179 阅读 · 0 评论 -
c语言实现strcpy函数
#include #include int strcpy(char *str1, char *str2);int main(){char str1[100] = {0};char *s = "helloworld";strcpy(str1, s);printf("%s\n", str1);system("pause");return 0;}原创 2017-06-08 22:27:09 · 593 阅读 · 0 评论 -
C语言实现strcmp函数
#include int strcmp(char *str1, char *str2);int main(){char *str1 = "helloworld1";char *s = "helloworld";printf("%d\n", strcmp(str1, s));return 0;}int strcmp(char *str1原创 2017-06-09 20:52:58 · 9743 阅读 · 1 评论 -
池塘夜降彩虹雨
#include<stdio.h>#include<windows.h>#include<time.h>#include<conio.h>#include<stdlib.h>#include<graphics.h>#pragma comment(lib,"winmm.lib") #define rainspeed 37转载 2018-06-07 22:57:27 · 2615 阅读 · 2 评论 -
计算2的1000次方
#include int main() { int a[1000]; int i,j; for(i = 0; i { a[i] = 0; } a[0] = 1; for(i = 0; i { for原创 2017-07-22 10:04:05 · 3756 阅读 · 0 评论 -
linux下的最简单的线程应用代码
#include#include #includestruct Demo{int a;char b;}demo = {1, 'q'};void *mythread(){printf("this is thread\n"); return ((void *)&demo);}int main(){ pthread_t id1;原创 2017-06-14 22:51:26 · 470 阅读 · 0 评论 -
信号灯的使用,PV算法交替输出AABB
通过对信号灯的PV操作实现AABB的连续输出#include#include#include#include#include#include union semun原创 2017-06-13 22:09:52 · 611 阅读 · 0 评论 -
农夫打渔问题
甲、乙、丙三位渔夫出海打鱼,他们随船带了21只箩筐。当晚返航时,他们发现有7筐装满了鱼,还有7筐装了半筐鱼,另外7筐则是空的,由于他们没有秤,只好通过目测认为7个满筐鱼的重量是相等的,7个半筐鱼的重量是相等的。在不将鱼倒出来的前提下,怎样将鱼平分为3份?问题分析根据题意可以知道:每个人应分得七个箩筐,其中有3.5筐鱼。解决该问题可以采用一个3*3的数组,数组名为a来表示3个原创 2017-06-24 20:36:27 · 743 阅读 · 0 评论 -
Linux下的消息队列的使用
消息队列是一种可以一对多的传输信号的方式#include#include#include#include#include#includestruct msgbuf{long mtype;char mtext[1024];};int main(){char buffer[1024] = {0};key_t key = ftok(".原创 2017-06-12 20:16:38 · 632 阅读 · 0 评论 -
LINUX下利用特殊文件系统shm 实现内存的共享
#include#include#include#include#includeint main(){int shmid = shmget((key_t)111, 4096, IPC_CREAT); //创建共享内存,返回共享内存标识符if (shmid == -1){perror("shmget");} char *ptr =原创 2017-06-11 16:16:36 · 500 阅读 · 0 评论 -
Linux下的管道和父子进程的应用
//下列代码主要用处是在父进程中写入值,在子进程中读出,再在子进程中写入,在父进程中读出,体验管道的应用#include#include#include#include#includeint main(){int fd[2];char buffer[10] = {0};int ret = pipe(fd);if (ret == -1){perro原创 2017-06-10 22:30:02 · 578 阅读 · 0 评论 -
C语言内存管理
在计算机系统,特别是嵌入式系统中,内存资源是非常有限的。尤其对于移动端开发者来说,硬件资源的限制使得其在程序设计中首要考虑的问题就是如何有效地管理内存资源。本文是作者在学习C语言内存管理的过程中做的一个总结,如有不妥之处,望读者不吝指正。一、几个基本概念 在c语言中,关于内存管理的知识点比较多,如函数、变量、作用域、指针等,在探究C语言内存管理机制时,先简单复习下这几个基本概念:转载 2017-06-21 23:40:26 · 280 阅读 · 0 评论 -
linux下的父子进程的验证代码
#include#include#includeint main(){ a = 10;printf("main pid = %d\n", getpid());pid_t pid = fork(); //调用fork函数,这是有两个返回值的特殊函数,可以将程序分成两个进程if (-1 == pi原创 2017-06-05 21:08:11 · 453 阅读 · 0 评论 -
单链表的功能使用:初始化,赋值,输出,删除,按值查找,按地址查找,数据修改
#include#include typedef struct Node* A;struct Node{A next;int value;};int init(A *head); //单链表初始化int insert(A head, int x);原创 2017-05-20 22:12:34 · 2781 阅读 · 0 评论 -
单链表的插入排序
stu *view_sort_math(stu *head) { struct student *first; struct student *t; struct student *p; struct student *q; first = head->next; head->next = NULL;转载 2017-05-31 21:55:34 · 249 阅读 · 0 评论 -
c语言结构体的字符串赋值
struct student { char name[20];};#include main(){ struct student s1; s1.name = "zhang"; printf("%s\n", s1.name); return 0;}上面的这个代码会报错,原因是因为在c的结构体中,字符串不能直接这样赋值,需要原创 2017-05-15 22:57:44 · 17025 阅读 · 2 评论 -
typedef 与define的联系和区别
#define 函数的含义是替换 即 mul(a,b) a + b 即时用mul(a,b)这个形式替换a + b但是,有一个问题。题目如下#define mul(a,b) a * b#include { printf ("%d", mul(3, 5) );}得出的答案为 15,似乎没有什么问题。但是,如果改成 mul(2+1, 3+2),结原创 2017-05-14 22:15:05 · 280 阅读 · 0 评论 -
赋值语句的返回值为永真?
今天别人在敲代码时遇到了一点小问题,来问我:for(int i = 10 ; i=10;i++){ printf(" ");}如上述的就是陷入了死循环,是因为把判断语句" = = "写成了赋值语句" = "。那么为什么是死循环呢?以前一直以为是“赋值语句的返回值总为真”。但是‘ i = 0’ 是假的。所以,事实上赋值语句并没有所谓原创 2017-05-06 00:18:44 · 3810 阅读 · 0 评论 -
将输入的密码变成*的代码
将输入的密码变成*的代码#include #include void main(){printf("\n");printf("\t\t\t*********************************\n");printf("\t\t\t*********** 管理员登陆 **********\n");printf("\t\t\t****************原创 2017-05-24 23:08:51 · 4190 阅读 · 0 评论 -
i am from shanghai 将字符串倒过来输出的算法
问题: i am from shanghai 输出为 shanghai from am i思考:这道题是要将单词倒过来输出,但是英文单词的词序还是不变的。这个题目比较简单的方式其实是先完全倒叙,即变成 iahgnahs morf ma i那么,接下来要做的就是把每一个单词再次进行倒叙就行了。也就是重复进行倒叙操作,这是本题比较简单的算法。那么,如何做倒叙算法呢?有很多种方法原创 2017-05-13 23:11:02 · 820 阅读 · 0 评论 -
三个在电脑上运行很有趣的程序
今天上网找到了三个简单的但是有趣的C语言程序第一个程序:数字“刷屏”#includeint main (void){int a = 0;while (++a>0){printf("%d", a);}return 0;}第二个程序:不断打开百度网页#include int main (void){int a=1;while(原创 2017-05-04 22:08:18 · 7108 阅读 · 1 评论 -
C语言编写注意事项
1. 每个程序中一定包含main()函数, 尽管C语言中对函数命名没有限制2. printf函数永远不会自动换行,只能用\n来实现, 回车键进行的换行在编译中会出现错误信息3. 在vs2008中编译.测试需要加 system("pause"); 来暂停dos自动退出导致的printf无法显示4. 所有自定义变量 必须声明才能使用5. 每行只书写一条语句, 在运算符两边加上一个空格,转载 2017-05-12 21:43:43 · 7407 阅读 · 0 评论 -
指针和变量的值
#include int main(void){ char = "Linux"; char *ptr = &a; *ptr = 'T'; printf("\n [%s] \n", *ptr); return 0;}上述代码可以看出我们可以用指针更改变量的值但是Q:以下代码运行时会崩溃吗?#includ原创 2017-05-11 22:58:10 · 408 阅读 · 0 评论 -
有符号数和无符号数的相加和pintf的%d机制
今天在敲代码时,有这样一道题目 int i = -20; unsigned int j = 10; i+j =? 即有符号数和无符号数相加的结果 根据老师所说,有符号数和无符号数相加的结果为无符号数,即4294967286 于是,我通过程序来验证: #include int main()原创 2017-05-06 20:43:11 · 2321 阅读 · 2 评论 -
数字时钟
今天用C语言敲了个有趣的数字时钟的代码,通过time头文件获得系统时间#include #include #include #include void HideCursor(){CONSOLE_CURSOR_INFO cursor_info = {1, 0};//后边的0代表光标不可见SetConsoleCursorInfo(GetStdHandle(S原创 2017-05-22 23:18:54 · 420 阅读 · 0 评论 -
数组和地址的关系
如下代码: #include int main() { int a[3]={0,1,2}; printf("%p", &a[0]); // %P输出地址。&a[0]表示数组的首元素地址 printf("%p", &a); // &a表示输出数组的地址原创 2017-05-07 19:52:41 · 1097 阅读 · 0 评论 -
二维数组和指针运算
代码如下:main(){ int a[3][4]={{1,2,3,4},{3,4,5,6},{5,6,7,8}}; int i; int (*p)[4]=a,*q=a[0]; for(i=0;i { if(i==0) (*p)[i+i/2]=*q+1;else p++,++q; } for(i=0;i原创 2017-05-16 23:30:19 · 1200 阅读 · 0 评论 -
waitpid函数的使用
waitpid函数是暂时停止当前进程,直到有信号来或者子进程结束,接收子进程的结束状态值#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<unistd.h>#include<sys/wait.h>int main(){ int sta...原创 2017-06-15 21:42:33 · 1556 阅读 · 0 评论 -
链表的选择排序
/********************************* 链表的排序 *******************************************/ /* ========================== 功能:选择排序(由小到大) 返回:指向链表表头的指针 ========================== 选择排序的基本思想就转载 2017-05-30 21:45:31 · 353 阅读 · 0 评论