一:运行截图

 二:介绍函数

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. (三)SpringBoot之配置文件详解:Properties和YAML

    一.配置文件的生效顺序,会对值进行覆盖: 1. @TestPropertySource 注解 2. 命令行参数 3. Java系统属性(System.getProperties()) 4. 操作系统环 ...

  2. Asp.Net Core 存储Cookie 的问题

    Asp.Net Core 2.1生成的项目模板默认实现了<欧洲常规数据保护法规 (GDPR)>支持.这就使得我们的程序要想成功的存储除了用户身份以外的cookie通常是需要用户同意的. 3 ...

  3. 远程调用cmd更新本地jar

    最近遇到一个项目需求需要实现远程更新,但是本地项目无法更新自己,这让博主很是头疼,既然自己无法更新自己的话,那就自建新的项目,通过本地项目来调用新项目接口来更新本地项目. 代码如下: /** * 重启 ...

  4. js入门第一篇

    简介:JavaScript 运行在客户端(浏览器)是一种客户端语言,javascript的引擎被称为JavaScript引擎,为浏览器的一部分广泛用于客户端的脚本语言 应用场景:网页特效, 服务端开发 ...

  5. .tar.gz文件和.tar.xz文件的解压和压缩

    1,.tar文件 tar  -cvf 压缩 tar  -xvf 解压 例如: tar -xvf mysql-8.0.16-linux-glibc2.12-x86_64.tar 2,.xz文件 xz  ...

  6. MySQL无法启动问题解决Warning: World-writable config file ‘/etc/my.cnf’ is ignored

    今天重启一台内网服务器,发现mysql无法正常重启,执行systemctl start mysql,报错如下 Starting LSB: start and stop MySQL... Dec 11 ...

  7. MySQL之Text Protocol

    1)[01]COM_QUIT 告诉服务器,客户端想要关闭连接 返回:或者关闭一个连接或者一个OK_Packet 有效负载: 1 [01]COM_QUIT 字段: command(1)--0x01 CO ...

  8. C#当中使用async和await

    最近在写程序的时候,经常遇到大量需要异步访问的情况,但是对于async和await到底怎么写,还不是非常明确.于是参考<C#图解教程>了异步编程一节. 1.普通的程序怎么写? class ...

  9. BZOJ 4873 寿司餐厅 网络流

    最大权闭合子图 1.每个区间收益(i,j)对应一个点 权值为正连S 负连T 2.每个区间收益向其子区间收益(i+1,j)与(i,j-1)对应的两个点连边 容量为INF 3.每个寿司类型对应一个点 连一 ...

  10. java中的io流总结(一)

    知识点:基于抽象基类字节流(InputStream和OutputStream).字符流(Reader和Writer)的特性,处理纯文本文件,优先考虑使用字符流BufferedReader/Buffer ...