C语言程序设计谭浩强(第四版)部分课后习题作答——第七章——7.8,7.10,7.16

7.8:输入一个4位数,输出这4个数字字符

7.10:输入一行字符,输出最长的单词

7.16:十六进制转十进制

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string>

/*输出数字字符,主要考察整型转字符型
方法为用0的ASCII码48加上对应的数字即可。
也可以使用itoa函数,用法是这样的:
itoa(数字,目标字符串,进制),
*/
void q7_8() {
	int n, i = 3;
	char str[4];
	printf("请输如一个4位数:");
	scanf_s("%d", &n);
	printf("\n");
	while (n) {
		str[i] = (char)(n % 10 + 48);
		n = n / 10;
		i--;
	}
	for (i = 0; i < 4; i++) {
		printf("%c ", str[i]);
	}
}
//输出最长单词
void q7_10() {
	int i, j, max = 0, count = 0; //i和j分别为单词首和尾标记
	char str[256];
	printf("输入字符串:\n");
	fgets(str, 256, stdin);
	for (i = j = 0; ; j++) {
		if (str[j] != ' ' && str[j] != '\n') {
			count++;
			continue;
		}
		if (max < count)
			max = count;//更新最大长度
		count = 0;//还原计数
		i = j + 1;//i更新为新的单词首
		if (str[j] == '\n') { //检查是否该行文字结束
			break;
		}
	}
	printf("%d", max);
}

/*十六进制转十进制
因为十六进制包含ABCDEFF所以输出为字符类型
将每一位乘以6对应的指数阶相加即可。
*/
void q7_16() {
	char str[20];
	int i, n, sum = 0, temp;
	printf("输入:\n");
	fgets(str, 20, stdin);
	n = strlen(str);
	for (i = n - 2; i >= 0; i--) {//从最低位开始计算
		if (str[i] >= 'A' && str[i] <= 'F') {
			temp = int(str[i] - 'A') + 10;
		}
		else if (str[i] >= 'a' && str[i] <= 'f') {
			temp = int(str[i] - 'a') + 10;
		}
		else if (str[i] >= '0' && str[i] <= '9'){
			temp = int(str[i] - '0');
			
		}else {
			printf("输入错误\n");
			exit(0);
		}
		sum += temp * (pow(16, n-2-i));
	}
	printf("%d", sum);
}

int main() {
	//q7_8();
	//q7_10();
	q7_16();
	system("pause");
	return 0;
}

运行:

7.8

7.10

7.16

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值