![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C程序典型示例
文章平均质量分 52
Quinn0918
在生活中,对于自己和别人,我常常会说:“人生没有白走的路,每一步都算数!”
在干部生涯中,至今还担任院学生会主席,我经常对我的干部们说“在别人之上要把别人当人,在人之下要把自己当人。”
此时此刻,我想在博客里对自己说:“就在这儿,一定要成功!”
展开
-
基于单链表经常见的面试题——基础篇
点击进入查看如何实现链表以及链表的一些基本操作函数 基于单链表的面试题——进阶篇1.比较顺序表和链表的优缺点,说说它们分别在什么场景下使用?首先我们时间上来进行分析:(1)对于顺序表。不论是静态的还是动态的,他们都是连续的存储空间,在读取上时间效率比较快,可以通过地址之间的运算来进行访问,但是在插入和删除操作会出现比较麻烦的负载操作。 (2)对于链表,因为他是链式存储。在我们需要的时候才在堆上开原创 2017-06-09 21:18:49 · 1676 阅读 · 0 评论 -
预处理标识符(两个int整数m和n的二进制表达中,有多少个位(bit)不同)
常用的预处理标识符有很多,以下是几个预定义标识符:(1)__FILE__ :表示正在编译的文件(2) __LINE__:表示的是正在编译的文件的行号(3)__DATE__:表示的是正在编译的日期字符串(4)__TIME__:表示的是正在编译的时间字符串代码如下:#include #includeint main(){ int m = 1999;//0111110011原创 2017-04-11 18:56:41 · 883 阅读 · 0 评论 -
C语言实现扫雷小游戏(设定游戏简易程度,实现空白,实现跳过第一次选中雷)
首先,演示一下:要写出扫雷,首先要对扫雷有一个基本的认识。分析一下:(1):初始化棋盘初始化棋盘分为两步:第一步,我们给一个全为“*”的棋盘;第二步,我们考虑到在计算雷周围数目的数目的时候,位于边界的位置不好求,所以我们在棋盘的每一边都增加1行或者1列。(2)布雷:布雷我们主要是在随机产生的位置上布雷,所以我们就要用到rand()。(3):打印棋盘打印棋盘也原创 2017-04-10 15:36:33 · 2433 阅读 · 1 评论 -
C语言实现三子棋游戏
game.h#ifndef __GAME_H__#define __GAME_H__#include #include #include #define ROW 3#define COL 3void chess_board(char arr[ROW][COL], int row, int col);void mimeograph(char arr[ROW][COL], int原创 2017-04-06 01:51:51 · 661 阅读 · 0 评论 -
判断一个数(或字符串)是否是回文数(回文字符串)
回文数也是一个数字,数字的特点是正反序是同一个数字。比如:12321 、 3443 就是回文数为了更好的显示,下面以偶数个数做示例不是回文数的程序如下:#include #include int main(){ int arr[] = {1,2,3,4,4,1}; int i = 0; for (i = 0; i <= (sizeof(arr) / sizeof(a原创 2017-03-30 13:34:47 · 6519 阅读 · 0 评论 -
猴子吃桃问题
猴子第一天摘了若干个桃,当即吃了一半加一个,以后每天吃昨天剩下桃子的一半加一个。第10天的时候只剩下1个。问:猴子第一天摘了多少个桃子。这道题的逻辑很简单,最后一天剩下了1个,那么第9天就吃了1+1再乘以2个,以此类推。那么我们可以定义一个sum = 1;再来一个for循环,循环9次,就知道第一天到底摘了多少个。程序示例:#include #include void count原创 2017-03-30 11:04:34 · 978 阅读 · 0 评论 -
将数组A中的内容和数组B中的内容进行交换。(数组一样大)
#include int main(){int i = 0;int j = 0;int a = 0;int arr1[5] = { 1, 2, 3, 4, 5 };int arr2[5] = { 2, 3, 4, 5, 6 };int arr3[5] = { 0 };for (a = 0; a {arr3[a] = arr1[a];a原创 2017-03-20 19:57:34 · 945 阅读 · 0 评论 -
求两个数的最大公约数
#include #include #pragma warning(disable:4996)int main(){int i = 0;int j = 0;int a = 0;int min = 0;scanf("%d%d", &i,&j);if (i min = i;elsemin = j;for (a = min; a > 0; a--)原创 2017-03-20 19:59:24 · 619 阅读 · 0 评论 -
将三个数按从大到小输出
#include #include #pragma warning(disable:4996)int main(){int arr[3];int i = 0;int j = 0;int a = 0;for (i = 0; i {scanf("%d", &arr[i]);}for (j = 1; j {for (i = 0; i {原创 2017-03-20 19:58:47 · 1248 阅读 · 0 评论 -
求10 个整数中最大值。
#include#pragma warning(disable:4996)int main(){int arr[10] = { 1, 12, 3, 4, 15, 6, 7, 8, 19, 10 }, i = 0,max=0;for (i = 0; i if (maxmax= arr[i];//max依次与数组里的值进行比较,如果max小于数组值,则把数组值赋给max}原创 2017-03-19 01:23:08 · 767 阅读 · 0 评论 -
写一个函数返回参数二进制中 1 的个数
#include #pragma warning(disable:4996) #include int count_one_bits(unsigned int value){ int count = 0; while (value){ if (value % 2 == 1){ count++;原创 2017-03-19 13:46:27 · 609 阅读 · 0 评论 -
不允许创建临时变量,交换两个数的内容。
#includeint main(){int i = 1, j = 2;i =i+j;j = i - j;i = i - j;printf("%d%d",i,j);//int i = 1, j = 2, t = 0;//t = i;//i = j;//j = t;//printf("%d%d", i,j);getchar();return 0;原创 2017-03-19 01:22:28 · 758 阅读 · 0 评论 -
给定两个整形变量的值,将两个值的内容进行交换。
#includeint main(){int i = 1, j = 2, t = 0;t = i;i = j;j = t;printf("%d%d", i,j);getchar();return 0;}原创 2017-03-19 01:21:52 · 1169 阅读 · 0 评论 -
写一个宏可以将一个数字的奇数位和偶数位交换
宏函数在C语言编程中有不可忽视的作用,并且数字二进制的奇偶位交换也比较常见,所以用宏函数来实现数字二进制的奇数位和偶数位交换不失为一个很好的方法。首先我们要清楚宏函数的用法,其次要有用宏函数实现该功能的整体思路,下面我带着大家分析一下:例:将数字5(0101)交换二进制奇偶位为(1010)即数字10。就是将数字的二进制的第0位和第1位交换,第2位和第3位交换,后面以此类推。首先我们原创 2017-04-11 19:02:43 · 806 阅读 · 0 评论 -
写一个程序来确定到底谁是凶手
题目是这样的:日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。A说:不是我。B说:是C。C说:是D。D说:C在胡说已知3个人说了真话,1个人说的是假话。现在请根据这些信息,写一个程序来确定到底谁是凶手。用0来表示不是凶手 1表示是凶手假设所有人都是0A=0,B=0,C=0,D=0只有原创 2017-03-31 01:23:49 · 3438 阅读 · 1 评论 -
实现静态顺序表和动态顺序表
其实顺序表的静态实现以及动态实现和通讯录的实现原理基本上是一致的,在这里就不做过多的解释,直接贴代码。 静态通讯录:http://blog.csdn.net/quinn0918/article/details/71937767 动态通讯录:http://blog.csdn.net/quinn0918/article/details/72182598 文件流通讯录:http://blog.csd原创 2017-06-02 18:58:53 · 777 阅读 · 0 评论 -
c语言经典面试题
上面两幅图中有六道经典C语言面试题,真的可以认真看看!!!直接贴代码:#include<stdio.h>#include<windows.h>#include<assert.h>void bit_set(unsigned char *p_data, unsigned char position, int flag){ assert(p_data!=NULL); if ((pos原创 2017-06-05 18:35:16 · 1211 阅读 · 0 评论 -
实现无头结点单链表的基本操作函数
基于单链表经常见的面试题——基础篇 基于单链表的面试题——进阶篇什么是无头结点链表??? singlelinkedlist.h头文件#ifndef __SINGLELINKEDLIST_H__#include<stdio.h>#include<windows.h>#include<assert.h>typedef int DataType;typedef struct ListNode原创 2017-06-09 17:29:41 · 8952 阅读 · 1 评论 -
基于单链表的面试题——进阶篇
点击查看如何实现单链表以及单链表的一些基本操作函数 点击查看基于单链表经常见的面试题——基础篇1.判断单链表是否带环?若带环,求环的长度?求环的入口点? 判断是否带环:ListNode *IfRing(ListNode *list)//判断单链表是否带环,返回交点{ ListNode* slow = list; ListNode* fast = list; //是否带环原创 2017-06-12 14:07:37 · 995 阅读 · 1 评论 -
注释转换(c->c++)小项目
程序新思路: 注释转换一开始去想的时候,会觉得很复杂。因为在一个源文件里出现注释的情况虽然不会太多,但是可能会出现各种各样,形形色色的注释,在转换程度上去想的时候会觉得很复杂,不同的问题都要有不同的解决方法的。在这里简单的罗列注释转换可能出现的几种情况:// 1.一般情况int num = 0;/* int i = 0; */// 2.换行问题/* int i = 0; */int j =原创 2017-05-31 18:02:46 · 640 阅读 · 0 评论 -
利用文件流实现通讯录
之前呢,我已经写过两种形式的通讯录: 静态通讯录:http://blog.csdn.net/quinn0918/article/details/71937767 动态通讯录:http://blog.csdn.net/quinn0918/article/details/72182598fwrite函数原型:size_ t fwrite(const void* buffer, size_ t si原创 2017-05-19 13:26:33 · 1003 阅读 · 0 评论 -
实现动态版本通讯录(在简易通讯录的基础上)
实现一个动态版本通讯录:**通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址**提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人信息 4. 修改指定联系人信息 5. 显示所有联系人信息 6. 清空所有联系人 7. 以名字排序所有联系人首先我们要了解动态内存分配: 动态内存分配中有 free,mall原创 2017-05-15 17:37:12 · 764 阅读 · 0 评论 -
C语言实现简易通讯录
实现一个通讯录;通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址**提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人信息 4. 修改指定联系人信息 5. 显示所有联系人信息 6. 清空所有联系人 7. 以名字排序所有联系人**思路分析:首先我们可以分三个模块来解决这个问题,第一个模块我们需要一个头文原创 2017-05-14 10:47:47 · 28720 阅读 · 8 评论 -
有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N)
题目是这样的:有一个二维数组,数组的每行从左到右是递增的,每列从上到下是递增的.在这样的数组中查找一个数字是否存在。要求:时间复杂度小于O(N);在这里我说一下我解题的各种逻辑和方法。一看到这个题目,最开始的时候,我是这样想的:利用循环直接遍历数组中的每一个数就行了呀!可是后面发现如果这个数组变得非常大的话(假如是10*10的数组,要找的数在最后一个),那它的时间复杂度就是原创 2017-04-16 13:25:56 · 1776 阅读 · 1 评论 -
冒泡排序
冒泡排序算法的运作如下:(从后往前)1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3.针对所有的元素重复以上的步骤,除了最后一个。4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。冒泡排序走向图:对n个数进行冒泡排序 ,最多需要n原创 2017-04-05 20:55:11 · 511 阅读 · 0 评论 -
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第一,我第三。B选手说:我第二,E第四。C选手说:我第一,D第二。D选手说:C最后,我第三。E选手说:我第四,A第一。比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。程序如下:#include #include int main(){ int a = 0; int b = 0;原创 2017-03-31 01:36:45 · 1201 阅读 · 0 评论 -
判断1000年---2000年之间的闰年
#include#includeint main(){int year=0;for (year = 1000; year if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)printf("%d\n", year);}getchar(); return 0;}原创 2017-03-18 11:34:46 · 736 阅读 · 0 评论 -
输出乘法口诀表(以及函数实现乘法表)
#include#includeint main(){int a,i;for (a = 1; a for (i = 1; i printf("%d*%d=%-3d", a, i, a*i);if (a printf("\n");}}getchar(); return 0;}原创 2017-03-18 11:34:07 · 1218 阅读 · 0 评论 -
打印100~200 之间的素数
#includeint main(){int prime, i;for (prime = 101; prime for (i = 3; i if (prime%i == 0)break;}//能被整除的数都是偶数if (prime==i)//说明到最后也没有找到能被i整除的数printf("%d\n", prime);}getchar();原创 2017-03-18 11:32:17 · 785 阅读 · 0 评论 -
实现strcpy函数
实现strcpy函数,是很多公司的面试题,在很多书籍上也都提到过。程序代码:#include#include#include#includechar *my_strcpy(char *dest, const char *src){ char *ret = dest; assert(dest != NULL); assert(src != NULL); while (*de原创 2017-04-08 14:46:27 · 834 阅读 · 0 评论 -
实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。
为了方面查看数组的变化,在这里使用了顺序数组,可以直观查看数组的变化。程序代码:#include#includevoid init(int *arr, int sz){ int i = 0; for (i = 0; i < sz; i++) { arr[i] = 0; }}void empty(int *arr, int sz){ int i = 0;原创 2017-04-08 14:26:42 · 704 阅读 · 0 评论 -
一球从100米落下,落地后反弹原高度的一半,再落下。 第10次落地时总共经历了多少米?第10次反弹多高?
#include #include int main(){ long double i = 100.0; long double sum = 100.0;// int n = 0; for (n = 1; n <= 9; n++)//这里9次循环的原因是因为sum=100,从第二次掉落开始算。 { i = i / 2;//每次反弹一半 sum += 2 *原创 2017-03-29 23:18:10 · 3233 阅读 · 1 评论 -
有一分数序列:2/1, 3/2, 5/3, 8/5,13/8....求出这个数列的前20项之和。
这道题我是利用for循环做出来的,在经过高手指点以后才知道它是个斐波那契数列,自己知道的还是很少啊!在这里我利用百度给大家介绍一下斐波那契数列:斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列、费波那西数列、费波拿契数、费氏数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0原创 2017-03-29 21:32:59 · 8063 阅读 · 0 评论 -
在屏幕上输出2000年之前的所有闰年以及闰年的个数
这道题很贱#include #include int main(){ int year = 0; int count = 0; for (year = 1; year <= 2000; year++) { if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { count++; printf("%d原创 2017-03-29 20:27:06 · 1931 阅读 · 0 评论 -
有1、2、3、4四个数字,可以组成多少个互不相同且无重复的三位数?都是多少?
这个题呢,顾名思义,就是说一个三位数的每一位都是1、2、3、4,个位十位百位上的数字不能重复。编程原理很简单,分别定义三个变量代表个位十位百位,然后使用for循环嵌套每一层循环代表一位数,如果个位十位百位都不相同,则输出。程序如下:#include #include int main(){ int i = 0; int j = 0; int k = 0;原创 2017-03-29 19:55:45 · 11289 阅读 · 2 评论 -
获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
(1)#include #include #pragma warning(disable:4996)int main(){int num = 0;int i = 0;int j = 0;scanf("%d", &num);for (i = 31; i >= 0; i -= 2)//不用数组,从最高位开始{printf("%d",(num >> i)原创 2017-03-20 19:58:08 · 715 阅读 · 0 评论 -
c语言的10个基本程序(1--5)
1.在屏幕上输出“hello world”#include int main(){printf("hello world");getchar();return 0;}2.用循环计算1到100的和#include int main(){int sum = 0;int i = 0;for (i = 0; i {sum = sum +原创 2017-03-22 22:51:48 · 2581 阅读 · 0 评论 -
c语言的10个基本程序(5—10)
6.求1到100之间的素数#include int main(){int prime = 0;int i = 0;for (prime = 2; prime {for (i = 2; i {if (prime % i == 0)break; }if (prime == i)printf("%d\n", prime);}getcha原创 2017-03-23 13:58:37 · 1280 阅读 · 0 评论 -
折半查找
(1)直接编写程序#include #pragma warning (disable:4996)#include int main(){ int arr[10] = {1,2,3,4,5,6,7,8,9,10 }; int left = 0; int right = (sizeof(arr) / sizeof(arr[0])) - 1; int num = 0; scanf原创 2017-03-26 11:17:41 · 563 阅读 · 0 评论 -
写一个函数判断一年是不是闰年
#include #include int is_leap(int year){ if ((year % 4 == 0 || year % 100 ==0) && year % 400 == 0) { return 1; } return 0;}int main(){ int year = 1999; if (is_leap(year)) { printf("原创 2017-03-26 23:29:32 · 1622 阅读 · 0 评论