乱键敲死 2019-11-13 20:50 采纳率: 50%
浏览 501
已采纳

一个C语言程序代码的问题

c语言有关的问题:
# include

include

include

void is_trans(char *number,int type);
void is_trans2(int sum);

void main()
{
char number[1000];
int type;

printf("请输入你要输入的数字:");
gets(number);

printf("请输入你要输入的数的进制:");
scanf("%d",&type);//为什么当gets和scanf互换一下位子,输入完scanf后,gets就直接跳过了呢??


is_trans(number,type);

}

void is_trans(char *number,int type)
{
int i,len,sum,q;
len = strlen(number);
sum = 0;

for (i = 0;number[i] != '\0';i++)
{
    if (type == 8||10)
        break;


    switch (number[i])
    {
    case 'A':   number[i] = 10;break;
    case 'B':   number[i] = 11;break;
    case 'C':   number[i] = 12;break;
    case 'D':   number[i] = 13;break;
    case 'E':   number[i] = 14;break;
    case 'F':   number[i] = 15;break;


    }


}
for (i = 0;number[i] != '\0';i++)
{
    q = len-i-1;//为什么当输入的是7和8,最后这个number[i]在调试的时候显示的值是55'7',最后sum直接就等于55了,这是为什么呢??
    sum = sum + (number[i]*pow(type,q));

}

is_trans2(sum);

}

void is_trans2(int sum)
{
int i,a[1000],n,p;

n = 0;

for (i = 0;sum != 0;i++)
{
    p = sum % 2;
    sum = sum / 2;
    a[i] = p;
    n++;

}

for (i = n - 1;i >= 0;i--)
{
    printf("%d",a[i]);
}

}

  • 写回答

1条回答

  • 旧时光~ 2019-11-13 21:56
    关注

    那个get和scanf的地方 应该是你printf之后 等待你输入 而你敲了一下回车 scanf接收到一个回车字符,程序继续执行,在你看来就是跳过去了,你第二个问题没看明白,还有,你switch哪里每一个case和赋值语句的值都是连续的 你可以考虑用ascii码去赋值,不用switch

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 mmocr的训练错误,结果全为0
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀