C语言
文章平均质量分 73
ttyue_123
这个作者很懒,什么都没留下…
展开
-
c语言初级小程序
1.打印100-200之间的素数:#include #include int main(){ int i,a; for(i=101;i {for(a=2;a if(i%a==0) break; if(i%a!=0) printf("%d\n",i); } return 0;} 2.输入乘法口诀:#inclu原创 2016-08-09 21:40:22 · 249 阅读 · 0 评论 -
字符串操作函数、数学函数
下面为常用字符串的操作函数:头文件 :#include 其中:s和t为char类型,c和n为int类型。strcat(s , t)将t指向的字符串连接到s指向的字符串的末尾strncat(s , t , n)将t指向的字符串中前n个字符连接到s指向的字符串末尾strcmp(s , t)根据s指向的字符串小于(st)t指向的的字符串的不同情况,分别返回负整数、0或正整数strncmp(s ,原创 2016-08-09 21:41:31 · 209 阅读 · 0 评论 -
二维数组中的查找,杨氏矩阵
题目: 在一个二维数组中,每行都按照从左到右的递增的顺序排序。每列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个数组和一个数,判断数组中是否包含这个数。例如:二维数组1 2 34 5 67 8 9查找数字7.题目分析:算法一: 杨氏矩阵中的查找,可以看做是在二维数组中查找,定义一个二维数组,根据数组的基本特点,可以从数组中第一个元素逐行进行遍历,若数组的某个元素与原创 2016-08-09 21:41:34 · 213 阅读 · 0 评论 -
冒泡排序
题目: 编写冒泡排序,排序一个整形数组。题目分析: 使用冒泡排序方式,对于一个n个元素的数组,至少要比较n-1个轮回,每个轮回将较大的数置到后面,最少比较n-2次,一直进行循环操作,最终能够排序一个整形数组。下面是具体的程序:#define _CRT_SECURE_NO_WARNINGS 1#include #include void fun(int arr[]){原创 2016-08-09 21:41:37 · 152 阅读 · 0 评论 -
找出一组数中只出现一次的两个数,其他所有数都是成对出现的
题目: 给一组数,只有两个数只出现了一次,其他所有数都是成对出现的。怎么找出这两个数。编写函数实现。题目分析: 上次介绍了,对于一组数中只有一个数只出现一次,其他所有数都是成对出现的,我们采用了对全部数组元素进行异或,但是对于找出两个出现一次的数应该怎么解决呢?先对所有的元素进行异或,则结果为两个出现一次的数的异或结果,然后将结果转换为二进制,找出二进制数中的第一个1,然后原创 2016-08-09 21:41:40 · 616 阅读 · 0 评论 -
strlen函数的三种实现方式
有时候我们写程序时需要自己实现一些常用的库函数,对于字符串的一些常用的函数是需要掌握的,下面主要讨论strlen函数的三种实现方式。(计算字符串的长度)算法一: 通过计数器的方式,统计字符串长度。定义一个指针,当指针指向下一个字符时,计数器count++。#define _CRT_SECURE_NO_WARNINGS 1#include #include #include原创 2016-08-09 21:41:42 · 530 阅读 · 0 评论 -
实现memcpy和memmove函数
题目: 自己定义一个函数,实现my_memcpy和my_memmove函数。题目分析: memcpy函数主要实现的是内存的拷贝,函数接受任意类型的参数,并且有拷贝个数的限制,函数与strcpy函数在功能上有相似点,也有不同点。memmove函数在memcpy函数的基础上解决了内存重叠的问题。下面是memcpy和memmove函数的实现:my_memmove函数:#defi原创 2016-08-09 21:41:45 · 386 阅读 · 0 评论 -
define和typedef区别
——c语言中define和typedef,两者有相似点,又有不同点。下面为两者的相似点: c语言允许typedef为各种数据类型定义新的名字,typedef声明的写法和普通的声明基本相同,只是把typedef这个关键字出现在声明的前面。 例如:typedef char *ptr; 这个声明把标识符ptr作为指向字符指针的指针类型的新名字,可以像使用任何预定义名字一样在原创 2016-08-09 21:41:48 · 176 阅读 · 0 评论 -
判断数字1在计算机中的存储方式
题目: 编写一个小程序,检验数字1在计算机中的存储方式是大端字节序、还是小端字节序。题目分析: 数字1在计算机中可能有两种的存储方式,大端存储和小端存储。下面先介绍大端字节序和小端字节序。 1:原码为:00 00 00 01 第一种存储方式:00 00 00 01(——>由低到高 大端有序列)第二种存储方式:01 00 00 00(——>由原创 2016-08-09 21:41:51 · 492 阅读 · 0 评论 -
连接函数strcat与strncat
题目: 编写程序实现函数strcat和strncat。题目分析: strcat的主要是将一个字符串连接到另一个字符串之后的位置,例如:将字符串“def”拷贝到字符串“abc”之后,得到新的字符串为“abcdef”。 strncat将一个字符串的几个字符连接到另一个字符串之后,可以限制连接的字符串数。下面是自定义my_strcat的实现:#define _CRT_SECUR原创 2016-08-09 21:41:54 · 376 阅读 · 0 评论 -
单链表
题目:1.编写函数,实现随机产生或键盘输入一组元素,建立一个带头结点的单链表(无序)2.编写函数,实现遍历单链表3.编写函数,实现把单向链表中元素逆置4.编写函数,建立一个非递减有序单链表5.编写函数,利用以上算法,建立两个非递减有序单链表,然后合并成一个非递减链表。6.编写函数,在非递减有序单链表中插入一个元素使链表仍然有序7.编写函数,实现在非递减有序链表中删除值为x的结点8.编写一个主函数,原创 2016-08-09 21:41:57 · 1613 阅读 · 0 评论 -
数据结构——栈与队列
题目:1.编写函数,采用链式存储实现栈的初始化、入栈、出栈操作2.编写函数,采用顺序存储实现栈的初始化、入栈、出栈操作3.编写函数,采用链式存储实现队列的初始化、入队、出队操作4.编写函数,采用顺序存储实现队列的初始化、入队、出队操作5.编写一个主函数,在主函数中设计一个简单的菜单,分别调试上述算法题目分析:1.顺序栈的类型定义#define MAX 100 //栈的最大值typedef st转载 2016-08-09 21:42:00 · 807 阅读 · 1 评论 -
面试题——查找单链表的中间节点
链表是基本的数据结构之一,面试题中链表占很大一部分,可见链表操作是非常重要的。我对一些常见的链表操作进行的归纳。 下面的问题为:查找单链表的中间节点。题目分析: 链表的特点就是有很多的节点,每个节点有数据域和指针域两部分,指针域存放的是下一个节点的地址,根据地址找到下一个节点。链表只能从前到后遍历,不能从后到前遍历。 对于这个问题,我们首先能够想到的就是先遍历原创 2016-08-09 21:42:03 · 11709 阅读 · 2 评论 -
面试题—链表操作
链表是最基本的数据结构,也是面试中较为常见的问题,链表的一些基本操作功能是必须能够实现,下面是一些关于链表基本的操作。 ——链表的节点设置typedef int Datatype;typedef struct SListNode{ Datatype data; //数据域 struct SListNode *next; //next指针域原创 2016-08-09 21:42:11 · 191 阅读 · 0 评论 -
C语言编写—通讯录(小项目)
C语言的练习—通讯录,该通讯录主要实现最大存储1000个人信息,对通讯录中的个人信息能够进行增、删、查、改等基本功能,通过用c语言编写,能够极大程度上锻炼编程能力。程序主要使用数组的知识,创建1000大小的静态数组,在极端情况下,通讯录中元素较少,对空间的使用率较低,使得空间浪费。该程序能够再次进行改进,可以通过动态开辟数组,减少空间的浪费,也可以通过链表来实现。——下面程序主要是利用静态数组的方原创 2016-08-09 21:42:15 · 997 阅读 · 0 评论 -
面试题—链表操作2
本篇博客主要介绍链表的操作,较上次的链表题难,更能够锻炼C语言的编程能力,对以后的面试有很大的帮助。内容主要包括单链表实现约瑟夫环,链表的排序,合并两个有序链表,判断链表是否带环并且计算环的长度等问题。 建立链表节点:typedef int Datatype;typedef struct SListNode{ Datatype Data; SListNode *原创 2016-08-09 21:42:17 · 181 阅读 · 0 评论 -
注释转换——(小项目)
一门计算机语言如果想要运用的得心应手,离不开长久的练习,针对C语言的用法,下面主要是用C语言来解决注释转换的问题,C语言中注释是以”/*”开始,以”*/”结束,C++语言中可以通过”//”来注释,这里不考虑C++语言向下兼容C语言的特点,主要是想将”/* */”注释符转换为”// ”。对于各种的注释情况,程序中能够实现各种各样的注释能够进行转换。 以下是一般人在编写程原创 2016-08-09 21:42:35 · 163 阅读 · 0 评论 -
在字符串中找出第一个只出现一次的字符
题目: 在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出'b'。题目分析: 对于在字符串中找出第一个出现一次的字符,联系ASCII码表,能够得到有256中不同的字符,可以利用字符的编码,将每个字符的编码作为数组的下表,建立一个有256个元素的数组arr[256],将数组中的每一个元素对应统计字符的个数,从字符串的第一个字符进行遍历,遇到一个字符给对应的原创 2016-08-09 21:41:28 · 544 阅读 · 0 评论 -
编写一个函数,可以左旋字符串中k个字符
题目: 实现一个函数,可以左旋字符串中的k个字符。例如:abcdef左旋一个字符得到bcdefaabcdef左旋两个字符得到cdefab题目分析: 对于这个问题,可以用很多种方法求解,这里介绍两种方法:算法一: 左旋字符串的k个字符,我们可以先将剩下的n-k个字符移动最前面,然后将左旋的k个字符移动到字符串的最后面的位置,这就完成了字符串左旋k个字原创 2016-08-09 21:41:25 · 288 阅读 · 0 评论 -
c语言中常见的关键字及其基本用法分析
c语言中常用的关键字如下:auto,break,case,char,const,continue,default,do,double,else,enum,extern,float,for,goto,if,int,long,register,return,short,signed,sizeof,static,struct,switch,typed,union,unsigned,void,volati原创 2016-08-09 21:40:25 · 1268 阅读 · 0 评论 -
给定两个整形变量的值,将两个值的内容进行交换
对于给定的两个整形变量的值,将两个值的内容进行交换的问题,从两个方面设计解决方案,下面为具体的算法分析及程序。算法一: 先建立两个整形变量,并进行初始化。同时创建一个临时变量,通过这个自定义变量将两个整形变量的地址进行交换,并借助指针,从而达到交换两个整形变量内容的目的。下面是具体的程序: #include stdio.h> int ma原创 2016-08-09 21:40:28 · 1633 阅读 · 0 评论 -
局部变量与全局变量
一、局部变量 在一个函数内部定义的变量是内部变量,它们只在函数范围内有效,即就是只有本函数能够使用它们,在函数以外不能够使用,如果使用就会出现变量未定义的错误。这些内部变量称为局部变量。 注意:主函数main中定义的变量也只能在main函数内部使用,主函数也不能使用其他函数定义的变量。但是,不同函数可以使用同名的变量,它们之间互不干扰。特别的:形式参数也是局部变量。例如原创 2016-08-09 21:40:31 · 391 阅读 · 0 评论 -
交换两个相同大小的数组内容
对于将两个相同大小的数组内容进行交换的问题,可以给出两个具体的算法,并给出相应的程序如下:算法一分析: 将两个相同大小的数组内容进行交换,可以先定义两个相同大小的数组a[10]和b[10]。同时,创建一个临时变量,借助这个变量,将两个数组的具体内容进行交换。下面是具体的程序:#include int main(){ int a[10]={1,2,3,4,5,6,7,8,9原创 2016-08-09 21:40:34 · 422 阅读 · 0 评论 -
求两个数的最大公约数和最小公倍数
对于求解两个数的最小公约数,能够通过两种方法进行解决,下面是具体的程序:程序一:#include stdio.h>int main(){ int a[2]; int i,min,max; for(i=0;i2;i++) scanf("%d",&a[i]); if(a[0]a[1]) {原创 2016-08-09 21:40:37 · 457 阅读 · 0 评论 -
switch的基本用法与break
一、switch的基本用法 switch语句是多分支选择语句,用来实现多分支选择结构。它的一般形式如下:switch(表达式){case 常量表达式1:语句1case 常量表达式2:语句2 ......case 常量表达式n:语句ndefault :语句n+1}其中:1)switch后面的括号内的“表达式”,结果可以原创 2016-08-09 21:40:40 · 5360 阅读 · 0 评论 -
字符串从两端进行动态输出
编写一个程序,自定义一个字符串,使得字符串能够隔1000毫秒从左右两端各输出一个字符,比如:###############w#############!we###########t!wel#########it!welc#######bit!welco##### bit!welcom###o bit!welcome#to bit!welcome to bit!具体的程序如下所示:#include原创 2016-08-09 21:40:43 · 232 阅读 · 0 评论 -
折半查找(二分查找)
在一个有序数组中,利用二分法的思想找出数组中的内容。#include #include int binsearch(int x,int arr[],int left,int right){ while (left<=right) { int mid=left-(left-right)/2; if(arr[mid]==x) {原创 2016-08-09 21:40:46 · 209 阅读 · 0 评论 -
编写一个猜数字游戏
编写一个程序,实现猜数字游戏,计算机随机产生一个数,输入猜的数,与计算机随机产生的数进行比较,当猜的数大于随机产生的数,给出提示猜的数过大,反之,给出提示猜的数太小。下面是具体的程序:#include #include #include void fun() //定义fun函数,说明游戏的具体操作{ int a=0; int ret=rand()%100;原创 2016-08-09 21:40:48 · 1583 阅读 · 0 评论 -
将每行输入,加上行号输出
编写一个程序,从标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号。在编写这个程序的时候要使这个程序能够处理的输入行的长度没有限制。 题目要求程序能够处理的输入行没有限制,可以利用getchar()从输入端上获取每行的字符,但是对于getchar(),只能每次获取一个字符,当获取到'\0'时,输出行号,结果与题目不符。可以借用一个flag,当flag为1时,输出行号。#incl转载 2016-08-09 21:40:51 · 785 阅读 · 0 评论 -
编程解决实际问题--预测比赛结果,确定凶手
2. 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第一,我第三。B选手说:我第二,E第四。C选手说:我第一,D第二。D选手说:C最后,我第三。E选手说:我第四,A第一。比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。#include int main(){ int a,b,c,d,e; for(a=1;a<=5;a++) for(原创 2016-08-09 21:40:54 · 411 阅读 · 0 评论 -
打印杨辉三角型
要实现打印杨辉三角,首先需要考虑到使用二维数组来实现存储每行要输出的元素。同时,利用杨辉三角的特性,arr[i][j]=arr[i-1][j-1]+arr[i-1][j];具体的程序如下面所示:#define _CRT_SECURE_NO_WARNINGS 1#include #include int main(){ int arr[10][10]; int i=0;原创 2016-08-09 21:40:57 · 278 阅读 · 0 评论 -
创建一个数组,实现数组元素的初始化,逆置,清空
创建一个数组,实现函数init()初始化数组、实现empty()清空数组、实现reverse()函数完成数组元素的逆置。要求:自己设计函数的参数,返回值。 (1)init( )数组元素的初始化 定义一个一维数组,计算机会根据给定的数组大小,随机给定数组中元素的值。建立一个初始化函数,手动输入数组中每个元素的值。 (2)empty( )清空数组原创 2016-08-09 21:40:59 · 612 阅读 · 0 评论 -
面试技巧题
针对局部变量和全局变量,变量的作用域的问题如下:#define _CRT_SECURE_NO_WARNINGS 1#include #include int count=3; //全局变量countint main(){ int i,sum,count=2; //局部变量count for(i=0,sum=0;i<count;i+=2,count+原创 2016-08-09 21:41:02 · 181 阅读 · 0 评论 -
棋盘游戏
#define _CRT_SECURE_NO_WARNINGS 1#include #include char matrix[3][3]; //宏定义一个二维数组,表示棋盘 void init_matrix(void ) //初始化数组{ int i, j; for (i = 0; i < 3; i++) { for原创 2016-08-09 21:41:05 · 322 阅读 · 0 评论 -
判断一个字符串是否为另外一个字符串左旋或右旋之后的字符串
题目: 判断一个字符串是否为另外一个字符串旋转之后的字符串。例如:给定s1 = abcdef和s2 = cdefab,返回1,给定s1=abcd和s2=ACBD,返回0.abcdef左旋一个字符得到bcdefaabcdef左旋两个字符得到cdefab abcdef右旋一个字符得到fabcdeabcdef右旋两个字符得到efabcd题目分析: 根据这个题目,我们能够和字符串的左原创 2016-08-09 21:41:23 · 456 阅读 · 0 评论 -
C语言是怎样实现封装、继承、多态的?
我们都知道封装、继承、多态是c++面向对象中的基本特征。C语言是面向过程的语言,自身没有这些特性,那如何使用C语言来模拟C++的封装、继承、多态等面向对象的基本特征。下面就要讨论一下封装、继承、多态等面向对象在c语言中是如何实现的。一、封装 封装:C++中的封装是利用public,protected、private来进行实现的,来隐藏一些不想让别人能够看到的一些东西,只留一些接口给原创 2016-09-07 10:55:01 · 3896 阅读 · 0 评论