如果只要求轉一個而且輸入不為負數的話可以直接
int a;
scanf(”%x”,&a);
printff(”%d”,a);
uj5u.com熱心網友回復:
輸入如果是負數而且要求連續轉很多個需要回圈和unsigned
uj5u.com熱心網友回復:
不行啊,這是錯誤代碼。
a.c: In function ‘main’:
a.c:5:5: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%x",&n);
uj5u.com熱心網友回復:
只要不超出int 32位的限制(八位16進制), 你可以這樣處理
#include <stdio.h>
int main() {
int v=0;
while(1) {
char ch = getchar();
if ( '0'<=ch && ch<='9') {
v <<= 4;
v += ch - '0';
} else if ( 'A' <= ch && ch <= 'F' ) {
v <<= 4;
v += 10 + ch - 'A';
} else if ( 'a' <= ch && ch <= 'f' ) {
v <<= 4;
v += 10 + ch - 'a';
} else { // 遇到非16進制的有效值字符了
break;
}
}
printf("%x : %d\n", v, v);
return 0;
}
uj5u.com熱心網友回復:
把x換成p
uj5u.com熱心網友回復:
還是不行,直接運行錯誤
uj5u.com熱心網友回復:
輸入如果是負數而且要求連續轉很多個需要回圈和unsigned
不行啊,這是錯誤代碼。
a.c: In function ‘main’:
a.c:5:5: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%x",&n);
把x換成p
還是不行啊,運行錯誤
uj5u.com熱心網友回復:
0x%p也不行嗎
uj5u.com熱心網友回復:
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
char c[10];
int i,len;
long long int a;
printf("輸入十六進制數\n");
gets(c);
len = strlen(c);
for(i = 0;i < len;i++)
{
if(len-i > 1)
a+=15*pow(16,(len-1-i));
else
switch(c[i])
{
case 'F': a+=15;break;
case 'E': a+=14;break;
case 'D': a+=13;break;
case 'C': a+=12;break;
case 'B': a+=11;break;
case 'A': a+=10;break;
case '9': a+=9;break;
case '8': a+=8;break;
case '7': a+=7;break;
case '6': a+=6;break;
case '5': a+=5;break;
case '4': a+=4;break;
case '3': a+=3;break;
case '2': a+=2;break;
case '1': a+=1;break;
}
}
printf("%lld",a);
return 0;
}
int n; scanf("%x",&n); printf ("%d",n); return 0;}{#include<stdio.h>int main()
uj5u.com熱心網友回復:
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
char c[10];
int i,len;
long long int a;
printf("輸入十六進制數\n");
gets(c);
len = strlen(c);
for(i = 0;i < len;i++)
{
if(len-i > 1)
a+=15*pow(16,(len-1-i));
else
switch(c[i])
{
case 'F': a+=15;break;
case 'E': a+=14;break;
case 'D': a+=13;break;
case 'C': a+=12;break;
case 'B': a+=11;break;
case 'A': a+=10;break;
case '9': a+=9;break;
case '8': a+=8;break;
case '7': a+=7;break;
case '6': a+=6;break;
case '5': a+=5;break;
case '4': a+=4;break;
case '3': a+=3;break;
case '2': a+=2;break;
case '1': a+=1;break;
}
}
printf("%lld",a);
return 0;
}
這么簡單粗暴的都不對嗎
uj5u.com熱心網友回復:
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
char c[10];
int i,len;
long long int a;
printf("輸入十六進制數\n");
gets(c);
len = strlen(c);
for(i = 0;i < len;i++)
{
if(len-i > 1)
a+=15*pow(16,(len-1-i));
else
switch(c[i])
{
case 'F': a+=15;break;
case 'E': a+=14;break;
case 'D': a+=13;break;
case 'C': a+=12;break;
case 'B': a+=11;break;
case 'A': a+=10;break;
case '9': a+=9;break;
case '8': a+=8;break;
case '7': a+=7;break;
case '6': a+=6;break;
case '5': a+=5;break;
case '4': a+=4;break;
case '3': a+=3;break;
case '2': a+=2;break;
case '1': a+=1;break;
}
}
printf("%lld",a);
return 0;
}
這么簡單粗暴的都不對嗎
int a;
scanf(”%x”,&a);
printf(”%d”,a);
這種不可以嗎?也挺簡單的。就是不知道哪有錯
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
char c[10];
int i,len;
long long int a;
printf("輸入十六進制數\n");
gets(c);
len = strlen(c);
for(i = 0;i < len;i++)
{
if(len-i > 1)
a+=15*pow(16,(len-1-i));
else
switch(c[i])
{
case 'F': a+=15;break;
case 'E': a+=14;break;
case 'D': a+=13;break;
case 'C': a+=12;break;
case 'B': a+=11;break;
case 'A': a+=10;break;
case '9': a+=9;break;
case '8': a+=8;break;
case '7': a+=7;break;
case '6': a+=6;break;
case '5': a+=5;break;
case '4': a+=4;break;
case '3': a+=3;break;
case '2': a+=2;break;
case '1': a+=1;break;
}
}
printf("%lld",a);
return 0;
}
這么簡單粗暴的都不對嗎
int a;
scanf(”%x”,&a);
printf(”%d”,a);
這種不可以嗎?也挺簡單的。就是不知道哪有錯
有可能那個平臺比較智能,屏蔽了這種撿漏行為
uj5u.com熱心網友回復:
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
char c[10];
int i,len;
long long int a;
printf("輸入十六進制數\n");
gets(c);
len = strlen(c);
for(i = 0;i < len;i++)
{
if(len-i > 1)
a+=15*pow(16,(len-1-i));
else
switch(c[i])
{
case 'F': a+=15;break;
case 'E': a+=14;break;
case 'D': a+=13;break;
case 'C': a+=12;break;
case 'B': a+=11;break;
case 'A': a+=10;break;
case '9': a+=9;break;
case '8': a+=8;break;
case '7': a+=7;break;
case '6': a+=6;break;
case '5': a+=5;break;
case '4': a+=4;break;
case '3': a+=3;break;
case '2': a+=2;break;
case '1': a+=1;break;
}
}
printf("%lld",a);
return 0;
}
這么簡單粗暴的都不對嗎
int a;
scanf(”%x”,&a);
printf(”%d”,a);
這種不可以嗎?也挺簡單的。就是不知道哪有錯
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
char c[10];
int i,len;
long long int a;
printf("輸入十六進制數\n");
gets(c);
len = strlen(c);
for(i = 0;i < len;i++)
{
if(len-i > 1)
a+=15*pow(16,(len-1-i));
else
switch(c[i])
{
case 'F': a+=15;break;
case 'E': a+=14;break;
case 'D': a+=13;break;
case 'C': a+=12;break;
case 'B': a+=11;break;
case 'A': a+=10;break;
case '9': a+=9;break;
case '8': a+=8;break;
case '7': a+=7;break;
case '6': a+=6;break;
case '5': a+=5;break;
case '4': a+=4;break;
case '3': a+=3;break;
case '2': a+=2;break;
case '1': a+=1;break;
}
}
printf("%lld",a);
return 0;
}
這么簡單粗暴的都不對嗎
太簡單粗暴了,好流氓啊
uj5u.com熱心網友回復:
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
char c[10];
int i,len;
long long int a;
printf("輸入十六進制數\n");
gets(c);
len = strlen(c);
for(i = 0;i < len;i++)
{
if(len-i > 1)
a+=15*pow(16,(len-1-i));
else
switch(c[i])
{
case 'F': a+=15;break;
case 'E': a+=14;break;
case 'D': a+=13;break;
case 'C': a+=12;break;
case 'B': a+=11;break;
case 'A': a+=10;break;
case '9': a+=9;break;
case '8': a+=8;break;
case '7': a+=7;break;
case '6': a+=6;break;
case '5': a+=5;break;
case '4': a+=4;break;
case '3': a+=3;break;
case '2': a+=2;break;
case '1': a+=1;break;
}
}
printf("%lld",a);
return 0;
}
這么簡單粗暴的都不對嗎
太簡單粗暴了,好流氓啊
在不 私聊唄
uj5u.com熱心網友回復:
搞個陣列存起來,然后再換算,不然非定長的情況下轉換會出錯
另外,自己的作業自己做
uj5u.com熱心網友回復:
樓主需要什么語言的呀
uj5u.com熱心網友回復:
int hextoint(string hexs)
{
int value = 0;
for (int i = 0 ; i < hexs.size() ; i++)
{
if (hexs[i] >= '0' && hexs[i] <= '9')
value += (hexs[i]-'0');
else if (hexs[i] >= 'a' && hexs[i] <= 'f')
value += (hexs[i] - 'a') + 10;
else if (hexs[i] >= 'A' && hexs[i] <= 'F')
value += (hexs[i] - 'A') + 10;
else
return -1;
if (i < (hexs.size() -1))
value = value << 4;
}
return value;
}
眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......
值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......