求正整数的第k位。。。作为菜鸟,真心跪了题目要求如下:编写函数digit(n, k),使得函数返回正整数n中的第k位数
求正整数的第k位。。。作为菜鸟,真心跪了
题目要求如下:
编写函数digit(n, k),使得函数返回正整数n中的第k位数字(从左边算起)。例如digit(83456, 2),返回3。当k大于n的实际位数时,返回-1。
输入文件包含多组数据,每组数据包含2个正整数,分别对应题目中的n, k。输入以EOF结束。
对于每组数据,输出一行,输出结果为函数digit(n, k)的返回值。
输入(例子):
83456 2
123 4
输出(例子)
3
-1
[解决办法]
- C/C++ code
#include<iostream>#include<string>using namespace std;int digit(int n, int k){ int num[25],index=0; memset(num,0,sizeof(num)); while (n>0) { num[index++] = n % 10; n = n / 10; } if(index<k) return -1; return num[index - k];}int main(){ int n,k; while(scanf("%d %d",&n,&k)!=EOF) { cout<<digit(n,k)<<endl; } return 0;}
[解决办法]
[解决办法]
[解决办法]
#include<math.h>
int GetKNum(int val,int k) //val是所给的数, k是第k位
{
if( val<(int)pow((double)10,(double)k) )
return -1;
else
return ( val/(int)pow( (double)10,(double)k ) ) %10
}
[解决办法]
- C/C++ code
#include <stdio.h>unsigned int countDigit(unsigned int n){ int count = 0; while(n != 0)//计算一个正整数有多少位 { n /= 10; count++; } return count;}unsigned int digit(unsigned int n, unsigned int k){ int num; unsigned int count = countDigit(n); if(k > count) { num = -1; } else { int order = count - k + 1; //左边数第k位, 右边数是第count - k + 1位 for(int i=0; i<order; i++) { num = n % 10; n /= 10; } } return num;}int main(void) { unsigned int number = 232045; unsigned int k = 2; int dgt = digit(number, k); printf("%d %d\n",number, dgt); return 0; }
[解决办法]
读取一个字符串s和一个整数a
输出s的第a个字符
思路就这么简单
至于代码,如果你不想十年之后还在问这种问题的话,就自己写代码
[解决办法]
- C/C++ code
#include<iostream>#include<string>#include<sstream>#include<deque>using namespace std;struct data{ unsigned int num; unsigned int k;};string inttostring(int m){ ostringstream oss; oss<<m; string str(oss.str()); return str;}int main(){ int n; cout<<"输入数据组个数:"; cin>>n; cout<<endl; deque<data> vdata; cout<<"输入数据"<<endl; for(int i=0; i<n;i++) { data data; cin>>data.num>>data.k; vdata.push_back(data); //cout<<endl; } cout<<"结果输出"; for(int i=0;i<vdata.size();++i) { string str(inttostring(vdata[i].num)); if(str.length()<vdata[i].k) { cout<<-1<<endl; } else { cout<<str.at(vdata[i].k-1)<<endl; } } return 0;}
[解决办法]
public void digit(int n, int k){
char [] data = String.valueOf(n).toCharArray();
if (k > data.length) {
System.out.println("-1");
} else {
System.out.println(data[k-1]);
}
}
[解决办法]
