第二次博客作业: 函数+进制转换器v1.0beta
一:运行截图
二:介绍函数
1,
int panduan1(int n,char a[],int count,int sign)//判断用户是否输入了除数字和a-f范围外的字符
{ int i;
for(i=;i<count;i++){
if(n!=&&n!=&&n!=&&n!=)return ;
if(a[i]>='a'&&a[i]<='f')a[i]-=;
if(a[i]>=''&&a[i]<='')a[i]-=;
if(a[i]>=n){
if(sign!=){
return ;
}
return ;
}
}
return ;
}
2,
int panduan2(char a[],int count,int sign)// 判断用户输入的待转化的数是否符合标准
{
int i,x;
x=count;
if(sign!=)return ;
for(i=;i<count;i++){
if(a[i]>='a'&&a[i]<='f')x--;
if(a[i]>='A'&&a[i]<='F')x--;
if(a[i]>=''&&a[i]<='')x--;
}
if(x==)return ;
return ;
}
3,
void change(int n,char a[],int m,int count)//将用户输入的数先转化成十进制数,在转化成想要转化成的进制数
{
int i,j,k=,num,sum=,c;
char b[];
for(i=;a[i]!='\0';i++)
{
if(a[i]>=''&&a[i]<='')num=a[i]-'';
else
num=a[i]-'a'+;
sum=sum*n+num;
}
while(sum)
{
c=sum%m;
b[k++]="0123456789abcdef"[c];
sum=sum/m;
}
i=;
for(i=k-;i>=;i--)
{
if(b[i]>=''&&b[i]<='')printf("%d",b[i]-'');
else
printf("%c",b[i]);
}
printf("\n");
}
三:展示main函数
int main()
{
printf("二进制,八进制,十进制转化器。\n");
int m, i, count =, among,n,flag=,x;
int sign=;
static char a[],ch,b[];
L:x=;
do
{
printf("输入要转化的整数:\n");
for (i = ; i < ; i++)
{
scanf("%c", &a[i]);
if (a[i] == '\n')
{
break;
}
count++;
}
if(count!=)break;
}
while (count == );
for(i=;i<count;i++){
if(a[i]>='A'&&a[i]<='F'){
a[i]=a[i]+;
}
}
for(i=;i<count;i++){
if(panduan2(a,count,sign)){
sign++;
printf("出错了,重新输入一遍吧\n");
goto L;
}
for(i=;i<count;i++)
35 b[i]=a[i];
b[i]='\0';
}
printf("输入此整数的进制:\n");
scanf("%d", &n);
ch=getchar();
while(panduan1(n,a,count,sign))
{
printf("出错了,重新输入一遍吧!\n");
scanf("%d", &n);
}
sign=;
printf("输入想要转化成的进制\n");
scanf("%d",&m);
while(m!=&&m!=&&m!=&&m!=)
{
printf("出错了,重新输入一遍吧!\n");
scanf("%d", &m);
}
printf("转换成功:");
change(n,b,m,count);
}
四:思维导图
五:问题与解决
1,在编写程序之前,对二进制,八进制,十进制和十六进制间的互相转化计算并不非常明白,所以先要去查询课本和网上计算方法,先搞明白各个进制数之间是如何转化的,才可以开始编写程序,在网上了解到,先把想要转化的数转化成一个十进制数,因为十进制数进行进制转化时的计算较为简单,所以按这种思路去编写程序比较容易。
2,运用函数是并没有分清需要返回值和不需要返回值的用法,多次在int,double之间徘徊,后来通过询问同学了解到不需要返回值的函数应该使用void,还是因为pta题刷太少,遇到的都是需要返回值的题目,再加上自己为了做题而做题,没有深入的去了解,造成知识的空缺。
3,刚学习数组的应用,对数组的用法还不是非常了解和熟练,并不懂得可以输入字符串数组等等的操作,再通过查询网络资料和请教同学之后,才逐渐完善了对这方面知识的不足。
六:代码互评
网络1914宋思坡
if(c>=)
l++;
y/=;
s10=s10+c*pow(,i);
i++;
}
y=s10;
i=;
while(y!=){
c=y%;
y/=;
s8=s8+c*pow(,i);
i++;
}
if(l==){
printf("二进制转为\n");
printf("八进制:%d\n十进制:%d\n",s8,s10);
}
else
printf("这个输入是错的鸭");
}
他的判断输入的数是否正确的代码比较简洁明了,不像我一样又写了两个函数,效率较高,而且他的判断放在main函数中,写起来也更加方便,快捷有效的编写程序是非常值得学习的。
七:总结
1,编写一个可以使用的程序真是难难难,需要多方面的知识做基础,如果在编写过程中遇到各种各样的问题,一定要先自己解决,不管是翻书还是查询网络资料,都要先自己尝试,不能问别人,实在是搞不懂,再去请教别人,这次作业也让我学会了遇事先靠自己,比如在进制之间的转化知识方面,我就理解的不够透彻,所以自己在网上查找资料,自己拿笔纸演算,一步步摸索出计算规律,才能完成此次作业。
2,对于函数,它的用法真是多种多样,只有你想不到,没有它用不到,函数里的嵌套递归等用法,功能非常强大,可以做到许多运算,灵活运用函数可以使你的程序发挥更大的能力。
第二次博客作业: 函数+进制转换器v1.0beta的更多相关文章
- OO第二次博客作业—17373247
OO第二次博客作业 零.写在前面 OO第二单元宣告结束,在这个单元里自己算是真正对面向对象编程产生了比较深刻的理解,也认识到了一个合理的架构为编程带来的极大的便利. (挂三次评测分数 看出得分接近等差 ...
- OO第二次博客作业——电梯调度
OO第二次博客作业——电梯调度 前言 最近三周,OO课程进入多线程学习阶段,主要通过三次电梯调度作业来学习.从单部电梯的傻瓜式调度到有性能要求的调度到多部电梯的调度,难度逐渐提升,对同学们的要求逐渐变 ...
- Java第二次博客作业
Java第二次博客作业 时间过的很快啊,在不知不觉中这门课程的学习也就快要过去一半了,现在就来总结一下在这个第二个月的学习当中存在的问题以及得到的心得. 1.前言 第四次题目集和第五次题目集给我的感觉 ...
- OO第二次博客作业(第二单元总结)
在我开始写这次博客作业的时候,窗外响起了希望之花,由此联想到乘坐自己写的电梯FROM-3-TO--1下楼洗澡,然后······ 开个玩笑,这么辣鸡的电梯肯定不会投入实际使用的,何况只是一次作业.还是从 ...
- 第二周博客作业 <西北师范大学| 周安伟>
一,本周助教小结 逐步开始适应助教工作,对学生发布的博客进行点评,查看学生对软件工程前期的准备情况. 二,助教本人博客 https://home.cnblogs.com/u/zaw-315/ 三,学生 ...
- C语言博客作业——函数
一.PTA实验作业 题目1:6-6 使用函数输出水仙花数 1.本题PTA提交列表 2. 设计思路 int narcissistic( int number ) //函数定义 1.定义整数型变量a.i分 ...
- C语言博客作业--函数 陈张鑫
一.PTA实验作业 题目1:6-3 使用函数判断完全平方数 1. 本题PTA提交列表 2. 设计思路 1.定义int IsSquare( int n )函数 2.判断(sqrt(n)是否为整数 3., ...
- C语言第二次博客作业---分支结构
一,PTA实验作业 题目1.计算分段函数 本题目要求计算下列分段函数f(x)的值: 1.实验代码 double x,result; scanf("%lf",&x); if( ...
- C语言第二次博客作业——分支结构
一.PTA实验作业 题目1:计算分段函数 1.实验代码 #include<stdio.h> #include<math.h> int main(void) { double x ...
随机推荐
- tiny-Spring【1】
Spring框架的两大特性:IOC.AOP 1,IOC特性 IOC:IOC,另外一种说法叫DI(Dependency Injection),即依赖注入.它并不是一种技术实现,而是一种设计思想. 在任何 ...
- C#多线程的简单理解
一.CLR线程池基础 创建和销毁线程是一个昂贵的操作,所以CLR管理了一个线程池(thread pool),可以将线程池看成一个黑盒. CLR初始化时,线程池中是没有线程的.线程的初始化与其他线程一样 ...
- Trie-Tree
最近写了一些关于字典树的题目,这里做个简单的整理. 字典树,又叫单词查找树,顾名思义就是查单词的(不仅仅o),和词典一样.不同的是词典是用纸做的,而字典树是用树形结构构建的. 她用来快速检索你要的内容 ...
- 使用zrender.js绘制体温单(1)
之前公司请外包做了一个体温单使用的zrender.js 但是代码比较复杂维护性比较低再加上自己技术也不行 最近闲下来的时候看了一下zrender的官网慢慢的摸索并读了下之前的代码,感觉实际并不难,就自 ...
- 前端html转pdf
转 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&q ...
- 使用Canvas压缩图片
讲干货,不啰嗦,当涉及对图片有质量压缩要求的时候,可以使用Canvas实现图片压缩. 步骤: 1.获取img元素,既要压缩的图片 2.创建canvas对象 3.使用canvas的drawImage方法 ...
- SAP WebIDE里UI5应用的隐藏文件project.json
在SAP WebIDE UI5应用编辑器里的菜单View->Show Hidden files点击后,即可发现项目文件夹下有一个隐藏文件project.json: 内容如下: 这也解释了为什么b ...
- 新人数据库连接不上或数据库配置管理器里面sql服务打不开问题
新人在链接数据库时可能会出现链接不上数据库,这个问题解决方法是大家找到配置管理器里面,把那些停用的功能开启一下应该就可以.但是我们有的电脑还会遇到里面配置里面什么也没有的情况,这个时候我们就得到控制面 ...
- 关于zsh在使用scp时报错zsh: no matches found: scp
root@banxia:scp root@172.16.13.150:/123/* . zsh: no matches found: root@172.16.13.150:/123/* root@ba ...
- 使用java中的反射获得object对象的属性值
知识点:使用java中的反射获得object对象的属性值 一:场景 这两天开发代码时,调用别人的后台接口,返回值为Object对象(json形式的),我想获得object中指定的属性值,没有对应的ge ...