梦龙_C语言作业9

Posted 童话与梦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了梦龙_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');
}

以上是关于梦龙_C语言作业9的主要内容,如果未能解决你的问题,请参考以下文章

梦龙_C语言作业12

梦龙_C语言作业11

梦龙_C语言作业13

梦龙_C语言作业14

梦龙_C语言作业14

C语言代码片段