#include<stdio.h>
#include<string.h>
int main(){
char str[999];
int change, digit; // change:轉換數字的單位; digit:轉換成幾進位制
while(scanf("%s %d %d", &str, &change, &digit) != EOF){
int number = 0, exp = 1; // num:儲存轉換的數字 exp:位數
for(int i = strlen(str) - 1; i >= 0; i--){
if(str[i] >= '0' && str[i] <= '9'){
number = number + (str[i] - '0') * exp;//轉成int型別的數字
}
else if(str[i] == 'A'){
number = number + 10 * exp;
}
else if(str[i] == 'B'){
number = number + 11 * exp;
}
else if(str[i] == 'C'){
number = number + 12 * exp;
}
else if(str[i] == 'D'){
number = number + 13 * exp;
}
else if(str[i] == 'E'){
number = number + 14 * exp;
}
else if(str[i] == 'F'){
number = number + 15 * exp;
}
exp = exp * change;
}
char ans[100];
int index = 0;//表示位數中第幾個位置
while(number > 0){//取數值中每個位數值
int temp = number % digit;
number = number / digit;
//轉型成char型別
if(temp < 10){
ans[index] = temp + '0';
}
else if(temp == 10){
ans[index] = 'A';
}
else if(temp == 11){
ans[index] = 'B';
}
else if(temp == 12){
ans[index] = 'C';
}
else if(temp == 13){
ans[index] = 'D';
}
else if(temp == 14){
ans[index] = 'E';
}
else if(temp == 15){
ans[index] = 'F';
}
index++;
}
if(index >= 7){
printf(" ERROR\n");
}
else{
for(int j = 6; j >= 0; j--){
printf("%c", ans[j]);
}
printf("\n");
}
}
}
不知道為何格式會跑掉,請問要如何改?
您的答案為: 11110 正確答案為: 11110
#include
#include
int main(){
char str[999];
int change, digit; // change:轉換數字的單位; digit:轉換成幾進位制
while(scanf("%s %d %d", &str, &change, &digit) != EOF){
int number = 0, exp = 1; // num:儲存轉換的數字 exp:位數
for(int i = strlen(str) - 1; i >= 0; i--){
if(str[i] >= '0' && str[i] <= '9'){
number = number + (str[i] - '0') * exp;//轉成int型別的數字
}
else if(str[i] == 'A'){
number = number + 10 * exp;
}
else if(str[i] == 'B'){
number = number + 11 * exp;
}
else if(str[i] == 'C'){
number = number + 12 * exp;
}
else if(str[i] == 'D'){
number = number + 13 * exp;
}
else if(str[i] == 'E'){
number = number + 14 * exp;
}
else if(str[i] == 'F'){
number = number + 15 * exp;
}
exp = exp * change;
}
char ans[100];
int index = 0;//表示位數中第幾個位置
while(number > 0){//取數值中每個位數值
int temp = number % digit;
number = number / digit;
//轉型成char型別
if(temp < 10){
ans[index] = temp + '0';
}
else if(temp == 10){
ans[index] = 'A';
}
else if(temp == 11){
ans[index] = 'B';
}
else if(temp == 12){
ans[index] = 'C';
}
else if(temp == 13){
ans[index] = 'D';
}
else if(temp == 14){
ans[index] = 'E';
}
else if(temp == 15){
ans[index] = 'F';
}
index++;
}
if(index >= 7){
printf(" ERROR\n");
}
else{
for(int j = 6; j >= 0; j--){
printf("%c", ans[j]);
}
printf("\n");
}
}
}
不知道為何格式會跑掉,請問要如何改?
#0: 100% WA (line:1)
您的答案為: 11110 正確答案為: 11110
484答案少一個空白阿
char ans[100];
if(index >= 7){
1. 你的ans沒有初始化(可以用memset)
2. 長度剛好7是可以的,要改成index > 7
char ans[100];
if(index >= 7){
1. 你的ans沒有初始化(可以用memset)2. 長度剛好7是可以的,要改成index > 7
謝謝兩位,我改寫了,但還是有錯。(#WA:line 104)
您的答案為: ERROR
正確答案為: 3330001
#include<stdio.h>
#include<string.h>
int main(){
char str[999];
int change, digit; //change:轉換數字的單位; digit:轉換成幾進位制
memset(str, 0, sizeof(str));//初始化為0
while(scanf("%s %d %d", &str, &change, & digit)!= EOF){
int number = 0, exp = 1; // num:儲存轉換的數字 exp:位數
for(int i = strlen(str) - 1; i >= 0; i--){
//轉成int型別的數字,並加總
if(str[i] >= '0' && str[i] <= '9'){
number = number + (str[i] - '0') * exp;
}
else if(str[i] == 'A'){
number = number + 10 * exp;
}
else if(str[i] == 'B'){
number = number + 11 * exp;
}
else if(str[i] == 'C'){
number = number + 12 * exp;
}
else if(str[i] == 'D'){
number = number + 13 * exp;
}
else if(str[i] == 'E'){
number = number + 14 * exp;
}
else if(str[i] == 'F'){
number = number + 15 * exp;
}
exp = exp * change;
}
char ans[100];
memset(ans, 0, sizeof(ans));//初始化為0
int index = 1;//表示位數中第幾個位置
while(number > 0){//取數值中每個位數值
int temp = number % digit;
number = number / digit;
//轉型成char型別
if(temp >= 0 && temp <= 9){
ans[index] = temp + '0';
}
else if(temp == 10){
ans[index] = 'A';
}
else if(temp == 11){
ans[index] = 'B';
}
else if(temp == 12){
ans[index] = 'C';
}
else if(temp == 13){
ans[index] = 'D';
}
else if(temp == 14){
ans[index] = 'E';
}
else if(temp == 15){
ans[index] = 'F';
}
index++;
}
if(index > 7){
printf("ERROR\n");
}
else{
for(int i = 6; i >= 0; i--){
printf("%c", ans[i]);
}
printf("\n");
}
}
}
int index = 1;//表示位數中第幾個位置
改回index = 0就好了
int index = 1;//表示位數中第幾個位置
改回index = 0就好了
ok了,謝謝你!