C语言基础向——二级总结
C语言基础向——二级总结
- 1.前言
- 2.例题
- 1.累加累乘问题
- 2.去星号问题
- 3.字符后移问题
- 4.字符串转整数
1.前言
最近考了计算机二级C,我在做完大约100道操作题后对C语言有了新的收获,小部分的题目还是有做的价值。二级C操作题的难度大约是力扣简单题的难度(大部分题目甚至更简单),个人认为,对C语言初学者来说掌握这些还是有很大意义的。
2.例题
1.累加累乘问题
初学循化的人做这类题目可能还是有一定难度,不过这也是一种很好的锻炼。
这题关键就在于又要累加又要累乘,如何使用一个循化就完成这两个要求。不妨先自己思考一下。
可以注意到,后一项比前一项每次变化x/n 倍,所以我们可以定义一个变量,保存其初始值,然后每次随循化变化x/n 倍,再用另一个变量累加它们的值就行了。答案见下文。
double fun(double x , int n)
{ int i;double f=1.0,h=x;double s=1;s=s+h/f; for (i=2;i<=n;i++){ f=f*i; h=h*x; s=s+h/f;}return (s);
}
2.去星号问题
这题可以使用双指针加覆盖的方法做。
使用两个指针,分别为左指针和右指针,都指向第一个找到的字母,然后开始循化判断右指针对应元素是否为*,是,则右移右指针直至找到不为*的字母,再将右指针对应的字母赋值给左指针对应的字符,也就是用右指针对应的元素,覆盖左指针对应的元素。此时左指针之前对应的元素已经被覆盖,不知道是哪一个了,但不影响结果。左指针再加一。循化移动右指针至不为*号的字母,直至右指针遇到字符串结束符,结束循化。再将左指针对应元素赋值为‘\0’ 。
void fun( char *a )
{int right=0,left;while(a[right]=='*') //找到第一个不为*号的字母right++; left=right;while(a[right]!='\0'){ // 实现非*字符前移 if(a[right]!='*') a[left++]=a[right];right++;}a[left]='\0';
}
3.字符后移问题
这题,我们可以先用一个变量保存第一个字母,然后再用循化将第一个字符覆盖,即从第二个字符开始往前移动一个字符。这样字符串最后会空出一个字符的位置,将之前保存的字符放到最后。如此循化m次,就能得到我们想要的结果。见代码:
void fun(char *w, int m) /* 可调用fun1函数左移字符 */
{int i=0,x,j;char ch;for(j=0;w[j];j++) i++;for(x=0;x<m;x++){ch=w[0];for(j=1;j<i;j++) {w[j-1]=w[j];}w[i-1]=ch; }
}
4.字符串转整数
这题使用一个循化就能做出来。我们定义一个长整型变量,并初始化为0,再定义一个指针指向字符串首字母。每循化一次乘以10并加上指针对应字符串的一个字符对应的数字值。之后指针加一。直至循化遍历完字符串所有字符,我们就能得到字符串对应数字。
另外值得注意的一点是,数组字符转成对应的数字需要减去48,或者减去字符0(两者的本质是一样的,0对应的ascll码值就是48)。
long fun( char *s ){ int i,n;long a,r;a=0;r=0;n=strlen(s);for(i=0;i<n;i++){a=*(s+i)-48;r=r*10+a;}return r;
}
5.取得数字的各个位——四玫瑰数
这题的关键是如何取得一个数字的各个位,通常我们取个位的思路是用10去取余。但我们如何取得其他位。换一种思路,我们可以把其它位也变为个位,这样就简单了。具体的做法是再取了个位之后,将原来的数除以10,这样原来的十位就变成了个位。循化下去,我们就能取到一个数的各个位。见代码:
int fun(int n, int result[]){ int i,j,k=0,s;for(i=1000;i<n;i++){s=0;j=i;while(j>0){s+=(j%10)*(j%10)*(j%10)*(j%10);j=j/10;}if (s==i) result[k++]=i;}return k;
}
C语言基础向——二级总结相关推荐
- 2016年9月c语言真题,2016年9月计算机二级C语言基础试题及答案
2016年9月计算机二级C语言基础试题及答案 一.选择题 (1)*作系统主要有两个方面重要作用,下面叙述最恰当的是 A)管理系统的软件和硬件 B)管理*作系统本身和应用系统 C)管理系统中的各种资源并 ...
- c语言二级考试基础知识,2018年计算机二级考试《C语言》考点:C语言基础知识...
2017年计算机等级考试已经结束,出国留学网为考生们整理了2018年计算机二级考试<C语言>考点,希望能帮到大家,想了解更多资讯,请关注我们,小编会第一时间更新哦. 2018年计算机二级考 ...
- 计算机基础与c语言试题及答案,2017年9月计算机二级C语言基础试题及答案
C语言是一种结构化的程序设计语言,是计算机二级考试科目之一.下面是小编为大家整理的2017年9月计算机二级C语言基础试题及答案,欢迎参考~ 2017年9月计算机二级C语言基础试题及答案 一.选择题 ( ...
- 江苏省计算机二级c基础知识,江苏省计算机二级C语言基础知识
江苏省计算机二级C语言基础知识 可分为双极型集成电路.金属氧化物半导体集成电路和双极-金属氧化物半导体集成电路. 知识点3:集成电路的发展趋势 考点点拨:考查芯片和集成电路的制造工艺.发展趋势.主要以 ...
- C语言基础-数据类型
数据类型 基本类型 基本类型就是我们在使用C语言时最基础的数据类型,包括整形(短整型,基本整型,长整型).字符型.浮点型(单.双精度)以及枚举类型. 构造类型 在编程的过程中只使用基本类型是远远不够的 ...
- C语言基础-基本算法
C语言基础-基本算法 在之前的两篇文章中介绍了C语言的入门程序入门程序1,入门程序2,从这篇文章我们就开始介绍C语言基础. 今天来给大家介绍算法的特性和算法的表示. 算法的基本特性 算法包含两方面的内 ...
- C语言基础-简单程序分析
在上一篇文章里介绍了C语言的入门程序HelloWorld,入门程序HelloWorld 在这一篇里我们继续来看C语言的入门程序,我们先来看一个简单的程序. #include<stdio.h> ...
- 计算机应用基础是文管二级吗,计算机应用基础(文管二级)习题册.doc
计算机应用基础(文管二级)习题册 计算机应用基础(文管二级) 习题册 河南经贸职业学院信息管理系 二〇一〇年三月 目 录 主要知识点及学时分配- 1 - 第一部分 选择题- 3 - 一. 计算机基础知 ...
- 计算机二级msoffice应用基础,计算机二级MSOffice高级应用考试基础知识
计算机二级MSOffice高级应用考试基础知识 计算机应用主要是科学计算.工程设计等数值应用,这一阶段使用第一代电子管计算机(数字机和模拟机),硬件体积庞大,运算速度慢,系统维护需要较高的技术,软件尚 ...
最新文章
- python 对象_python面向对象
- 分享一百多套开发视频教程的下载地址(转)
- 【Android 逆向】ELF 文件格式 ( ELF 程序头入口大小 | ELF 程序头入口个数 | ELF 文件节区头入口大小 | ELF 文件节区头入口个数 | 字符表序号 )
- 大学c语言程序设计期末考试试卷,大学大一c语言程序设计期末考试试卷及答案.doc...
- 无法使用此安装程序来安装 .net framework_NuGet是什么?理解与使用(上)
- MYSQL常用操作(一)之设置ROOT密码,连接,常用命令
- linux下启动nfs服务,linux下Samba服务和NFS服务配置的方法
- Drawable之color示例
- CFS调度主要代码分析二
- matlab求解极限问题(limit函数的用法)
- VUE调用打印机打印页面
- 主流流媒体服务器介绍
- Little Dima and Equation
- 验收测试的名词解释_验收测试工作流程及准则
- Java英语单词(5000个)
- abd获取手机应用的安装包
- 决策树之C4.5实现(离散属性与连续,属性并存)
- 交易所通用质押式回购
- uuid php,php生成uuid介绍
- OpenSSL 代码问题漏洞(CVE-2020-1971)(CVE-2020-1967)
热门文章
- android自定义3d饼图,Android使用j4lChartAndroid插件绘制3D饼图
- Macbook用户如何在外部显示器上获得4K 60 FPS的技巧
- 单元测试junit4
- 最新前端开发面试笔试题及答案---图片(面试题系列持续更新中)(4)
- 【板栗糖GIS】win11提示无法成功操作 因为文件包含病毒
- MaxEnt软件的使用
- 某电商网站的数据库设计(6)——创建查询销售数据的视图
- 以三维视频融合为核心的[点卯.增强虚拟全景平台]免费版,在智慧城市和安防监控行业中的应用
- 数字通信系统中的频带利用率
- POJ - Frogs' Neighborhood(Havel-Hakimi)