
c
文章平均质量分 60
汐夜微凉
黎明升起,路在何方.
展开
-
C语言小练习
1.打印100-200之间的素数#include<stdio.h>#include<Windows.h>#include<math.h>/* 100-200间素数求法*/int main() { //1.直观法 int i = 100; for (i = 100; i <= 200; i ++) { int j = 2;...原创 2018-04-30 17:25:32 · 276 阅读 · 0 评论 -
指针数组, 数组指针,函数指针,函数指针数组,指向函数指针数组的指针
1.指针数组指针数组是指针,是一个存放指针的数组。栗子:int *arr1[10];int *arr2[5];2.数组指针数组指针,是指针。我们已经熟知:整型指针:int * pint; 能够指向整型数据的指针。浮点型指针:float * pf; 能够指向浮点型数据的指针。那数组指针呢?int (*p) [10];简析:p先和*结合,说明p是一个指针变量,然后,指向的是一个大小为10个整型的数组...原创 2018-05-22 18:38:02 · 327 阅读 · 0 评论 -
字符串翻转-经典算法
经典的三次翻转:1.先翻转字符串前n个字符;2.再翻转后面的字符;3.翻转整个字符串;比如:输入字符串s="12345abc",n=5;首先翻转前5个字符变成54321abc,然后翻转后面的字符变成54321cba,最后翻转整个字符串变成abc12345。#include <stdio.h>#include <windows.h>#include <string....原创 2018-06-03 15:45:52 · 9865 阅读 · 2 评论 -
C: 自定义类型
>C 结构体类型创建 C 数组允许定义可存储相同类型数据项的变量,结构是 C 编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。结构用于表示一条记录,假设您想要跟踪图书馆中书本的动态,您可能需要跟踪每本书的下列属性:TitleAuthorSubject Book ID定义结构为了定义结构,您必须使用 struct 语句。struct 语句定义了一个包含多个成...原创 2018-05-28 23:24:01 · 280 阅读 · 0 评论 -
C库函数:模拟实现 strncpy, strncat, strncmp
1.strncpy描述C 库函数 char *strncpy(char *dest, const char *src, size_t n) 把 src 所指向的字符串复制到 dest,最多复制 n 个字符。当 src 的长度小于 n 时,dest 的剩余部分将用空字节填充。声明下面是 strncpy() 函数的声明。char *strncpy(char *dest, const char *src...原创 2018-05-24 17:30:39 · 320 阅读 · 0 评论 -
静态通讯录
实现一个通讯录; 通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址 提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人信息 4. 修改指定联系人信息 5. 显示所有联系人信息 6. 清空所有联系人 7. 以名字排序所有联系人(1)头文件contact.h#ifndef __CONTACT #define __CONTACT ...原创 2018-05-29 22:27:41 · 187 阅读 · 0 评论 -
条件编译的三种形式
通常情况下,C语言程序的所有行都要进行条件编译,但有时可能希望程序的某部分在满足一定情况下进行编译,或者在满足一定条件下不进行编译,这就是条件编译。条件编译有如下三种形式:1. #ifdef 标识符 程序段1#else 程序段2#endif其中“标识符”为宏名,该宏名在此前可以定义,也可以没有定义;“程序段1”和“程序段2”是由语句或预处理命令组成的程序序列。...原创 2018-05-30 17:14:02 · 6286 阅读 · 0 评论 -
顺序表
1.SeqList.h#pragma once//#ifndef _SEQ_LIST_H_//#define _SEQ_LIST_H_#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <string.h>typedef int DataType;#d...原创 2018-06-13 23:24:37 · 169 阅读 · 0 评论 -
动态版本通讯录
1.contact.h//#ifndef _CONTACT_H_//#endif#ifdef _CONTACT_H_#endif#include <stdio.h>#include <windows.h>#pragma warning (disable:4996)#define MAX_NAME 10 #define MAX_SEX 5#define...原创 2018-05-31 16:41:46 · 321 阅读 · 0 评论 -
实现一个8 bit位数据的指定位置1或0
#include <stdio.h>#include <windows.h>#include <math.h>//#pragma warning (disable:4996)/*功能:实现一个8 bit位数据的指定位置1或0*//*方法1*/void bit_set(unsigned char *p_data, unsigned char pos...原创 2018-06-01 20:43:55 · 1392 阅读 · 0 评论 -
字符串:左旋和右旋
#include <stdio.h>#include <stdlib.h>#include <string.h>/*左旋*/char *move_steps(char *msg, int steps) { int i = 0; int len = strlen(msg); steps = steps % len;...原创 2018-06-23 22:36:28 · 200 阅读 · 0 评论 -
实现字符串到整数的转换,例如输入字符串12345,则输出数字12345。
#include <stdio.h>#include <windows.h>#include <math.h>/*字符串到整型的转换*/int swith(char p[],size_t sz){ int i = 0; int sum = 0; for (i; i < sz; i++){ //sum += (p[i]-'0') * pow(10, sz ...原创 2018-06-02 00:24:28 · 4873 阅读 · 1 评论 -
单链表基本操作
1.单链表的基本操作 增、删、改、插 SList.h#pragma once#include <stdlib.h>#include <assert.h>#include <stdio.h>/* 单链表实现*///数据类型定义,方便更该数据类型typedef int DataType;//单链表结点定义typedef str...原创 2018-07-25 20:51:28 · 218 阅读 · 0 评论 -
栈的实现
1.Stack.h#pragma once#include <assert.h>#include <stdlib.h>#include <String.h>// 栈实现typedef int SDataType;#define MAX_SIZE (100)//栈结构定义:数组 栈顶typedef struct Stack { ...原创 2018-07-27 10:36:52 · 129 阅读 · 0 评论 -
队列的实现
队列的实现,基本操作原创 2018-07-27 13:14:03 · 242 阅读 · 0 评论 -
实现一个栈,要求实现: Push(入栈)、Pop(出栈)、Min(返回最小值)的时间复杂度为O(1)
**实现一个栈,要求实现: Push(入栈)、Pop(出栈)、Min(返回最小值)的时间复杂度为O(1) 思路: 1.用两个数组实现 2.不在每次都入最小栈**1.P1.h#pragma once#include &lt;stdlib.h&gt;#include &lt;stdio.h&gt;/* ...原创 2018-07-27 14:52:24 · 353 阅读 · 0 评论 -
栈队列:使用两个栈实现一个队列
栈队列:使用两个栈实现一个队列思路: 1.入队列,是将数据放入栈1 2.出队列,是将栈1数据出栈后依次存入栈2,然后栈2进行出栈 这样就模拟了队列的 先进先出 思想1.Stack.h#pragma once#include <assert.h>#include <stdlib.h>#include <String.h&g...原创 2018-07-27 16:01:41 · 236 阅读 · 1 评论 -
“队列栈”:用一个队列实现一个栈
“队列栈”:用一个队列实现一个栈 出栈思路: 1.将队列的队头元素取出,保存在变量data中,然后Pop掉,再将data Push进队列 2.若队列有n个元素,则需要进行步骤1 n -1 次后,此时队头元素就为此队列最后进入的值1.Queue.h#pragma once#include <assert.h>#include <...原创 2018-07-27 17:27:27 · 1731 阅读 · 0 评论 -
回调函数的使用之qsort函数的练习
一.练习使用qsort函数排序各种类型的数据。 快速排速算法已经有库函数提供给我们了,我们只要根据排速的数据类型,重写cmp()这个接口函数就行。 qsort() 函数在stdio.h库中 C中qsort()函数的原型是: void qsort( void *base, size_t num, size_t width, int (__cdecl *comp...原创 2018-05-22 16:53:52 · 272 阅读 · 0 评论 -
请实现一个函数,输入一个整数,输出该函数二进制表示中1的个数。
#include <stdio.h>//#include <windows.h>#include <stdlib.h>/**题目:请实现一个函数,输入一个整数,输出该函数二进制表示中1的个数。例如:把9表示成二进制是1001,有2位是1.因此,如果输入9,则输出2**///可能引起死循环的解法int numberOf1(int n){ i...原创 2018-06-02 23:26:07 · 6084 阅读 · 0 评论 -
main函数的参数实现一个整数计算器;冒泡排序排序多个字符串
1.使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。例如:命令行参数输入:test.exe -a 1 2 执行1+2输出3#include <stdio.h>#include <Windows.h>#include <...原创 2018-05-15 22:20:06 · 177 阅读 · 0 评论 -
交换两个值的内容;打印10个整数最大值;三个数按从大到小输出;两个数的最大公约数
1. 给定两个整形变量的值,将两个值的内容进行交换。int i = 1, j = 2, temp = 0;temp = i;i = j;j = temp;printf("i:%d j:%d", i, j);2. 不允许创建临时变量,交换两个数的内容int i = 1, j = 2;i = i + j;j = i - j;i = i - j;printf(...原创 2018-04-30 23:55:59 · 198 阅读 · 0 评论 -
数组内容进行交换;计算1/1-1/2+1/3-1/4+1/5 +...+ 1/99 - 1/100 的值;数一下 1 到 100 的所有整数中出现多少次数字9
1.将数组A中的内容和数组B中的内容进行交换。(数组一样大)char a[] = "Hello world!"; char b[] = "你 好 世 界!"; char c[13] = ""; int left; int right = sizeof(a) - 2; for (left = 0; left <= right; left++) { c[left] = a[...原创 2018-05-01 21:25:19 · 189 阅读 · 0 评论 -
水仙花数;从标准输入读取C源代码,并验证所有的花括号都正确的成对出现;
1.在屏幕上输出以下图案:************************************************************************************* int i = 0, j = 0; for (i = 0; i <= 6; i++) { for (j = 0; j <= 2 * i; j++) printf...原创 2018-05-02 20:34:48 · 171 阅读 · 0 评论 -
C语言实现简易的三子棋
用C语言实现一个简易的三子棋,九宫格1.game.h#ifndef _GAME_H_#define _GAME_H_#include <stdio.h>#include <stdlib.h>#include <time.h>#include <Windows.h>#pragma warning(disable:4996)#defi...原创 2018-05-09 20:22:47 · 171 阅读 · 0 评论 -
可变参数函数
可变参数函数顾名思义,就是函数参数个数是未知的是可变的。(1)可变参数列表是通过宏来实现的,这些宏定义在stdarg.h 这个头文件中,这个头文件声明了一个类型va_list和三个宏——va_start , va_arg, va_end.(2)比如定义一个可变参数函数void print(char *fomt, ...)va_list:声明一个变量//va_list arg;va_start:初...原创 2018-05-09 21:44:51 · 847 阅读 · 0 评论 -
猜数字游戏;折半查找;编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出
1.完成猜数字游戏。#include <stdio.h>#include <Windows.h>#include <time.h>//1.完成猜数字游戏。 int main() { int input = 0; srand((unsigned)time(NULL)); do { menu(); printf("请选择!\n");...原创 2018-05-03 20:43:21 · 280 阅读 · 0 评论 -
调整数组使奇数全部都位于偶数前面;杨氏矩阵
1.调整数组使奇数全部都位于偶数前面。题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。 #include <stdio.h>#include <Windows.h>//1.调整数组使奇数全部都位于偶数前面。//题目://输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组...原创 2018-05-04 13:41:03 · 294 阅读 · 0 评论 -
浅谈C函数栈帧
一、地址空间与物理内存 (1)地址空间与物理内存是两个完全不同的概念,真正的代码及数据都存在物理内存中。 物理储存器是指实际存在的具体储存器芯片,CPU在操纵物理储存器的时候都把他们当做内存来对待,把他们看成由若干个储存单元组成的逻辑储存器,这个逻辑储存器就是我们所说的地址空间。 地址空间大小与逻辑储存器大小不一定相等。 (2)进程的地址空间分布 进程的地址空间包括:栈区(heap)、共享区、堆区...原创 2018-05-10 21:30:18 · 264 阅读 · 0 评论 -
字符串旋转
1.实现一个函数,可以左旋字符串中的k个字符。ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB#include <stdio.h> #include <windows.h>//1.实现一个函数,可以左旋字符串中的k个字符。//ABCD左旋一个字符得到BCDA//ABCD左旋两个字符得到CDABchar move_steps(char *msg,...原创 2018-05-10 22:30:30 · 194 阅读 · 0 评论 -
二进制中 1 的个数;获取一个数的二进制序列中所有的偶数位和奇数位,分别输出二进制序列;两个int型整数m和n的二进制表达中,有多少个位(bit)不同
1.写一个函数返回参数二进制中 1 的个数 比如: 15 0000 1111 4 个 1#include <stdio.h>#include <Windows.h>int count_one(unsigned int value){ int count = 0; while (value) { if (value % 2 == 1) { co...原创 2018-05-04 17:45:42 · 240 阅读 · 0 评论 -
简单的Linux命令
1.linux环境实践,熟悉使用(网络搜索)ls //list 列出当前文件夹的所有文件cd //change directory 更改(切换)目录mkdir //make directory 创建目录(文件夹)rm //remove 删除文件(-f)mv //move 移动文件touch //创建文件pwd //print work directory打印当前工作目录2...原创 2018-05-12 17:13:03 · 311 阅读 · 0 评论 -
一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数字;喝汽水问题;实现strcpy,strcat
1.一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 找出这两个数字,编程实现。(1)原始作法:我们通过两重循环,逐次的对数组进行遍历.#include <stdio.h>#include <windows.h>//找单独出现的数,一般方法int search(int a[], int len){ int i, j, k; for (i = 0;...原创 2018-05-13 00:03:58 · 507 阅读 · 1 评论 -
乘法口诀表;两个数的交换;判断润年;判断素数
1.实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定,输入9,输出9*9口诀表,输出12,输出12*12的乘法口诀表。#include <stdio.h>#include <Windows.h>1.0int show_multiplication_tables(int n) { int i = 1; for (i; i <= n; i++) { ...原创 2018-05-06 17:34:37 · 227 阅读 · 0 评论 -
实现常见的string函数
1.实现strcpy/* 1.实现strcpy */char *my_strcpy(char *dest, const char *src){ char *ret = dest; assert(dest != NULL); assert(src != NULL); while ((*dest++ = *src++)){//赋值 ; } return ret;}2.实现str...原创 2018-05-19 16:31:33 · 127 阅读 · 0 评论 -
bit位操作
1..编写函数:unsigned int reverse_bit(unsigned int value);这个函数的返回值value的二进制位模式从左到右翻转后的值。如:在32位机器上25这个值包含下列各位:00000000000000000000000000011001翻转后:(2550136832)10011000000000000000000000000000程序结果返回: ...原创 2018-05-13 16:58:07 · 3289 阅读 · 1 评论 -
预测比赛结果;排查确定杀人凶手;杨辉三角
1.5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。2.日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。A说:不是我。B说:是C。C说:是D。D说:C在胡说已...原创 2018-05-15 00:37:10 · 239 阅读 · 0 评论 -
递归练习:斐波那契数;实现n^k ...
1.递归和非递归分别实现求第n个斐波那契数。 #include <stdio.h>#include <Windows.h>int getFib(int n) { int first = 1; int second = 1; int third = 1; while (n > 2) { third = first + second; first...原创 2018-05-08 16:26:04 · 290 阅读 · 0 评论 -
堆排序:升序输出
核心思想: 要求升序输出,也就是从小到大排列1.建大堆: 关键:在于向下调整2.建好大堆后,循环删除堆顶元素 关键在于:堆顶元素与最后一个元素进行交换1.sort.h#pragma once#include <stdio.h>#include <stdlib.h>#include <string.h>void...原创 2018-08-02 22:10:35 · 2375 阅读 · 0 评论