南航西澳飞行学院官网:C语言的几个问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/09 19:44:50
请解下面各题,最好能够有一个解析,谢谢!

一、若输入语句为:scanf("%2d%4d",&i, %j);
若输入123 456, 此时变量i中为什么存入的值为12,j中存入的值为3,而456不被存入?
二、写出下列程序的执行结果
1.
main()
{
float x=654.321;
printf("%10.2e",x);
}
2.
main()
{
int x,y,z;
long m,n,o;
unsigned p,q,r;
x=32766; y=1; z=2; m=2147483646; n=1; o=2; p=65534; q=1; r=2;
printf("%d, %d\n", x+y, y+z);
printf("%ld, %ld\n", m+n, m+o);
printf("%u, %u",p+q, p+r);
}
3.
main()
{
char x,y;
x='a'; y='b';
printf("pq\brs\ttw\r");
printf("%c\\%c'\n",x,y);
printf("%o\n", '\123');
}
4.
main()
{
unsigned int a=65535;
int b=-2;
printf("%d, %o, %x, %u\n",a,a,a,a);
printf("%d, %o, %x, %u\n",b,b,b,b);
}

scanf("%2d%4d",&i, &j); 的意思是输入2个数字给i,仅接着输入4个数字给j。
12给i后
3 456准备给 j,但是 导致负值出错停止负值,所以j=3。

程序的执行结果上机运行一下不就知道了。

应该是楼上的说的对,十进制的表示是:%d

不要写%2d,写%d就行了。