高悬赏 c语言求解析啊。
题中给出的结果前两个不对,最后一个对。正确结果应该是:
输入9876543210 输出x1=98,x2=765,y1=4,y2=1
输入98 76 543210 输出x1=98,x2=76,y1=‘ ’,y2=3
输入987654 3210 输出x1=98,x2=765,y1=4,y2=2
解释——
%2d限制读取2位字符,对应的变量x1=98;%3d限制读取3位字符,对应的变量x2=765;%3c读取1位字符且共跨越3位,对应的y1=‘4’;接着同样由%3c控制读1位字符使y2=‘1’。
%2d限制读取2位字符,对应的变量x1=98;%3d限制读取3位字符,跳过非数字字符取76,对应的变量x2=76;%3c读取1位字符且共跨越3位,对应的y1=‘ ’;接着同样由%3c控制读1位字符使y2=‘3’。
%2d限制读取2位字符,对应的变量x1=98;%3d限制读取3位字符,对应的变量x2=765;%3c读取1位字符且共跨越3位,对应的y1=‘4’;接着同样由%3c控制读1位字符使y2=‘2’。
这里要注意在用%xd作控制符由scanf读取时要把读取的x位字符串转换成int型赋给对应的整型变量。另:最后一句printf("x1=%d,x2=%d,y1=%c,y2=%c\n",x1,y1);应该是printf("x1=%d,x2=%d,y1=%c,y2=%c\n",x1,x2,y1,y2);才对。
%2d %3d %3c %3c
98 765 432 10回车
所以,x1=98, x2=765 y1=4 y2=1 (因为y1、y2为char型,所以只保留一位字符)
当输入为98 76 543210时
%2d %3d %3c %3c
98 76 空格54 3210回车
x1=98, x2=76(空格作为数据的分割符) y1=空格 y2=3 (因为y1、y2为char型,所以只保留一位字符)
输入为9.87654 3210时
第一个数据为9 其后类型出错,本语句未被执行部分被忽略。(不同系统,可能会有不同处理)
自己好好看看程序吧
我想问的是这个题做题的步骤,为啥答案是这么多。
%d 读入十进制整数 %c 读入一个字符
主要就在于scanf和printf两个函数的参数上面!
就是那个2d. 3d. 3c. 3c不懂啊,我也晓得定义在输出嘞,不知道为什么y1等于4和y2等于2
2位的二进制整数,3d是3位整数
额额,老师骂的我没心情写字了。