HDU ACM 2549 : 壮志难酬

本文介绍了一个简单的程序设计问题,即如何找出给定小数的小数点后第n位数字。通过字符串处理的方式,该问题得以解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Problem Description
话说MCA山上各路豪杰均出山抗敌,去年曾在江湖威名显赫的,江湖人称<万军中取上将首级舍我其谁>的甘露也不甘示弱,“天将降大任于斯人也,必先劳其筋骨,饿其体肤,空乏其身”他说。可惜,由于去年取上将首级时不慎右手右关节第七次骨折,养伤达一年之久,空有一腔抱负却壮志难酬,如今天下危亡,习武之人又怎能袖手旁观,于是他决定出山协助威士忌共抗辽贼,这时他的对头枫冰叶子出现,两人都是水属性,但由于十年前的一场恩怨(这是后话)势成水火。

枫冰叶子要求甘露回答一个问题,否则不让他离开,可惜甘露绞尽脑汁未果,希望你来帮他解决,助他完成大业。

问题是这样的:给你一个小数x,让你算出小数点后第n位是什么,(1 <= n <= 6)
 

Input
首先输入一个t,表示有t组数据,跟着t行:
每行输入一个小数(输入数据保证一定是a.b的形式,为了简单化问题,没有循环小数的情况)
然后跟一个n,表示小数点后第几位
 

Output
输出一个数表示小数点后第n位的数
 

Sample Input

31.234 12.345 23.456 3
 
Sample Output

246
 
//本道题其实不难,只是需要比较谨慎地考虑一些特殊情况(n的范围)
//本题分析:以字符串数组接收输入的小数,再对之进行处理
#include <stdio.h>
#include <string.h>

int main()
{
	int n, i, len, t;
	char str[100];
	char *ptr;
	scanf("%d%*c", &t);
	while(t--)
	{
		scanf("%s%d", str, &n);
		ptr = strchr(str, '.');
		if(ptr)
		{
			len = strlen(ptr);
			if(n > len-1 || n < 1)
				printf("0\n");
			else
				printf("%c\n", ptr[n]);
		}
		else
			printf("0\n");
	}
	return 0;
} 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值