菜鸟提问(输入的值与输出不一致)

lz2163070 2008-01-24 06:50:45
main()
{int a;
float b;
double c;
unsigned d,e;
char ch, s[10];
clrscr();
scanf("%d",&a);
scanf("%f",&b);
scanf("%lf",&c);
scanf("%o%x",&d,&e);
scanf("%c%s",&ch,&s);
printf("a=%d\n",a);
printf("b=%f\n",b);
printf("c=%lf\n",c);
printf("d=%o,e=%x\n",d,e);
printf("ch=%c\n",ch);
printf("s=%s\n",s);
}

这个是图片,八进制“0127”没有前导0
还有ch=
s=A
怎么会是这样阿...
http://img.photo.163.com/yMXp2VYqVintlzvxQv4SOg==/886646176638662064.jpg
请老师帮忙看看,谢谢了!
...全文
210 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
ltc_mouse 2008-01-26
  • 打赏
  • 举报
回复
还有一个问题没解决,我的8进制0127,运行的是127,没有前导0阿!

-------------

一种方式是直接在格式串中使用加0;另一种是使用#打印基数,#o打印八进制前导0,#x打印16进制前导0x
参考下:

printf("d=%#o,e=%#x\n",d,e); //使用#打印进制
//或者:
printf("d=0%o,e=%x\n",d,e); //格式串中加0
lxlittle 2008-01-26
  • 打赏
  • 举报
回复
#include   <stdio.h> 

main()
{int a;
float b;
double c;
unsigned d,e;
char ch, s[10];

scanf("%d",&a);
scanf("%f",&b);
scanf("%lf",&c);
scanf(" %o%x",&d,&e); //%o前面加个空格
scanf(" %c%s",&ch,s); //%o前面加个空格
printf("a=%d\n",a);
printf("b=%f\n",b);
printf("c=%lf\n",c);
printf("d=%o,e=%x\n",d,e);
printf("ch=%c\n",ch);
printf("s=%s\n",s);
}
ltc_mouse 2008-01-26
  • 打赏
  • 举报
回复
lz说的有点绕了,越看越糊涂~~ 是不是希望根据用户输入数据中有没有前导来决定输出数据有没有前导?

printf("d=%#o,e=%#x\n",d,e)不具有自动选择功能,一定会带前导符;我前面说了,输入跟输出没有干系!
如果不想输出的话,你自己写的这个就已经是了: printf("d=%o,e=%x\n",d,e);
CarlLandry 2008-01-26
  • 打赏
  • 举报
回复
新人,帮
lz2163070 2008-01-26
  • 打赏
  • 举报
回复
scanf函数中的格式字符o与x
都是以8进制和16进制输入整型数的,可以加前导0或者不加
那么我在scanf("%o%x",&d,&e);
的时候是可加可不加对吧,
比如我输入0127的时候,在输出函数必须要加楼上所说的
printf("d=%#o,e=%#x\n",d,e); //使用#打印进制
//或者:
printf("d=0%o,e=%x\n",d,e); //格式串中加0
那么我要不加的话呢
我输入127的
不加前导呢,那它是不是也给加上了
请帮我解释下,谢谢你了
ltc_mouse 2008-01-26
  • 打赏
  • 举报
回复
没理解14楼的意思~
printf是用来输出的,跟输入有啥关系? 加#确保输出时带前导0或者0x

输入的话,直接用scanf("%o%x", &d,&e);就可以了呀,加不加前导的形式都认的
lz2163070 2008-01-26
  • 打赏
  • 举报
回复
楼上的方法我试过了,但是在scanf函数中前导0或0X是可加可不加的,那么我在
printf("d=%#o,e=%#x\n",d,e); //使用#打印进制
//或者:
printf("d=0%o,e=%x\n",d,e); //格式串中加0

输入的时候不想加0,那么还不是,强制加了进去么?
clhposs 2008-01-25
  • 打赏
  • 举报
回复
S代表了数组的首地址 没有必要在加个取地址符号的&
jixingzhong 2008-01-24
  • 打赏
  • 举报
回复
or:
scanf("%o%x",&d,&e);
getch(); // add this line
scanf("%c%s",&ch,&s);
星羽 2008-01-24
  • 打赏
  • 举报
回复

int a;
float b;
double c;
unsigned d,e;
char ch, s[10];
//clrscr();
scanf("%d",&a);
scanf("%f",&b);
scanf("%lf",&c);
scanf("%o%x",&d,&e);
scanf(" %c%s",&ch,s);
printf("a=%d\n",a);
printf("b=%f\n",b);
printf("c=%lf\n",c);
printf("d=%o,e=%x\n",d,e);
printf("ch=%c\n",ch);
printf("s=%s\n",s);
jixingzhong 2008-01-24
  • 打赏
  • 举报
回复
scanf("%d",&a);
scanf("%f",&b);
scanf("%lf",&c);
scanf("%o%x",&d,&e);
scanf("%*c%c%s",&ch,s); // %*c 丢弃之前输入的 回车字符
printf("a=%d\n",a);
printf("b=%f\n",b);
printf("c=%lf\n",c);
printf("d=%o,e=%x\n",d,e);
printf("ch=%c\n",ch);
printf("s=%s\n",s);
shaoze5 2008-01-24
  • 打赏
  • 举报
回复
看不到图片,只看程序的话,你的s想要接受一个字符串,长度为9,你的scanf可以按照戒指的那个修改一下看看。
Treazy 2008-01-24
  • 打赏
  • 举报
回复
>>程序没有问题

还没问题?

最大的问题就是

scanf("%c%s",&ch,&s);


改成
scanf("%c%s",&ch,s);
jmulxg 2008-01-24
  • 打赏
  • 举报
回复
程序没有问题,再看看书
Treazy 2008-01-24
  • 打赏
  • 举报
回复
scanf("%c%s",&ch,&s);

改成

scanf("%c%s",&ch,s);
jmulxg 2008-01-24
  • 打赏
  • 举报
回复
看不到图片
lz2163070 2008-01-24
  • 打赏
  • 举报
回复
照瞌睡虫的来写,是对的,但是不知道是什么意思,我刚学到scanf输入,那里,有好多不懂的!
还有一个问题没解决,我的8进制0127,运行的是127,没有前导0阿!
大家帮帮忙阿!
lz2163070 2008-01-24
  • 打赏
  • 举报
回复
照戒指说的,改了,还是一样的!
buyong 2008-01-24
  • 打赏
  • 举报
回复
需要刷新缓冲区!

#include <stdlib.h>
#include <conio.h>

void main()
{
int a;
float b;
double c;
unsigned d,e;
char ch, s[10];

scanf("%d",&a);
scanf("%f",&b);
scanf("%lf",&c);
scanf("%o%x",&d,&e);
// scanf("%c%s",&ch,&s);
fflush(stdin);
scanf("%c",&ch);
fflush(stdin);
scanf("%s",s);

printf("\n");
printf("a=%d\n",a);
printf("b=%f\n",b);
printf("c=%lf\n",c);
// printf("d=%o,e=%x\n",d,e);
printf("d=0%o,e=0x%x\n",d,e);
printf("ch=%c\n",ch);
printf("s=%s\n",s);

system("pause");
return;
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧