今天给大家分享一个dos程序的源代码
这个程序是本人在学习中的经验分享
如果有问题或者建议,欢迎大家一起交流
源代码:
/*本程序为一个进制转换器
本程序不作为商业用途,完全为技术交流
喜欢C语言的同学关注我的博客,有值得推荐的我一定会推荐给大家*/
#include <stdio.h>
#include<stdlib.h>
#include <time.h>
#include<windows.h> //对函数的声明
void fact1();
int func1(int n);
void func2(int n, int num);
void func3(int *a, int i, int n);
void func4(int m);
void func5(); int menu; //定义菜单做为一个全局变量
int count = ;
int main(void)
{
//给菜单设置一个循环
do
{
printf("第%d次\n", count++);
printf("**********************************************\n");
//调用倒计时函数
func5();
//定义菜单的功能
puts("!!欢迎使用进制转换器!!\n");
puts("1.十进制->二进制");
puts("2.十进制->八进制");
puts("3.十进制->十六进制");
puts("0.退出\n");
//输入菜单
printf("请输入你的选项:"); scanf_s("%d", &menu);
//执行菜单
if (menu == ) break;
else if (menu >= && menu <= )
fact1();
else
printf("抱歉,你输入的选项有误;请重新输入!!!\n");
printf("\n**********************************************\n");
printf("\n\n");
} while (menu != ); }
//定义菜单为1时的函数
void fact1()
{
int num;
int n;
printf("请输入一个数:"); scanf_s("%d", &num);
n = func1(menu);
func2(n, num); }
//定义需要转化的进制数的函数
int func1(int n)
{
//如果为1,则返回2进行二进制
if (menu == )
return ;
//如果为2,则返回8进行八进制
else if (menu == )
return ;
else
return ;
}
//定义处理进制的函数
void func2(int n, int num)
{
int i = ;
int a[];
do
{
*(a + i) = num % n;
num /= n;
i++;
} while (num != );
func3(a, i, n);
}
//定义输出进制的函数
void func3(int *a, int i, int n)
{
int j;
printf("转换为%d进制为:", n);
for (j = i - ;j >= ;j--)
{
if (n == && (*(a + j)) >= && (*(a + j)) <= )
func4((*(a + j)));
else
printf("%d", *(a + j));
}
}
//定义转换16进制的时候函数
void func4(int m)
{
switch (m)
{
case : printf("A"); break;
case : printf("B"); break;
case : printf("C"); break;
case : printf("D"); break;
case : printf("E"); break;
case : printf("F"); break;
}
}
//自定义倒计时函数
void func5()
{
int i;
//从5开始倒计时
for (i = ;i >= ;i--)
{
printf("%d\b", i);
Sleep(); //设置延时1秒
}
printf("\b");
}
本代码仅大家学供习交流,不做其它用途