c难题
二.mirror number
时间限制: 1000ms ?
内存限制: 100000kB ?
描述 ?
像1,101,2552这样对称的数,我们称它为mirror number,前10个mirror ?
number为1,2,3,4,5,6,7,8,9,11。以此类推。
请你求出第N个对称的数。
输入 ?
第一行输入T,T组测试数据,接下去每组数据占一行,输入一个N(1<=N<=100000)。 ?
输出 ?
输出第N个mirror number,每组占一行。 ?
样例输入?
3
2
11
15
样例输出?
2
22
66
#include<stdio.h>
#include<string.h>
main()
{
int i,j,k,l,m,g;
prinf("请输入数据个数");
scanf("%d\n",&i);
j=i;
m=i;
int A[i];
for(i=0;i<j;i++)
{
scanf("%d\n",&A[i]);
}
int B[m];
k=strlen(j);
h=(k-1);
m=0;
char C[k],D[k];
for(i=0;i<j;i++)
{
C[k]=A[i];
for(k=0;k<h;k++)
{
D[k-2-h]=C[k];
}
l=stcmp(D,C);
if(l==0)
{
B[m]=D[k];
m++;
}
g=m;
}
printf("%d\n",B[g]);
}
帮忙改下错误。
[解决办法]
楼主你程序有多处错误,可以看出 C 基础还没学好,多看看书,参考下面程序。。
#include<iostream>using namespace std;char str[100];char str1[50];char str2[50];int main(){ int T,n; scanf("%d",&T); while(T--) { scanf("%d",&n); int a = 1; int cnt = 0; while(1) { if (cnt == n) { printf("%d\n", a - 1); break; } if (a < 10) { ++cnt; ++a; continue; } memset(str, 0, sizeof(str)); memset(str1, 0, sizeof(str1)); memset(str2, 0, sizeof(str2)); sprintf(str, "%d", a); int len = strlen(str); int k = len / 2; if(len % 2 == 0) { strncpy(str1, str, k); strcpy(str2, str + k); } else { strncpy(str1, str, k); strcpy(str2, str + k + 1); } if (strcmp(str1, str2) == 0) { ++cnt; } ++a; } } return 0;}