2871 - 【创新型】第10章: 字符串 10.25 调皮的小数点
时间限制 : 1 秒
内存限制 : 128 MB
小明一直很讨厌小数点,一看到小数点就头疼。不幸的是,小红给他出了一个题目,问他:
给你一个小数x,你能算出小数点后第n位是什么吗?(1<=n<=20)
小明看到此题后,瞬间头疼晕倒,你能帮帮他吗?
题目输入
首先输入一个t,表示有t组数据(数据不超过10组)跟着t行:
每行输入一个小数(输入数据保证一定是a.b的形式,为了简单化问题,没有循环小数的情况),
然后跟一个n,表示小数点后第几位。
题目输出
输出一个数表示小数点后第n位的数,如果输入的小数点后第n位数不存在则输出“Error”。
输入/输出样例
输入格式
3 1.234 1 2.345 6 3.456 3
输出格式
2 Error 6
C语言解答
#include<stdio.h> #include<string.h> int main() { char x[10][25]; int i,j,l[10],y[10],n; scanf("%d",&n); for(i=0;i<n;i++) { getchar(); scanf("%s %d",x[i],&y[i]); l[i]=strlen(x[i]); } for(i=0;i<n;i++) { if(y[i]>l[i]-2) printf("Error"); else printf("%c",x[i][y[i]+1]); if(i!=n-1) printf("\n"); } }
C++解答
#include<bits/stdc++.h> using namespace std; int n; string a; double s; int wz,ss,flag,y; int main() { cin>>n; getchar(); for(int i=1;i<=n;i++) { cin>>a; cin>>s; for(int j=0;j<a.size();j++) { if(a[j]=='.') flag=1; if(flag==0)y++; } if(y+1+s<=a.size())cout<<a[s+1]<<endl; else cout<<"Error"<<endl; flag=0; ss=0; y=0; } return 0; }