梦龙_C语言作业9

一.填空题

1、宏

阅读下面程序并写出键盘输入15时的运行结果:(只写结果,不写输入)
在这里插入图片描述

参考答案
result=3

二.简答题

swap函数

请用地址传递方式编写一个函数void swap(int *,int *);,主程序提供两个整型变量的地址作为实参,该函数能使这两个变量的值互相交换。请编写主程序验证该函数。(直接显示结果,不要任何提示文字)

参考答案
/*
时间:2021-5-9
作者:童话
环境:Win 10 、 VC++ 6
*/
#include <stdio.h>

void swap(int* p1, int* p2)
{
	int t = *p1;
	*p1 = *p2;
	*p2 = t;
}

void main()
{
	int a = 520;
	int b = 1314;

	swap(&a,&b);

	printf("%d %d",a,b);
}

三. 程序题

1、HEX转DEC

请编写一个函数getadec能接收一位十六进制字符的参数,返回对应的十进制整数,若是接收的是非法16进制符号则返回-1。例如,getadec(‘F’)或getadec(‘f’)可以返回15,getadec(‘9’)可以返回9,getadec(‘g’)返回-1。利用该函数,编写程序能将键盘输入的一串十六进制字符转换为十进制并输出显示。(结果直接显示不要回车,不要有任何提示文字)
例如:输入aBc,显示结果2748

参考答案
/*
时间:2021-5-9
作者:童话
环境:Win 10 、 VC++ 6
*/
#include <stdio.h>

int getadec(char ch)
{
	if(ch>='0' && ch<='9')
	{
		return ch-'0';
	}
	else if(ch>='A' && ch<='F')
	{
		return ch-'A'+10;
	}
	else if(ch>='a' && ch<='f')
	{
		return ch-'a'+10;
	}
	else 
	{
		return -1;
	}
}

int main()
{
	char hex[30];
	int i,j,n,res,pow;
	
	scanf("%s",hex);
	
	for(n=0;hex[n]!='\0';++n);
	
	res=0;
	for(i=0;i<n;i++)
	{
		if(getadec(hex[i]) != -1)
		{
			pow = 1;
			for(j=0;j<n-i-1;j++)
			{
				pow *=16;
			}
			res += (pow * getadec(hex[i]));
		}
		else
		{
			return -1;
		}
	}
	
	printf("%d\n",res);
	
	return 0;
}

2、河内塔

编程计算河内塔问题,写出n个盘子从A柱借助C柱移动到B柱的移动过程,n为键盘输入的整数(n>=1)。要求显示第几次从哪根柱移动到哪根柱。例如,输入3,结果显示如下:
1:A->B
2:A->C
3:B->C
4:A->B
5:C->A
6:C->B
7:A->B

参考答案
/*
时间:2021-5-9
作者:童话
环境:Win 10 、 VC++ 6
书P117
*/
#include <stdio.h>

int i = 1;

void hanoi(int n,char sour,char dest,char tran)
{
	if(n==1)
	{
		printf("%d:%C->%c\n",i,sour,dest);
		i++;
	}
	else
	{
		hanoi(n-1,sour,tran,dest);
		printf("%d:%C->%c\n",i,sour,dest);
		i++;
		hanoi(n-1,tran,dest,sour);
	}
}


void main()
{
	int n;
	scanf("%d",&n);
	hanoi(n,'A','B','C');
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

童话与云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值