C语言
文章平均质量分 63
yangshuangtao
这个作者很懒,什么都没留下…
展开
-
C语言常考基本问题
C语言基本问题1. 结构化编码:if else while等等控制结构的使用。模块化设计:划分为若干子模块例如函数这种功能。2. 解决问题的方法和步骤称为算法。好算法的要求:正确性,健壮性,可读性,效率和低存储率。3. 算法的特点:有穷性,确定性,有零个或多个输入,有一个或多个输出,有效性。4. 三种基原创 2015-04-19 14:37:17 · 915 阅读 · 0 评论 -
用递归函数求厄密多项式
#includeint hermite(int n, int x){ if(n<=0) return 1; else { if(n==1) return 2*x; else return 2*x*hermite(n-1,x)+2*(n-1)*hermite(n-2,x); }}int main(){ int n,x,ret;原创 2015-04-07 14:41:21 · 908 阅读 · 0 评论 -
实现字符串中单词反转
#include int main(){ char str[]="student a am i"; printf("%s\n",str); char *p,*q; char temp; p=q=str; while(*q!='\0') { q++; } q--;原创 2015-04-07 21:24:54 · 646 阅读 · 0 评论 -
C做题笔记(一)
#includeint main(){ int i=10; while(i--); printf("%d\n",i); return 0;}结果i=-1,虽然最后i=0但是i--作为判断条件仍然要执行,因此i=-1而不是0.#includeint main(){ int x=4,y=0,z=0; if(x=y+z) printf("原创 2015-04-19 17:51:45 · 744 阅读 · 0 评论 -
用递归思想实现字符串反转
#include#includechar *reverse(char *str) { if(!*str) { return NULL; } if(strlen(str)==1) { return str; } char ctemp; int len = strlen(str); if( len原创 2015-04-07 17:51:18 · 621 阅读 · 0 评论 -
求一个数组中和最小的连续子数组
#include#define MAX_LENGTH 10int main(){ int a[MAX_LENGTH]={1,2,3,-2,4,-6,-8,5,3,1}; int i,j,beg,end,tmp,min=0x7fffffff; //beg和end分别为子数组中首末元素下标,min为无穷大的数 beg=end=tmp=0; for(i=0;原创 2015-04-12 01:18:52 · 2864 阅读 · 0 评论 -
经典面试题(四)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
1金币概率问题(威盛笔试题)题目:个房间里放着随机数量的金币。每个房间只能进入一次,并只能在一个房间中拿金币。一个人采取如下策略:前四个房间只看不拿。随后的房间只要看到比前四个房间都多的金币数,就拿。否则就拿最后一个房间的金币。编程计算这种策略拿到最多金币的概率。 这题真要用数学的方法计算,估计还真不好算。还好,题目要求用编程实现。这样它就成了一个模拟题,即用程序来模拟整个取转载 2015-04-22 19:33:16 · 471 阅读 · 0 评论 -
对磁盘文件的简单读写操作
#include #includeint main() { int i,ch; char str[100]; FILE *fp; fp=fopen("text","w"); //创建一个文件 while(1) { printf("input string:\n"); gets(str); fprintf(fp,"原创 2015-04-09 12:44:30 · 1082 阅读 · 0 评论 -
统计一个字符串中某个字符第一次出现的位置和最后一次出现的位置
#include#include#include//统计某个字符第一次出现的位置char* strchr(char *p,char a) { int i; assert(p!=NULL); for(i=0;i<strlen(p);i++) { if(p[i]==a) return p+i; } return 0;}//统计某个原创 2015-04-09 20:28:10 · 5140 阅读 · 0 评论 -
不用库函数求两个数除法运算
用移位运算模拟库函数来实现除法运算#include int div(const int x, const int y){ int div = x, m, result = 0; while (div >= y) { m = 1; while (m * y > 1)) //通过移位运算 { m <<= 1; } result += m; div -= m原创 2015-09-22 08:40:46 · 501 阅读 · 0 评论 -
求一个字符串中最长的数字串
#include#includeusing namespace std;char *FindNumber(char* out, const char *in)//参数分别为用于保存数字字符串的缓冲区和源字符串{ char*max = NULL, *p = NULL, *q = NULL; int i = 0, j = 0; p = in; while (*p) { p++;原创 2015-09-28 21:54:16 · 1371 阅读 · 0 评论 -
C/C++中结构体的区别
C中的结构体和C++中结构体的不同之处:在C中的结构体只能自定义数据类型,结构体中不允许有函数,而C++中的结构体可以加入成员函数。C++中的结构体和类的异同:一、相同之处:结构体中可以包含函数;也可以定义public、private、protected数据成员;定义了结构体之后,可以用结构体名来创建对象。但C中的结构体不允许有函数; 也就是说在C++当中,结原创 2015-09-28 20:30:44 · 413 阅读 · 0 评论 -
计算一个数的二进制位中1的个数的方法总结
方法一、通过移位分别判断各个位int bit_count(unsigned int n){int count; for(count=0;n;n>>=1){count+=n&1; } return count;}方法2:循环中直接计算1的数量如何只数'1'的个数?如果一个数字至少包含一个'1'位,那么这个数字减1原创 2015-09-26 20:05:38 · 4261 阅读 · 0 评论 -
通过函数使数组中的奇数在偶数的前面
#includevoid change_array(int *p, int len){ if (p == NULL || len == 0) return; int *begin = p; int *end = p + len - 1; while (begin < end) { while ((begin < end) && ((*begin%2)!=0)) begi原创 2015-06-15 19:05:45 · 801 阅读 · 0 评论 -
strtok和strtok_r的区别
strtok和strtok_r原型:char *strtok(char *s, char *delim);功能:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。说明:首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。 strtok在s中查找包含在delim中的字符并用NULL('/0')来替换,直到找遍整个字符串。返回值:从s开头转载 2015-06-10 14:06:01 · 1163 阅读 · 0 评论 -
避免内存重叠的memmove()函数
#include #include using namespace std;void* memmove(void *dst, const void *src, size_t count){ // 容错处理 if (dst == NULL || src == NULL){ return NULL; } unsigned char *pdst = (unsigned char *)d原创 2015-06-25 10:31:33 · 1181 阅读 · 0 评论 -
程序员面试常见面试题深入剖析
void test1() { char string[10]; char* str1 = "0123456789"; strcpy( string, str1 ); } 试题2:[cpp] view plaincopyvoid test2() { char string[10], str1[10]; int i; for(i=0;转载 2015-04-22 18:54:26 · 374 阅读 · 0 评论 -
strpbrk和strcspn这两个函数的区别
strpbrk和strcspn这两个函数功能相似,区别在于前者返回的是一个指针,而后而返回的是一个数组下标值,或者可以前者为绝对值,而后者为偏移量,为一相对值,下面分别举两个简单的例子来显示它们的作用和区别:// strpbrk示例:#include #include int main() { char* str1 = "Hello, world"; char* str2原创 2015-04-22 17:38:31 · 889 阅读 · 0 评论 -
顺序表的实现(C语言)
#include#include#define MAXSIZE 100struct List{ int element[MAXSIZE]; //链表中最大节点数 int len; //当前链表的长度}*t;void print(List *t);int Isemtty(List *t) //判断链表是否为空{ if(t->len==原创 2015-04-09 08:29:36 · 5645 阅读 · 1 评论 -
判断一个数是否是回文数
#includevoid judge(int n){ int q,sum=0; int ret; ret=n; //q=n/10; while(q) { q=n/10; sum=sum*10+(n%10); n=q; } if(ret==sum) { printf("是回文数\n"); } else printf("不是回文数\n");}in原创 2015-04-04 21:27:22 · 507 阅读 · 0 评论 -
C语言面试题
1.理解main函数的参数,运行一下看看结果#include int main(int argc, char* argv[], char *envp[]){int i = 0;// walk through all the arguments// way 1:// for (i=0; i<argc; i++)// {// printf("argv[%d]=%s\n", i,转载 2015-04-10 21:44:58 · 1229 阅读 · 0 评论 -
面试宝典:(C语言面试题)总汇
4. static有什么用途?(请至少说明两种)1.限制变量的作用域2.设置变量的存储域#此前在首页部分显示#7. 引用与指针有什么区别?1) 引用必须被初始化,指针不必。2) 引用初始化以后不能被改变,指针可以改变所指的对象。2) 不存在指向空值的引用,但是存在指向空值的指针。8. 描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性9.转载 2015-04-10 21:36:15 · 815 阅读 · 0 评论 -
用C语言实现单链表的各种操作
#include#includestruct LinkList{ int data; struct LinkList *next;};/*初始化链表*/void init_list(LinkList **head) { *head=(LinkList *)malloc(sizeof(LinkList)); (*head)->next=N原创 2015-04-10 20:21:19 · 909 阅读 · 0 评论 -
C++练习题
1.计算1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100的值#includeint main(){ int m=1; double sum=0.0; for(m=1;m<=100;m++) { if(m%2==0) { sum=(double)-1/m+sum;//奇数项求和 } else sum=(double原创 2015-03-22 19:13:00 · 506 阅读 · 0 评论 -
用读写文件方式实现通讯录
#include#include#include#define SEEK_SETstruct person{ char name[10]; char sex[4]; int age; char tel[11]; char addr[20];};char filename[20];FILE * fp;void add();void show();void insert原创 2015-04-09 11:16:04 · 860 阅读 · 0 评论 -
用可变参数实现printf函数
#include #include void my_printf(int val, ...){ va_list arg; int i; int a=1; char b='h'; char *p="asd"; //准备访问可变参数 va_start(arg, val); char a[4]; //添加取自可变参数列表的值 fo原创 2015-04-05 01:00:14 · 491 阅读 · 0 评论 -
经典面试题(二)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
1.正整数序列Q中的每个元素都至少能被正整数a和b中的一个整除,现给定a和b,需要计算出Q中的前几项,例如,当a=3,b=5,N=6时,序列为3,5,6,9,10,12(1)、设计一个函数void generate(int a,int b,int N ,int * Q)计算Q的前几项(2)、设计测试数据来验证函数程序在各种输入下的正确性。 感觉有点类似归并排序的Merge。有两个数组A、转载 2015-04-22 19:39:45 · 693 阅读 · 0 评论 -
动态内存空间的开辟与释放
在不知道需要占用内存空间大小时,需要在堆栈上动态开辟内存空间,空间使用结束后需要程序员自己释放。#include #include void main(){ int n,*p,i,j,m,temp; printf("本程序可对任意个整数排序;\n"); printf("请输入整数的总个数: "); scanf("%d",&n); p=(int *)calloc(n,sizeof原创 2015-04-22 16:36:16 · 2313 阅读 · 0 评论 -
判断字符串是否匹配
#include#includevoid str_match(const char* str1, const char* str2){ int i,j,k=0; int len; int flag=0; puts(str1); puts(str2); len=strlen(str1); if((*str1!=NULL)&&(*str2!=NULL))原创 2015-04-05 13:09:02 · 884 阅读 · 0 评论 -
用结构体创建静态链表
#include #include #define LEN sizeof(struct student)struct student{ char num[8]; char name[8]; char sex[2]; int age; struct student *next;} stu[10];int main(){ struct student原创 2015-04-05 22:18:02 · 528 阅读 · 0 评论 -
通讯录(C语言)
#include#include#include#define M 1000 // 结构体变量的大小void insert(); //增加联系人信息int delet(); //删除联系人信息void find(); //查找指定联系人信息void change(); //修改联系人信息void show(); //显示所有联系人信息原创 2015-04-05 21:17:55 · 453 阅读 · 0 评论 -
求一个字符串中连续出现并且出现次数最多的子串.
求一个字符串中连续出现次数最多的子串. 基本算法描述: 给出一个字符串abababa 1.穷举出所有的后缀子串 substrs[0] = abababa; substrs[1] = bababa; substrs[2] = ababa; substrs[3] = baba; su转载 2015-04-22 11:00:51 · 1217 阅读 · 0 评论 -
将一个数字以字符格式输出
#include#define M 10int main(){ int a; printf("please input a number:"); scanf("%d",&a); int q,j,i=0; char b[M]; while(q) { q=a/10; b[i]=(a%10)+'0'; a=q;原创 2015-04-04 23:56:32 · 1411 阅读 · 0 评论 -
用可变参数求平均值
#include #include float average(int val, ...){ va_list arg; //定义可变参数 int count; float sum = 0; va_start(arg, val); //准备访问可变参数 for (count = 0; count < val; count +=1)//添加取自可变参数列表的值 {原创 2015-04-04 21:41:43 · 855 阅读 · 0 评论