输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:

输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入一个以回车结束的字符串(少于80个字符),滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。
输入输出示例:括号内为说明
输入:
2 (repeat=2)
10
+A
输出:
Dec = 16
Dec = 10
#include "stdio.h"
#include "string.h"
#define MAXLEN 80
int main(void)
{
char ch;
char str[MAXLEN], num[MAXLEN];
int i, k;
int repeat, ri;
long number;

scanf("%d", &repeat);
getchar();
for(ri = 1; ri <= repeat; ri++){
i = 0;
while((ch = getchar()) != '\n'){
str[i]=ch;
i++;
}
str[i] = 0;
/*---------*/number=0; k=0;
for(i=0;str[i]!=0;i++){
if (str[i]>='0'&&str[i]<='9'||str[i]>='A'&&str[i]<='F') {num[k]=str[i];k++;}}
num[k+1]=0;
for(k=0;num[k]!=0;k++){
if('0'<=num[k]&&num[k]<='9') number=number+(num[k]-'0')*16;
else number =number+(num[k]-'A'+10)*16;}

printf("Dec = %ld\n",number);
}
}
我写的哪错了?

有几处错误,

第一, num[k+1]=0; 应该改成 num[k]=0;
第二,

if('0'<=num[k]&&num[k]<='9') number=number+(num[k]-'0')*16;
else number =number+(num[k]-'A'+10)*16;

应该改成
if('0'<=num[k]&&num[k]<='9')
number=number*16 + (num[k]-'0');
else
number=number*16 + (num[k]-'A'+10);

加分吧,呵呵。
温馨提示:内容为网友见解,仅供参考
无其他回答

C语言 输入一个正整数repeat(0<repeat<10),做repeat次下列运算: 读入...
include <stdio.h>void sign(int x){ if (x > 0){ printf("sign(%d)=1\\n", x);} else if(x < 0){ printf("sign(%d)=-1\\n", x);} else { printf("sign(%d)=0\\n", x);} void main(){ int num = 0, x;int i;scanf("%d", &num);for (i = 0; i < num; ...

...输入一个正整数repeat (0<repeat<10),做repeat次下列运算: _百度知...
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一行字符串,生成一个新的字符串,将原字符串中的大写字母用下面列出的对应大写字母替换, 其余字符不变, 输出新字符串.原字母 对应字母 A ──→ Z B ──→ Y C ──→ X D ──→ W ……X ──→ C ...

输入一个正整数repeat(0<repeat<10),做repeat次下列运算:皮球从height...
printf("请问球是第几次落地?");scanf("%d",×);printf("第 %d 次落地时走过的路程约为 %g 米。\\n",times,height+height*2*(1-pow(0.5,times-1)));printf("第 %d 次落地后弹起的高度为 %g 米。\\n",times,height*pow(0.5,times) );return 0;} 以前写过 ...

C语言 输入一个正整数repeat(0<repeat<10),做repeat次下列运算: 读入...
你做p=p*i 结果是p,最后输出了一个n..printf("p=%d\\n",n);→ printf("p=%d\\n",p);

...编程题:输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算...
1、确定程序结构 程序需要两层循环嵌套,读取repeat后进入第一层循环,第一次循环用于确定读取的字符串数,第二层循环用于读取字符和修正数据。程序框图如下图所示:2、确认程序使用变量及类型 根据程序需求可以确定所需变量及类型(如下图所示),此处应注意通过循环读取字符并同步统计,故仅需要使用一个...

输入一个正整数repeat (0<repeat<10),做repeat次下列运算: 输入一个整 ...
int main(void){ int repeat, ri;int n;double x, result;scanf("%d", &repeat);for(ri = 1; ri <= repeat; ri++){ scanf("%d%lf", &n, &x);result = p(n, x);printf("p(%d, %.2lf)=%.2lf\\n", n, x, result);} } double p(int n, double x){ if(n==0)...

输入一个正整数repeat (0<repeat<10),做repeat次下列运算: 输入参数a...
int repeat, ri;double a, b, c, d;scanf("%d", &repeat);for(ri = 1; ri <= repeat; ri++){ scanf("%lf%lf%lf", &a, &b, &c);d=b*b-4*a*c;if (a==0&&b==0&&c==0) printf("参数都为零,方程无意义!\\n");else if (a==0&&b==0&&(c!=0)) print...

输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入两...
int main(void){ int factor, m, n, number, sum;int repeat, ri;int i;scanf("%d",&repeat);for(ri = 1; ri <= repeat; ri++){ scanf("%d%d", &m, &n);printf("result:\\n");for(number=m;number<=n;number++){ sum=1;for(i=2;i<number;i++)if(number%i==0) sum...

...输入一个正整数repeat (0<repeat<10),做repeat次下列运算
int ri, repeat;repeat=10;int count, word,i;char string[100];printf("请输入一串字符");scanf("%d", &string);for(ri=1; ri<=repeat; ri++){ gets(string);if(string[0]!=' ')count=1;else count=0;for(i=0;;i++){ if(string[i]==' '&&string[i+1]!=' '&&string[...

输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
第一, num[k+1]=0; 应该改成 num[k]=0;第二,if('0'<=num[k]&&num[k]<='9') number=number+(num[k]-'0')*16;else number =number+(num[k]-'A'+10)*16;应该改成 if('0'<=num[k]&&num[k]<='9')number=number*16 + (num[k]-'0');else number=number*16 + ...

相似回答