一道简单的C语言题目,但希望能给详细点的答案

题目是
1、输入并编辑下面的程序
main()
{
int a,b;
float c,d;
long e,f;
unsigned int u,v;
char c1,c2;
scanf(“%d,%d”,a,b);
scanf(“%f,%f”,c,d);
scanf(“%ld,%ld”,e,f);
scanf(“%o,%o”,u,v);
scanf(“%c,%c”,c1,c2);
printf(“\n”);
printf(“a=%7d,b=%7d\n”,&a,&b);
printf(“c=%10.2f,d=%10.2f\n”,&c,&d);
printf(“e=17ld,f=%17ld\n”,&e,&f);
printf(“u=%o,d=%o\n”,&u,&v);
printf(“c1=%c,d=%c\n”,&c1,&c2);
}
这个程序有语法错误吗?为什么?
2、调试上述程序无语法错误后,用下面的测试数据,对程序进行测试:
a=123,b=456,c=17.6,d=71837.65,e=70000,f=2174506,u=62000,v=58765,c1=’a’,c2=’b’
分析运行结果。特别注意输入c1,c2的值是什么?什么原因?
3、将输入e和f的语句改为:
scanf(“%d,%d”,&e,&f);
再用上述测试数据测试并分析结果。

老师提示说输入数据有问题,要修改,请问应该怎么输入,还有我看不懂题目是什么意思,能不能帮忙翻译下。。非常感谢

scanf(“格式”,地址),对于变量要加上地址运算符&才能得地址。
printf("格式",变量)不用地址运算符&。

这里改过后还是没法得到c1,c2值,因为还有多个scanf同时运用 会产生键盘缓冲区所以,多次使用时,scanf得到的可能是上次键盘输入缓冲区中的东西。
所以,为保证正确,多次使用scanf时,应该在每次scanf之前加上一句: fflush(stdin); 即可。
还有就是不要用八进输入会很容易出错 还是把%o改成%u输入吧 输出时再用%o
这样就不会出错了
还有 unsigned int一般写为unsigned 。
还有多看书,对照下例题就不犯乱那么基本的错了 如函数scanf printf的用法都用错
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-03-18
你的scanf("%d%d",a,d)
你的数字输入要加地址符&
如scanf("%d%d",&a,&d)
如果你不加的话 也不会报错 但有时候赋值的时候就会赋值错误 就会导致你的输出错误的信息
第2个回答  2009-03-18
错误1... scanf是输入函数 ,你上面的输入函数都没有加地址表识符,
正确输入应该是这样的,如scanf("%d",&a);,你上面的输入函数中的a没有加&符号,&符号是取地址的意思,就是说输入一个数,把他放在a的地址里,书写格式就是&a
错误2... printf是输出函数,输出函数是要求写函数的名字,而不是函数的地址,你写的是函数地址了,正确的应该这样写,如printf("%d",a);他的意思是把a变量的值,按整数输出,我刚才在电脑上实验了一下,按照你的写法printf("%d",&a)的确也能输出结果,但是输出的结果不是我们想要的值,他输出了一个数,我估计是内存地址...
第3个回答  2009-03-17
scanf要用&a的格式。
第4个回答  2009-03-17
printf("")打印格式错误!!!
相似回答