进制转换巩固练习之c语言实现

C Primer Plus 第九章 函数 编程练习答案(自作) 阅读详情


之前自己学过一些c语言的知识,刚开始就在进制转换那里卡住了,所以看到毕老师讲的进制转换的知识,很有感觉,呵呵

看懂后,就想用C语言试试写一下,发现了很多问题,代码中都有说明。代码下载

 

文件说明:

思考及实现过程和存在的问题注释里都有详细说明
可以直接运行对应的exe文件测试效果

进制转换.c
仿照毕老师Java教程中的进制转换方法写的

测试结果:
C语言中没有无符号右移,所以不能直接用这个方法转换负数
如果输入负数,会出现问题,继续思考实现方法
在进制转换Update.c文件中已经实现了负数转换

/*
2012年11月21日9:19:25
仿照毕老师Java教程中的进制转换来一下

测试结果:
C语言中没有无符号右移,所以不能直接用这个方法转换负数
如果输入负数,会出现问题,继续思考实现方法
在进制转换Update.c文件中已经实现了负数转换
*/
#include <stdio.h>

void trans(int, int, int);

int main(void)
{
	int num, base;
	char ch;
	while (1)
	{
		printf("输入要转换的数字:");
		scanf("%d", &num);
		printf("输入要转换的进制(2,8,16):");
		scanf("%d", &base);

		switch (base)
		{
		case 2: trans(num, 1, 1);
			break;
		case 8: trans(num, 7, 3);
			break;
		case 16:trans(num, 15, 4);
			break;
		default: printf("不支持的类型转换\n");
		}

		printf("继续请输入“Y”或“y”,退出请按任意键:");
		getchar();
		ch = getchar();
		if (ch=='Y' || ch=='y')
		{
			continue;
		} 
		else
		{
			break;
		}
	}
	
	return 0;
}

//只将转换后的结果输出吧,因为都是字符,还不能参加运算
void trans(int num, int base, int offset)
{
	char chs[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
	char arr[32] = { ' '};
	int pos = 32-1, temp;

	while (num!=0)
	{
		temp = num & base;
		arr[pos--] = chs[temp];
		num = num >> offset;	//C语言中不知道有没有无符号右移
	}

	for (temp=pos; temp<32; temp++)
	{
		printf("%c  ", arr[temp]);
	}
}



进制转换update.c
已经可以实现十进制数到2、8、16进制之间的转换
另一个进制转换toInt.c文件中是实现其他进制到十进制的转换

/*
2012年11月21日9:19:25
仿照毕老师Java教程中的进制转换来一下

C语言中没有无符号右移,所以不能直接用这个方法转换负数

下面的程序已经可以实现十进制数到2、8、16进制之间的转换
另一个进制转换toInt.c文件中是实现其他进制到十进制的转换
*************************
2012年11月23日10:38:03
负数转换方法想出来了
思路:
转换时先判断下是否是负数,是的话先往数组尾部写一个负号
然后按照原来步骤与上一个base数据,再右移offset位
再次判断是否是负数,因为高位补1后就还是负数
如果右移后还是负数(高位补1),就将右移后的数据再与上一个对应的数将前边的几位0转换为1后继续循环

高位1换为0要与上的数(用16进制表示):C语言中注意int在不同系统中所占字节数的大小
sizeof(int) = 4时
		1111-1111 1111-1111 1111-1111 1111-1111
toBin	0111-1111 1111-1111 1111-1111 1111-1111	0X 7-F F-F F-F F-F
toOct	0001-1111 1111-1111 1111-1111 1111-1111 0X 1-F F-F F-F F-F
toHex	0000-1111 1111-1111 1111-1111 1111-1111	0X 0-F F-F F-F F-F

sizeof(int) = 2时
		1111-1111 1111-1111
toBin	0111-1111 1111-1111 0X 7-F F-F
toOct	0001-1111 1111-1111 0X 1-F F-F
toHex	0000-1111 1111-1111 0X 0-F F-F
*/

//总算OK了   2012年11月23日13:26:34

#include <stdio.h>

void trans(int, int, int);

int main(void)
{
	int num, nbase;
	char ch;

	while (1)
	{
		printf("输入要转换的数字:");
		scanf("%d", &num);
		printf("输入要转换的进制2/8/16:");
		scanf("%d", &nbase);

		switch (nbase)
		{
		case 2: trans(num, 1, 1);
			break;
		case 8: trans(num, 7, 3);
			break;
		case 16:printf("0X"); trans(num, 15, 4);
			break;
		default: printf("不支持该进制类型的转换\n");
			break;
		}

		printf("继续请输入“Y”或“y”,退出请按任意键:");
		getchar();
		ch = getchar();
		if (ch=='Y' || ch=='y')
		{
			continue;
		} 
		else
		{
			break;
		}
	}
	
	return 0;
}

//不用那么复杂了  直接来吧
void trans(int num2, int base, int offset)
{
	char chs[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
	char arr[32] = { ' '};
	int pos = 32-1, temp;
	int val;	//用来存放将高位转换为0时要与上的数据
	int num = num2;
	if (num2==0)
	{
		printf("0\n");
		return ;
	}
	
	while (num!=0)
	{
		if (num<0 && base!=1)	//如果是负数, 二进制就不用写负号了,所以最后还要判断num是否是负数
		{						//因此函数中不能改动num原值,二进制的话直接将其二进制形式输出即可
		//	chs[pos--] = '-';	//这里又搞错了  因为打印时是倒着打印的  所以不应该先加负号 应该最后加负号
			num = -1*num;	//已经写完负号了 就标记为负数了 剩下的直接转正数部分就OK了
		}
		temp = num & base;
		arr[pos--] = chs[temp];
		num = num >> offset;
		//还要判断 因为上面的没有管负数二进制情况
		if (num<0)	//如果高位补的是1,还是负数,就将高位置0
		{
			int sizeInt = sizeof(int);	//判断int类型所占的字节数
			if (sizeInt==4)
			{
				val = 0x7fffffff;
			} 
			else if (sizeInt==2)
			{
				val = 0x7fffffff>>16;	//右移两个字节
			}
			num = num & val;
		}

		//最后再次判断输入的数是否负数 在数组中加上负号  二进制排除在外
		if (num2<0 && base!=1)
		{
			arr[pos] = '-';
		}
	}
	//输出
	for (temp=pos; temp<32; temp++)
	{
		printf("%c ", arr[temp]);
	}
	printf("\n");
}


//下面的都没什么用了 不用那么复杂了
/*感兴趣的可以看看我当时的思考过程

//用来获取修改高位补0的数据,根据不同进制转换时的基数返回相应的值
//默认int类型占4个字节,用时进行sizeof(int)判断,2字节时将结果右移16位即可
int getVal(int base)
{
	switch (base)
	{
	case 1: return 0X7FFFFFFF;
		break;
	case 7: return 0X1FFFFFFF;
		break;
	case 15: return 0X0FFFFFFF;
		break;
	default: printf("不支持的转换进制");

	}
	return 0;
}

//****试试看
//先将负数提升为long类型,将高位全置为0,右移一次后在转为int
//不行   试验后知道,VC中int和long全是4个字节  转后还是负数  失败呀  浪费好长时间  还不知道原因呢
void trans2(int num, int base, int offset)
{
	char chs[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
	char arr[32] = { ' '};
	int pos = 32-1, temp;
	long l;

	if (num==0)
	{
		printf("0\n");
		return ;
	}
	
	while (num!=0)
	{
		if (num<0 && base!=1)	//如果是负数, 二进制就不用写负号了
		{
			chs[pos--] = '-';
			l = (long)num & 0xFFFFFFFF;	//将num转换为long并将有效位保留,高位置0
			printf("%l\n", l);
		}
		
		temp = l & base;
		arr[pos--] = chs[temp];
		l = l >> offset;
		num = (int)l;
	}
	
	for (temp=pos; temp<32; temp++)
	{
		printf("%c ", arr[temp]);
	}
	printf("\n");
}
*/

//修改转换过程,加入负数判断

//**********负数二进制可以转换了,8、16进制负数转换会出错,原因还没找到,先吃饭
/*
************问题出在这里了,看打印提示:
输入要转换的数字:10
输入要转换的进制:8
1: temp= 10 & 7 = 2
2: num= 1 >> 3 = 1
第一次操作后temp=2  num=1
1: temp= 1 & 7 = 1
2: num= 0 >> 3 = 0
第一次操作后temp=1  num=0

输入要转换的数字:-10
输入要转换的进制:8
判断num《0 写负号成功
1: temp= -10 & 754974727 = 754974726	
这里&上的数应该是7 怎么变这么大了???
	 10——12
	-10——-12
-10  二进制形式:
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0
&															 1 1 1
--------------------------------------------------------------------
   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0


#############################################################
※	终于灵光一现  知道解决方法了  
※	负数转二进制就按原来方式转就可以了,因为内存中存储的本身就是二进制形式
※	转8、16进制只想在正数基础上加一个负号,就不能按负数二进制形式转了
※	因为负数在计算机中是按反码加1存在的,直接转出来肯定不对了,都不是原来的数据了
※	所以判断 只要是负数转8、16进制,就先写一个负号后,立马将其转为正数即可
※				妈的  这么简单的问题被我搞的这么复杂
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
#############################################################
*/
/*
void trans_分析出原因了(int num, int base, int offset)
{
	char chs[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
	char arr[32] = { ' '};
	int pos = 32-1, temp;
	int val;	//用来存放将高位转换为0时要与上的数据
	if (num==0)
	{
		printf("0\n");
		return ;
	}
	
	while (num!=0)
	{
		if (num<0 && base!=1)	//如果是负数, 二进制就不用写负号了
		{
			chs[pos--] = '-';
			printf("判断num《0 写负号成功\n");
		}
		temp = num & base;
		printf("1: temp= %d & %d = %d\n", num, base, temp);
		arr[pos--] = chs[temp];
		num = num >> offset;
		printf("2: num= %d >> %d = %d\n", num, offset, num);
		printf("第一次操作后temp=%d  num=%d\n", temp, num);

		if (num<0)	//如果高位补的是1,还是负数,就将高位置0
		{
			int sizeInt = sizeof(int);	//判断int类型所占的字节数
			printf("第一次移位后补的是1,还为负\n");
			if (sizeInt==4)
			{
				val = getVal(base);
			} 
			else if (sizeInt==2)
			{
				val = getVal(base)>>16;	//右移两个字节
			}
			num = num & val;
			printf("第一次移位为负,高位补0 & 0X %X 后num=%d\n", val, num);
		}
	}

	for (temp=pos; temp<32; temp++)
	{
		printf("%c ", arr[temp]);
	}
	printf("\n");
}


//只将转换后的结果输出吧,因为都是字符,还不能运算
void trans_old(int num, int base, int offset)
{
	char chs[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
	char arr[32] = { ' '};
	int pos = 32-1, temp;

	while (num!=0)
	{
		temp = num & base;
		arr[pos--] = chs[temp];
		num = num >> offset;	//C语言中不知道有没有无符号右移
	}

	for (temp=pos; temp<32; temp++)
	{
		printf("%c  ", arr[temp]);
	}
}
*/


进制转换toInt.c
趁热打铁 再写一个将2、8、16进制转换为10进制的程序

/*
2012年11月23日13:27:44

趁热打铁 再写一个将2、8、16进制转换为10进制的程序吧
10进制转2、8、16进制程序参看:进制转换update.c

目前的程序没有对负数进行判断,所以还不能接收负数进行转换
没有解决的问题:
C中没有字符串的概念,字符串都是以字符数组的形式存在的,
最后打印的结果中想把原来输入的数据也打印一遍发现不太好弄
想用一个函数将字符数组中的字符组成一个字符串返回,发现即便是返回了也还是一个字符数组
字符数组打印时用一个%s接收打印出的结果真是无法想像呀,试试就知道了
还有一个问题,输入二进制数据时1、11都可以正常转换,
但输入111就应该是7却转换为6,其他二进制也有不同形式的错误,

 还没有解决的问题,先记录下来,目前主攻方向是Java,这个算课余消遣即兴发挥了

思路:
用字符数组接收其他进制数据,输入时就指定好输入的数据属于那种进制类型
计算出数组长度,因为要从低位开始转换

字符转数字
数字	ASCII
 0		  48
 a		  97
 A		  65

char[] arr 接收数据
len=arr.length
for(i=len-1, x=1; i>=0; i--, x=x*base)
	sum = sum + arr[i]*x;
  ↑---------------------↑
上面的arr[i]要转换成数字,sum运算之前 先判断arr[i]
if 0=<arr[i]<=9
	arr[i]=arr[i]-'0';
if arr[i]在a—z或A—Z之间
	arr[i]=arri-'a'或arri-'A'

*/

/*
问题:
base不能手动运行时指定  一手动指定就挂在标记位  死掉
######base问题原因
输入时用的base接收出问题了  应该用&base!!!!这么基础的问题还犯错误,实在不应该啊

base定为2时 运行正常
base定为8时,好像也正常
base定位16时,数字都正常 字母就不正常了
输入a就输出49  对应字符‘1’ 
################
下面将字符转为数字时出的问题
应该用&&连接而不是||

  转换后输出源数组内容要用一个函数来遍历  不然输出乱码了

*/

#include <stdio.h>

void trans(char[], int);

int main(void)
{
	char arr[32] = {'\0'};	//不初始化判断长度时就是32'1','a','\0',
	int base = 0;
	char ch;

	while (1)
	{
		printf("请输入要转换的数据:");
		scanf("%s", arr);
		getchar();	//这里没有问题
//			//gets(arr);
/*		//可能是这里有问题
		for (base=0; base<32; base++)
		{
			ch=getchar();
			if (ch!=' '&& ch!='\n')
				arr[base] = ch;
			else
				break;
			getchar();
		}
*/		
		printf("请输入要转换成十进制数据的进制类型:");
		scanf("%d", &base);		//奇怪  base指定没问题  运行期间输入就不行了
		getchar();		//奇什么怪呀  输入时要用&base  只写base往哪里存呀   知道了
//		base=8;
	//怎么到这里都走不下去了?? 测试下看看	
		printf("你要转换的 %s 是 %d 进制类型的\n", arr, base);
/*指定数据就可以运行   真是奇怪了  数组初始化110 也能运行 就是输入不能运行
		arr[0]='1';
		arr[1]='1';
		arr[2]='0';
		base = 2;
*/
		switch (base)
		{
		case 2:	trans(arr, 2);
			break;
		case 8: trans(arr, 8);
			break;
		case 16: trans(arr, 16);
			break;
		default : printf("不支持的进制类型\n");
			return 0;
		}
		
		printf("继续请输入“Y”或“y”,退出请按任意键:");
		ch = getchar();
		if (ch=='Y' || ch=='y')
		{
			continue;
		} 
		else
		{
			break;
		}
	}
	return 0;
}

void trans(char * arr, int base)
{
	int i, x, len = 0;	//len记录数组长度
	int sum = 0;	//存放转换后的结果

	for (i=0; arr[i]!='\0'; i++)
	{
		len++;
	}
//	printf("%s长度为%d\n", arr, len);

	for (i=len-1, x=1; i>=0; i--, x=x+base-1)
	{
		if (arr[i]>='0' && arr[i]<='9')
		{
			arr[i] = arr[i] - '0';
		} 
		else if (arr[i]>='a' && arr[i]<='z')
		{
			arr[i] = arr[i] - 87;
		}
		else if (arr[i]>='A' && arr[i]<='Z')
		{
			arr[i] = arr[i] - 55;
		}
		else
		{
			printf("你输入的数据中含有非法字符:%c\n", arr[i]);
			return ;
		}
		sum = sum + (arr[i]*x);
	}

	printf("%d进制数:%s 转换为十进制数是:%d\n", base, arr, sum);

	//最后输出提示信息时不能用%s直接输出数组中原来的内容,所以用一个函数将数组中的字符组成一个字符串
	//Java学的时间常了竟然忘了C中没有字符串的概念,没法返回字符串呀,都是字符数组的形式

}


 

 

✨✨✨【C语言】带你用最短的时间刷题(附解题思路、具体代码)不断更新(四)✨✨✨ C刷题(四)???? BC23、时间转换???? BC24、总成绩和平均分计算???? BC30、kiki和酸奶???? BC31、发布会信息???? BC32、输出学生信息???? BC33、计算平均成绩???? BC34、进制A+B???? BC37、网购???? BC39、争夺前五名???? BC40、竞选社长 ???????????????????????????????????????????????????????????????????????????????????????????? ?? 阅读详情

相关推荐

C语言基础语法进阶练习题

任务描述 本关请完成将一个华氏温度F,转换成摄氏温度C输出的小程序。相关知识 算术表达式 算术表达式是指数学课程中,由数字和运算符号组成的式子,可以简单清晰地记录或描述计算过程和内容。例如:(a-b)/c*2+‘a’+15%-4 编程要求 请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:输入一个华氏温度F,要求输出摄氏温度C。计算公式为:C=5/9 (F−32),输出要有文字说明,取2位小数。效果如下:测试说明 平台会对您的代码进行运行测试,如果实际输出与预期

Junds0的博客 1280

05、Python 简单计算器和进制转换

Python 简单计算器和进制转换

Java 领域技术分享 261

进制转换详解(附练习题)

进制转换详解 包含讲解+联系 想学习的朋友可以看下

蓝桥杯练习—进制转换

【代码】蓝桥杯练习—进制转换。

weixin_74361062的博客 272

智能车实战——极速越野组GPS与惯导融合定位导航全解析

本文深入解析了智能车极速越野组中GPS与惯导模块的融合定位导航技术。通过对比GPS的全局定位与惯导的高频姿态感知,详细阐述了如何利用MM32SPN27主控,将两者数据融合以实现精准、实时的车辆控制。内容涵盖硬件选型、软件数据处理、PID控制及系统调试等实战环节,为智能车开发者提供了一套完整的解决方案。

pz8901234的博客 1204

STM32实战:电容触摸屏I2C转USB HID设备全解析

本文详细解析了基于STM32的电容触摸屏I2C转USB HID设备实现方案。通过硬件选型、协议分析和代码实现,展示了如何将GT911触摸屏数据转换为标准USB HID协议,并提供了关键调试经验与性能优化技巧,为智能家居控制面板等应用提供高性价比解决方案。

weixin_42548829的博客 320

C语言之进制转换

进制转换非常简单,但又非常重要,在初学过程中是必须掌握的基础知识

weixin_65334260的博客 3万+

POI 写word,添加标题,表格,图片,自动生成目录,合并单元格

工程地址:https://github.com/zheng-chang-wei/word package com.example.demo1.poi; import org.apache.poi.xwpf.usermodel.XWPFDocument; import java.io.File; import java.io.FileOutputStream; public class ...

zheng_chang_wei的博客 6155

C语言进制转换专题

二、十、八、十六进制互相转换,打印二进制序列(内含&和>>综合应用),求解二进制中bit位的不同(内含 ^ 小用法)

qq_74455045的博客 6769

计算机图形学入门30:动画与模拟介绍

计算机图形学入门,动画与模拟,物理模拟,质点弹簧系统,运动学,粒子系统,动作捕捉。

YanisWu的博客 1485

GmSSL国密双证书实战:从生成到Nginx配置全流程

本文详细介绍了使用GmSSL工具生成国密双证书(签名证书与加密证书)并配置Nginx支持国密HTTPS(TLCP协议)的全流程。内容涵盖环境准备、自签CA创建、服务器双证书生成、Nginx单向/双向认证配置以及兼容性处理,为部署符合国密标准的HTTPS服务提供实战指南。

weixin_29276847的博客 479

405、数字转换为十六进制数(Convert a Number to Hexadecimal)

405、数字转换为十六进制数(Convert a Number to Hexadecimal) 题目: 给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。 注意: 十六进制中所有字母(a-f)都必须是小写。 十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符'0'来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。 给定的数确保在32位有符号整数范围内。 不能使用任何由库提供的将数字直接转换或格式化为十六进制的方法。 示例

南极没有熊的博客 336

基于YOLOv11的手写数字与符号识别系统设计与实现

手写数字与符号识别系统需要丰富多样的训练数据才能达到理想的泛化性能。MNIST:包含70,000个手写数字样本(0-9),28x28灰度图像优点:干净整齐,适合初学者缺点:多样性不足,只有数字EMNIST:MNIST的扩展,包含数字、字母(大小写)和特殊符号样本量:814,255张图像覆盖62个类别(10数字+26小写字母+26大写字母)HASYv2:专门的手写符号数据集包含369个不同符号类别约168,000个标注实例包括数学符号、箭头、括号等:英文手写文本数据库。

YOLO 291

C/C++语言100题练习计划 90——10 进制转 x 进制(进制转换实现)

C/C++语言100题练习计划 90——10 进制转 x 进制(进制实现)

Code_流苏:在代码中寻诗意,在实践中觅真知 1191

Qt之自定义QToolTip,去掉显示动画和隐藏延时

先来看看Qt原生QToolTip的缺点:1.当提示内容无变化时,弹窗无法移动。只能先传个空字符串强制弹窗隐藏,然后在新位置再传个字符串。2.默认显示10多秒才消失,当然这个时间是可以设置的,但是如果我想一直显示呢?总不能设置一个超级大的时间吧。3.鼠标移出控件后(调用QToolTip::showText时传入了控件指针)默认300毫秒弹窗才隐藏。而且这个时间没法设置,如果想立即隐藏就没办法了。

草上爬的博客 4268

基于STM32F4XX 、HAL库的SHT40-CD1B-R3温湿度传感器驱动应用C语言程序设计

define SHT40_ADDR_READ 0x8B // CD1B 读地址 ((0x45 << 1) + 1)#define SHT40_ADDR_WRITE 0x8A // CD1B 写地址 (0x45 << 1)// 初始化 I2C1 (根据 CubeMX 生成的函数)// 湿度: -6%RH + 125%RH * (raw / 2^16)// 温度: -45°C + 175°C * (raw / 2^16)// 返回值: 0=成功, 1=失败(CRC错误或I2C通信错误)

PP_Cottage的博客 237

C/C++语言100题练习计划 91——x 进制转 10 进制(进制转换实现)

C/C++语言100题练习计划 91——x 进制转 10 进制(进制转换实现)

Code_流苏:在代码中寻诗意,在实践中觅真知 1028

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

数据结构-栈的练习(用C语言实现进制转换、括号匹配、行编辑程序、迷宫求解)

以前用python写过该练习,算法的原理在数据结构-栈的练习(用python实现进制转换、括号匹配、迷宫求解) 现在又用c写了一遍。行编辑程序的原理下面补充 这里栈采用链栈的形式表示,而没用顺序表。 链栈和操作集(自己写的,仅可供参考) #include <stdio.h> #include <stdlib.h> #define DataType int // 栈节点的数据域,这里为整型 #define bool int #define ERROR 0 typedef str

C语言/数据结构/数学建模/深度学习/生物信息 435

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

大一C语言程序设计练习题(四)

大一C语言程序设计练习题四

weixin_51770799的博客 2万+

杭电oj刷题C语言答案+思路

杭电oj刷题c语言答案 点赞+评论+收藏+关注~

MuqiuWhite的博客 2544

1000道C语言和C++语言的练习题笔试题及答案 #0000-0050

汇集1000道C语言和C++语言的练习题 (例题、笔试题、编程题、算法设计题),由我亲自配上答案(点此查看)。 语法题我就不出了,那个没意思,看书就可以了。 本贴汇集50题 (0000-0050),持续更新...

阿发你好 1万+

C简易练习题

世界上如果有记忆面包就好了……

Shmiwy的博客 1151

C语言编程练习:验证哥德巴赫猜想 进制转换 rand函数

如果输入一个数N,随机输出一个数介于a,b之间,则a+(int)rand()%(b-a+1)。Ø。

hjx1235的博客 1464

c语言xy均为逻辑型变量,C语言程序设计各章练习题.docx

C语言程序设计各章练习题.docx《C语言程序设计》各章练习题2016年12月汇编第1-3章 C语言基础、编程规范、顺序结构程序设计编程题1:设a和b均为int型变量,编写一个程序,通过键盘读入a,b的值,然后交换a,b的值。要求屏幕显示“输入2个整数,用空格隔开”的提示语句,并且输出交换前a,b的值,交换后a,b的值。附加要求:(1)允许定义第3个变量,实现交换;(2)不允许定义第3个变量,实现...

weixin_29454359的博客 266

C语言练习题--洛谷P1143 进制转换

共三行,第一行是一个正整数,表示需要转换的数的进制 n (2≤n≤16),第二行是一个 n 进制数,若 n>10 则用大写字母 A∼F 表示数码 10∼15,并且该 n 进制数对应的十进制的值不超过 109,第三行也是一个正整数,表示转换之后的数的进制 m (2≤m≤16)。请你编一程序实现两种不同进制之间的数据转换。一个正整数,表示转换之后的 m 进制数。

2401_83327023的博客 201

数据结构c语言版栈和队列的应用编程 十进制 八进制 相互转换,【数据结构】栈和队列之练习题(用栈实现进制转换)...

1.利用栈的数据结构特点,将二进制转换为十进制数分析由于栈具有先进后出的特性,我们输入11001001的二进制数,出栈的顺序就相反,将每个出栈的数带入进制转换公式得到的结果就是转换之后的十进制数完整代码#include #include #include #define STACK_INIT_SIZE 20#define STACKINCREMENT 10typedef char ElemTyp...

weixin_28900463的博客 700
上一篇: MyStopWatch
下一篇: FileDialog文件对话框问题
luck638
博客等级 码龄17年 13粉丝 17原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值