跪求C语言答案,在线等,希望各位相助

题目描述给定一个二进制表示的非负整数,将其转换为十六进制数。要求使用函数编写程序:函数原型如下:voidconvert(char*input,char*output);变... 题目描述
给定一个二进制表示的非负整数,将其转换为十六进制数。
要求使用函数编写程序:函数原型如下:
void convert( char *input, char *output);
变量input为读入的二进制字符串,变量output为函数中要输出的十六进制字符串

输入
输入数据有多组,第一行为数据的组数T,接下来有T组数据。
每组数据占一行,每行为一个二进制整数(不含多余的前导0),最多1000位。

输出
对于每组测试数据首先输出"Case #: ",#表示第几组测试数据,接着输出对应的十六进制数,字母用大写表示,每组测试结果占一行。

样例输入
2
1111
10100100

样例输出
Case 1: F
Case 2: A4

提示
5 = '5' - '0';
展开
 我来答
liubird
2011-12-24 · TA获得超过1932个赞
知道小有建树答主
回答量:898
采纳率:100%
帮助的人:1017万
展开全部
#include <stdio.h>
#include <string.h>

void convert(char *input, char *output)
{
int len, i, j, k, n;
int w[4] = {1, 2, 4, 8};
len=strlen(input);
j = (len + 3)/4;
output[j] = '\0';
j = j-1;
i = len - 1;
while(i>=0){
n = 0;
for(k=0; k<4&& i>=0;k++) {
n += (input[i] - '0') * w[k];
i--;
}
if( n< 10) output[j] = n + '0';
else output[j] = n -10 + 'A';
j --;
}
return;
}

int main()
{
int n, t;
char input[1001], output[260];
scanf("%d", &n);
for(t=1; t<=n; t++) {
scanf("%s", input);
convert(input, output);
printf("Case %d: %s\n", t, output);
}
return 0;
}
追问
怎样使输出的时候答案是在一起的呢?
而不是输一组数据出一个答案
追答
那你就用一个字符数组把结果保存起来吧。
不过那样的话,会占用很多的空间的,输入的case数也是不确定的。
但是我觉得题目的意思并不是要求输入完了才输出的。
如下:
int main()
{
int n, t;
char input[1001], output[260], result[100][280]; //这儿多申请了一个result数组。
scanf("%d", &n);
for(t=1; t<=n; t++) {
scanf("%s", input);
convert(input, output);
sprintf(result[t-1], "Case %d: %s\n", t, output); //将输出的内存保存在result之中。
}
for(t=0; t<n; t++) { //最后输出到控制台。
printf("%s", result[t]);
}
return 0;
}
c001848
2011-12-24 · TA获得超过537个赞
知道小有建树答主
回答量:470
采纳率:0%
帮助的人:214万
展开全部
int sum = 0; char result[16]; for(int i=0; i<16; i++){ sum += array[i] * pow(2, 15 - i); } sprintf(result, "%x", sum);
追问
给一个完整的程序吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
衷莉0k3
2011-12-24 · 超过35用户采纳过TA的回答
知道答主
回答量:119
采纳率:0%
帮助的人:88.5万
展开全部
这个直接有函数用的吧,sprintf()
追问
不会呀,可不可以给个详细点的呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式