一:运行截图

 二:介绍函数

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的更多相关文章

  1. OO第二次博客作业—17373247

    OO第二次博客作业 零.写在前面 OO第二单元宣告结束,在这个单元里自己算是真正对面向对象编程产生了比较深刻的理解,也认识到了一个合理的架构为编程带来的极大的便利. (挂三次评测分数 看出得分接近等差 ...

  2. OO第二次博客作业——电梯调度

    OO第二次博客作业——电梯调度 前言 最近三周,OO课程进入多线程学习阶段,主要通过三次电梯调度作业来学习.从单部电梯的傻瓜式调度到有性能要求的调度到多部电梯的调度,难度逐渐提升,对同学们的要求逐渐变 ...

  3. Java第二次博客作业

    Java第二次博客作业 时间过的很快啊,在不知不觉中这门课程的学习也就快要过去一半了,现在就来总结一下在这个第二个月的学习当中存在的问题以及得到的心得. 1.前言 第四次题目集和第五次题目集给我的感觉 ...

  4. OO第二次博客作业(第二单元总结)

    在我开始写这次博客作业的时候,窗外响起了希望之花,由此联想到乘坐自己写的电梯FROM-3-TO--1下楼洗澡,然后······ 开个玩笑,这么辣鸡的电梯肯定不会投入实际使用的,何况只是一次作业.还是从 ...

  5. 第二周博客作业 <西北师范大学| 周安伟>

    一,本周助教小结 逐步开始适应助教工作,对学生发布的博客进行点评,查看学生对软件工程前期的准备情况. 二,助教本人博客 https://home.cnblogs.com/u/zaw-315/ 三,学生 ...

  6. C语言博客作业——函数

    一.PTA实验作业 题目1:6-6 使用函数输出水仙花数 1.本题PTA提交列表 2. 设计思路 int narcissistic( int number ) //函数定义 1.定义整数型变量a.i分 ...

  7. C语言博客作业--函数 陈张鑫

    一.PTA实验作业 题目1:6-3 使用函数判断完全平方数 1. 本题PTA提交列表 2. 设计思路 1.定义int IsSquare( int n )函数 2.判断(sqrt(n)是否为整数 3., ...

  8. C语言第二次博客作业---分支结构

    一,PTA实验作业 题目1.计算分段函数 本题目要求计算下列分段函数f(x)的值: 1.实验代码 double x,result; scanf("%lf",&x); if( ...

  9. C语言第二次博客作业——分支结构

    一.PTA实验作业 题目1:计算分段函数 1.实验代码 #include<stdio.h> #include<math.h> int main(void) { double x ...

随机推荐

  1. SQL Server系统函数:类型转换函数

    原文:SQL Server系统函数:类型转换函数 1.基本的转化 SELECT CAST(2008 as varchar(4)) + ' year!' SELECT CONVERT(varchar(4 ...

  2. gin框架实现一个简单的项目 ③

    承接:gin框架封装自己的路由 ② 对于一个项目来说,需要将各个功能模块分开,也就是所谓的三层模型,这里介绍一下个人的做法: contorller主要负责路由 model主要负责程序输入输出的数据 s ...

  3. TypeScript入门七:TypeScript的枚举

    关于枚举 数字枚举 字符串枚举 异构枚举 计算的和常量成员 运行时的枚举与反向映射 常量枚举与外部枚举 一.关于枚举 枚举:一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计 ...

  4. vagrant 搭建开发环境

    虚拟机盒子地址 https://app.vagrantup.com/boxes/search vagrant init hirocom/centos7.2vagrant up 修改配置 config. ...

  5. with语句和空语句

    with语句能够为一组语句创建缺省的对象,在一组语句中,任何不指定对象的属性引用都将被认为是缺省对象. 语法如下: with(object){ statements; } <body> & ...

  6. 美团Java工程师面试题(2018秋招)

    第一次面试 1.小数是怎么存的 2.算法题:N二进制有多少个1 3.Linux命令(不熟悉 4.JVM垃圾回收算法 5.C或者伪代码实现复制算法 6.volatile 7.树的先序中序后序以及应用场景 ...

  7. mount命令解析

    可以参考两位大神的理解 Linux mount 命令 Linux的mount命令详解

  8. C# UDP发送和接收

    using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Ne ...

  9. Linux学习笔记(十)shell基础:历史命令、命令补全、输出重定向、输出重定向

    一.历史命令 history [选项] [历史命令保存文件] -c 清空历史命令 -w 吧缓存中的历史命令写入历史命令保存文件~/.bash_history中 系统会默认将上次注销登录(正确退出)之前 ...

  10. windows7重置网卡命令

    点击windows左下角菜单键,输入cmd 然后鼠标右键 cmd 以管理员身份运行,并输入命令 netsh winsock reset, 然后回车执行. 系统会提示要求重启计算机. 重启后即重置网卡成 ...