#include<stdio.h>
int i;//全局变量不初始化则默认为0
int main()
{
i--;
if ( i> sizeof(int))
{
printf(">");
}
else
{
printf("<");
}
return 0;
}
A.>
B.<
答案:A
第二题(懵逼中)
A. 进制转换
单点时限: 2.0 sec
内存限制: 256 MB
输入一个十进制数 N,将它转换成 R 进制数输出。
输入格式
输入一个正整数 T。表示测试数据的组数。
每个测试实例包含两个整数 N(32 位整数) 和 (R(2⩽R⩽36).
输出格式
为每个测试实例输出转换后的数,每个输出占一行。如果 R 大于 10,则对应的数字规则参考 16 进制(比如,10 用 A
表示 ,16 用 G
表示等等)。
#include<stdio.h>
#include<math.h>
void rever(int num, int tmp)//230 12
{
int num2 = 0, i = 0;
char pri = 'A';
int arr[10];
if (num < 0)
{
printf("-");
num = abs(num);
}
while (num >= tmp)
{
num2 = num % tmp;
num /= tmp;
arr[i] = num2;//余数存储中应当将num2转换为超出的字符
i++;
}
if (num < tmp)
{
if (num2 < 10)
{
arr[i] = num;
}
}
for (int j = i ; j >= 0; j--)
{
if (arr[j] > 9)
{
printf("%c", pri + arr[j] - 10);
continue;
}
printf("%d", arr[j]);
}
printf("\n");
}
int main()
{
int t;
int a[2];
int tmp = 0;
int num = 0;
scanf_s("%d\n", &t);
for (;t >= 0; t--)
{
for (int i = 0;i < 2; i++)
{
scanf_s("%d", &a[i]);//23 12
}
num = a[0];
tmp = a[1];
rever(num, tmp);
}
return 0;
}
实在不知道哪里错了[哭]
找到了:因为一直报错提示栈溢出,所以
发现,在自定义函数中,字符串数组元素太少了,32位的超了
#include<stdio.h>
#include<math.h>
void rever(long long num, int tmp)//230 12
{
int num2 = 0, i = 0;
char pri = 'A';
int arr[30] = {0};
if (num < 0)
{
printf("-");
num = abs(num);
}
while (num >= tmp)
{
num2 = num % tmp;//11
num /= tmp;//1
arr[i] = num2;//余数存储中应当将num2转换为超出的字符
i++;
}
if (num < tmp)
{
arr[i] = num;
}
for (int j = i ; j >= 0; j--)
{
if (arr[j] > 9)
{
printf("%c", pri + arr[j] - 10);
continue;
}
printf("%lld", arr[j]);
}
printf("\n");
}
int main()
{
int t;
long long a[3] = {0};
int tmp = 0;
long long num = 0;
scanf("%d\n", &t);
for (;t > 0; t--)
{
for (int i = 0;i < 2; i++)
{
scanf("%lld", &a[i]);//23 12
}
num = a[0];
tmp = a[1];
rever(num, tmp);
}
return 0;
}