c语言

5/27 C语言 指针系列

时间秒杀一切 提交于 2020-03-03 21:07:09
1、序。数据在内存中是如何存储的,又是如何读取的? 在程序中定义一个变量,在对程序进行编译的时候,系统会给这个变量分配内存单元。编译系统根据程序中定义变量类型,分配一定长度的空间。 2、指针。 地址指向该变量的单元,地址指向该变量的单元,将地址形象化称作为指针,就是通过它能够找到以他为地址的内存单元。 3、访问。 访问分为直接访问和间接访问,直接访问是直接读取一个数据的地址,间接访问是通过中介访问自己的数据的地址,一般要进行两步以上。 4、指向。 一个变量的地址称为变量的指针,指针是通过地址来体现的。假设i_pointer中的值是变量i的地址的变量(2000),这样就在i—pointer和变量i中建议一种联系,通过i—pointer就知道i的地址,从而找到i的内存单元 来源: https://www.cnblogs.com/serious123/p/10934385.html

C语言-递归操作

时光毁灭记忆、已成空白 提交于 2020-03-03 20:45:02
使用递归进行循环打印 /* 递归问题 */ #include <stdio.h> void print(void) { printf("1\n"); print(); } int main() { print(); return 0; } 使用递归从0打印到当前这个数字 /* 将数字进行从小到大的打印 */ #include <stdio.h> void print(int max) { if (max == 1){ printf("%d ", 1); return ; } print(max - 1); printf("%d ", max); } int main() { int val = 0; printf("请输入要打印的数字:"); scanf("%d", &val); print(val); printf("\n"); return 0; } 使用递归构建菲伯纳序列 /* 0 1 2 3 4 5 6 7 8 1 1 2 3 5 8 13 21 34 非伯纳系数 */ #include <stdio.h> int feibo(int max) { if (max <= 1) { return 1; } return feibo(max - 1) + feibo(max - 2); } int main() { int result = feibo(8); printf("

C语言的数字金字塔

我与影子孤独终老i 提交于 2020-03-03 17:25:26
int sum(int m, int n); void pyramid( int n ); int main() { int m, n; scanf("%d %d", &m, &n); printf("sum = %d\n", sum(m, n)); printf("please input a number/n:"); scanf("%d",&n); pyramid(n); return 0; } int sum(int m,int n){ int t=0; while(m<=n){ t=t+m; m++; } return t; } void pyramid( int n ){ int i,j,k; for(i=1;i<=n;i++){ for(j=1;j<=n-i;j++){ printf(" "); } for(k=1;k<=i;k++){ printf("%d ",i); } printf("\n"); } } 来源: CSDN 作者: izhangye 链接: https://blog.csdn.net/izhangye/article/details/104630761

C语言 · 字符删除

。_饼干妹妹 提交于 2020-03-03 16:57:54
算法训练 字符删除 时间限制:1.0s 内存限制:512.0MB 问题描述   编写一个程序,先输入一个字符串str(长度不超过20),再输入单独的一个字符ch,然后程序会把字符串str当中出现的所有的ch字符都删掉,从而得到一个新的字符串str2,然后把这个字符串打印出来。   输入格式:输入有两行,第一行是一个字符串(内部没有空格),第二行是一个字符。   输出格式:经过处理以后的字符串。 输入输出样例 样例输入 123-45-678 - 样例输出 12345678 作者注释:注意ch为空格或回车时的情况。 1 #include<stdio.h> 2 #include<string.h> 3 int main(){ 4 char str[20],b[20]; 5 char ch; 6 int j=0; 7 gets(str); 8 int len = strlen(str); 9 ch = getchar(); 10 for(int i=0;i<len;i++){ 11 while(ch==' ' || ch=='\n'){ 12 printf(" "); 13 return 0; 14 } 15 if(str[i]!=ch){ 16 b[j]=str[i]; 17 j++; 18 } 19 } 20 for(int i=0;i<j;i++){ 21 printf("%c",b

C语言 · 删除重复元素

做~自己de王妃 提交于 2020-03-03 16:11:46
算法提高 11-2删除重复元素 时间限制:10.0s 内存限制:256.0MB 问题描述   为库设计新函数DelPack,删除输入字符串中所有的重复元素。不连续的重复元素也要删除。   要求写成函数,函数内部使用指针操作。 样例输入 1223445667889 样例输出 13579 样例输入 else 样例输出 ls 数据规模和约定   字符串数组最大长度为100。 1 /* 2 思路: 3 将字符串存入字符数组a中,设将值拷贝给数组b,遍历b的每个元 4 素,与a中的每个元素比较,有相同则b中对应元素置为-1。 5 输出b中不为-1的元素。 6 */ 7 #include<stdio.h> 8 #include<string.h> 9 char a[100],b[100]; 10 void Del(int index,int len){ 11 for(int i=0;i<len;i++){ 12 if(index == i) continue;//下标相同即同一个元素不比较,进入下一个循环 13 if(b[index] == a[i]) b[index]=-1;//有相同元素,置值为 -1 14 } 15 } 16 int main(){ 17 gets(a); 18 memcpy(b,a,sizeof(a));//将a的元素拷贝给b 19 int len=strlen(a);

C++初学者的一周

℡╲_俬逩灬. 提交于 2020-03-03 16:04:23
C++初学者经验分享 本人大三,第一次在csdn上写博客。一来能分享自己的学习经历,如果我的经历能有幸帮到你的话那是最好不过了!二来是能记录自己的学习过程,方便对自己的编程水平有清晰的阶段化认识。 前情提要!!! 这不是一篇技术帖!这不是一篇技术贴!这不是一篇技术贴! 这更像是一篇生活日志。 目录 为什么学C++ 学C++之前我有怎样的基础 学习过程的收获与进步 为什么学C++ 作为大三学僧,寒假开始应该要开始为考研的事情做准备了。在这之前我上学都是被动上学,小学,初中,高中,大学都被安排的明明白白,从来没想过为什么我要上学,能去上什么样的学校也是看我考试的发挥。得益于我不高不低的智商,和那么一点点外力压迫下的努力,我够最终考上一所211大学。就在我准备要考研的时候,我惊醒了。 “我是谁?我从哪里来?我要到哪里去?” 开个玩笑哈哈。 “我为什么要考研?”,这二十年来我第一次思考自己为什么要升学。 “我不考研的话去做什么?”,就业?创业?(显然不会创业) 这两个问题一直思考下去的结果恰恰就是上文的哲学终极问题。我询问了很多朋友和学长关于要不要考研这件事,他们的回答都大致相同,总结就是两者没有对错,关键看你想要什么。那接下来我当然是思考自己想要什么喽。 思考这个问题对于我来说太难了,我从来不是个能坚定目标的人,做事往往三分钟热度,我现在想要的东西未来还会想要吗?没人能预测未来,那不如就

c语言中的return 0有什么用?

非 Y 不嫁゛ 提交于 2020-03-03 15:33:53
C语言为什么要return 0(个人看法) c语言中的return 0有什么用? 用return这种形式就能定义返回值, return 0可以 终止 main() 函数,并返回值 0。 return 0 代表程序正常退出,return 1代表程序异常退出! 使用return 语句可以返回一个变量内的值或一个指针,也可用return0,表示返回为空。 return 代表调到函数外, return 0代表函数正常终止 return 1代表函数非正常终止 而我觉得还有一个作用就是return之后你至少知道代码成功运行到最后一行,中间没有异常中止,并且return 关键字的还有一个作用是返回程序流程的控制权!其副作用是返回一个值。 来源: CSDN 作者: dio___da 链接: https://blog.csdn.net/m0_37187717/article/details/104631305

06.C语言if分支结构

不问归期 提交于 2020-03-03 14:16:59
文章目录 一、关系运算符 二、条件判断 三、只使用if语句 四、多个if else语句 五、if语句的嵌套 六、保持良好的编程习惯 七、逻辑运算符 八、逻辑表达式的书写 九、不得不说的逻辑非 十、三目运算符 十一、课后作业 十二、版权声明 一、关系运算符 在讲if条件分支结构之前,先了解关系运算(Relational Operators),用于判断条件,决定程序的流程。 关系 数学中的表示 C语言的表示 小于 < < 小于等于 ≤ <= 大于 > > 大于等于 ≥ >= 等于 = == 不等于 ≠ != C语言的基本数据类型有char、int、double,我们暂时认为只有char和int适用于上述关系运算符,double和字符串(字符数组)的关系运算以后再讨论。 注意了: 1)“=”是赋值,“==”才是判断两个数是否相等,不能混用。 2)C语言没有“之间”、“中间”、“之内”或“在某范围内”的关系运算符,例如年龄在25-30岁之间,只能表达为: 年龄大于等于25岁 并且 年龄小于等于30岁 。 二、条件判断 在我们的生活中,不是全部的事情都按顺序进行的,需要根据客观条件做出判断和选择,例如超女选秀,限制了16岁才能参加,16岁以下是不能参加的。这时候程序就需要做出判断,判断报名者的年龄是否满16岁,并给出提示。 在C语言中,使用if和else关键字对条件进行判断,先看下面的代码。

c语言计算n的阶乘

对着背影说爱祢 提交于 2020-03-03 11:48:54
问题描述: 输入一个整数n,计算n的阶乘 1<=n<=1000 我们第一印象首先想到的就是用循环来直接计算n的阶乘,可是阶乘的时间复杂度是最高的,也就是说对于数字较大的阶乘我们无法通过直接计算来获得。 那么这么来计算较大数字的阶乘呢 我们可以建立一个数组,将数字的个位,十位…存放在数组中,数字的大小在0~9,这样就完成了对于计算量很大的数字的存储,输出。 那么这么计算呢,其实也很简单,我们只需要将数组中的每一位和1~n相乘就可以了。 # include <stdio.h> # define N 10000 int c [ N ] ; int m [ N ] ; //存储进位 int finish = 0 ; //控制输出 int x ; int main ( ) { int n ; scanf ( "%d" , & n ) ; for ( int i = 1 ; i <= N ; i ++ ) { if ( i == 1 ) { c [ i ] = 1 ; //个位为一 } else { c [ i ] = 0 ; //其余均为0 } } for ( int i = 1 ; i <= n ; i ++ ) { for ( int j = 1 ; j <= N ; j ++ ) { c [ j ] = c [ j ] * i ; if ( c [ j - 1 ] >= 10 ) {

C语言程序设计100例之(30):删数问题

99封情书 提交于 2020-03-03 09:41:02
例30 删数问题 问题描述 从键盘输入一个高精度正整数num(num不超过250位),任意去掉S个数字后剩下的数字按原先后次序将组成一个新的正整数。编写一个程序,对给定的num和s,寻找一种方案,使得剩下的数字组成的新数最小。 输入格式 num (高精度的正整数)和S(需要删除的数字个数)。 输出格式 最后剩下的最小数。 输入样例 51428397 5 输出样例 123 (1)编程思路。 由于键盘输入的是一个高精度正整数num(num不超过250位),因此用字符串数组来进行存储。 为了尽可能地逼近目标,选取的贪心策略为:每一步总是选择一个使剩下的数最小的数字删去,即按高位到低位的顺序搜索,若各位数字递增,则删除最后一个数字,否则删除第一个递减区间的首字符。然后回到串首,按上述规则再删除下一个数字。重复以上过程s次,剩下的数字串便是问题的解了。 也就是说,删数问题采用贪心算法求解时,采用最近下降点优先的贪心策略:即x1<x2<…<xi<xj;如果xk<xj,则删去xj,得到一个新的数且这个数为n-1位中为最小的数N1,可表示为x1x2…xixkxm…xn。对N1而言,即删去了1位数后,原问题T变成了需对n-1位数删去k-1个数的新问题T′。新问题和原问题相同,只是问题规模由n减小为n-1,删去的数字个数由k减少为k-1。基于此种删除策略,对新问题T′,选择最近下降点的数进行删除