一:运行截图

 二:介绍函数

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之持久化之AOF方式

    一.概念 AOF方式:将以日志,记录每一个操作 优势:安全性相对RDB方式高很多: 劣势:效率相对RDB方式低很多: 二.案例 appendonly no默认关闭aof方式 我们修改成yes 就开启 ...

  2. (五)springmvc之获取表单提交的数据

    8.1:使用Request <form method="post" id="form1" action="<%=request.getCo ...

  3. qt连接oracle数据库

    由与qt开源版本没有提供oracle数据库驱动,需要自己根据源代码来手动编译oracle驱动. 经过近三天的折腾,终于成功编译oracle驱动,连接到数据库 ps:期间经过各种失败疼苦迷茫.现在终于完 ...

  4. 关于一个mvc架构的cms的后台getshell

    都知道,mvc的话 除了根目录还有public目录可以访问,其他的访问都是不行的,因为会默认都是会解析url 然后我们来看今天的猪脚 大概的图片上传还有远程文件加载我黑盒测过了  就是想捞一个快一点的 ...

  5. Ubuntu系统---中英文问题小记

    Ubuntu系统---中英文问题小记 Ubuntu系统安装的时候,选择English版本,这样进入tty模式,中文提示不会显示乱码,终端下也是提示英文版的信息. Ubuntu 系统中文显示乱码的问题解 ...

  6. 【Jenkins】忘记admin密码,可以用此方法帮你解决

    突然有一日发现自己忘记了jenkins的管理员密码,因为我一直登录的是另外一个非管理员账户.如果出现必须要使用管理员账户操作的,比如用户管理那里的,必须要管理员账号吧,这就尴尬了. 很方的我打开安装j ...

  7. 启动nginx 80端口被占用:tcp 0 0 127.0.0.1:80 127.0.0.1:34932 TIME_WAIT -

    1.启动nginx命令./sbin/nginx 2.提示80端口被占用 nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already ...

  8. 原生JS实现简单富文本编辑器

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. hbase实践之数据读取详解

    hbase基本存储组织结构与数据读取组织结构对比 Segment是Hbase2.0的概念,MemStore由一个可写的Segment,以及一个或多个不可写的Segments构成.故hbase 1.*版 ...

  10. v-model原理解析

    vue中v-model可以实现数据的双向绑定,但是为什么这个指令就可以实现数据的双向绑定呢? 其实v-model是vue的一个语法糖.即利用v-model绑定数据后,既绑定了数据,又添加了一个inpu ...