一:运行截图

 二:介绍函数

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. (七)Redis之持久化之RDB方式

    一.持久化概念 所有的数据都存在内存中,从内存当中同步到硬盘上,这个过程叫做持久化过程. 使用方法: 1. rdb持久化方法:在指定的时间间隔写入硬盘 2.         aof方式:将以日志,记录 ...

  2. (三)springmvc之注解的基本使用

    一.@Controller @Controller 标记一个类是Controller 二.RequestMapping  地址映射 2.1 Value的操作. 注解在类上面    (父)       ...

  3. 查找-------(HashCode)哈希表的原理

    这段时间 在 准备软件设计师考试    目的是想复习一下  自己以前没怎么学的知识    在这个过程中  有了很大的收获  对以前不太懂得东西  在复习的过程中  有了很大程度的提高 比如在复习 程序 ...

  4. python练习:函数2

    习题: 定义一个方法get_num(num),num参数是列表类型,判断列表里面的元素为数字类型.其他类型则报错,并且返回一个偶数列表:(注:列表里面的元素为偶数). def get_num(num) ...

  5. Vue页面手动刷新,导航栏激活项还原到初始状态问题解决方案

    场景描述:在页面中存在顶部导航和左侧导航,左侧导航和右侧内容区使用了命名视图实现,点击左侧导航的链接时,右侧内容区相应显示不同组件内容.问题:在当前链接手动刷新浏览器(例如:浏览器地址为/enterp ...

  6. docker-社区版(CE)安装

    目录 docker-社区版(CE)安装 安装步骤 docker-社区版(CE)安装 该安装方法是 基于centeros7 及其以上版本的安装方式,完全参考 docker官网提供的安装文档,官网安装文档 ...

  7. Ubuntu安装telnet

    安装 # sudo apt-get install xinetd telnetd 配置 -> 加入以下选项 # sudo vi /etc/inetd.conf telnet stream tcp ...

  8. man 手册--nc

    man 手册--nc NCAT(1) Ncat Reference Guide NCAT(1) NAME ncat - Concatenate and redirect sockets SYNOPSI ...

  9. Image Processing and Analysis_8_Edge Detection:Edge Detection Revisited ——2004

    此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...

  10. less运算

    less里面是可以有运算的,任何数字,颜色或者变量都可以参与与暗算,运算应该被包裹在括号中.   @test_width:300px; .box_width{ width: (@test_width ...