A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

an1911

中级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© an1911 中级黑马   /  2014-5-12 23:14  /  1923 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问
main()
{
int a;
float b;
float c;
scanf(“%2d%3P%4f’,&a,&b,&C);
printf(”\na=%d,b=%ec。%f\n”,a,b,C);
}
如果输入比较长的数字,如9876543210l,输出的结果是什么啊,最好有分析过程

7 个回复

倒序浏览
首先,你的大小写和标点可能存在问题,如果我没有理解错,你的程序应该是:
main()
{
int a;
float b;
float c;
scanf(“%2d%3p%4f",&a,&b,&c);
printf(”\na=%d,b=%e,%f\n”,a,b,c);
}其次,scanf里面的数字表示的意思是将第1、2位存储到a,第3、4、5位存储到b,第6、7、8、9位存储到c,后面的数字或者字母无效。然后你看输出,第一个,98,没问题,第二个7.65e+2(即7.65*10的2次方),第三个4321.000000。
你可以参照一下scanf函数和printf函数的格式控制。地址在下面:
http://www.cplusplus.com/reference/cstdio/scanf/

http://www.cplusplus.com/reference/cstdio/printf/


回复 使用道具 举报
  1. int a;
  2.     float b;
  3.     float c;
  4.     scanf("%2d%3f%4f",&a,&b,&c);
  5.     printf("\na=%d,b=%e,c=%f\n",a ,b,c);
复制代码

代码里边很乱让人不舒服,拷贝过来全是报错,警告,就私自修改了一下。不知道跟你原意有没有出入。%3p实在搞不懂,b属于float类型,所以改为%3f.
注意一下格式:如果scanf中%d是连着写的如“%d%d%d”,在输入数据是,数据之间不可以加逗号,只能是空格或tab键或者回车键——“2 3 4”/“2(按tab)3(按tab)4(按tab)”。若是“%d,%d,%d”,则在输入数据时需要加“,”——“2,3,4”.
在"%"与各格式符之间加入一个整数,表示只可以读取操作中的最大位数。scanf("%2d",&a),这样的话即使你输入的是12345678,打印结果只是12.
把你说的98   765   43210l可以分为三段来看 ,根据打印类型来看输出的结果是a=98,b=7.650000e+02(%e这个是按10得n次方格式输出的),c=4321.000000。
希望可以帮到你:handshake
回复 使用道具 举报
哦 谢谢,你们解答
回复 使用道具 举报
二楼和三楼的解释的很清楚
回复 使用道具 举报
/*楼主我帮你把代码优化了下*/
/*请问如果输入比较长的数字,如9876543210l,输出的结果是什么啊,最好有分析过程*/
#include <stdio.h>
int main()
{
        int a;
        float b;
        float c;
        scanf("%2d %3P %4f",&a,&b,&c);   
        printf("\n a=%d,b=%e c=%f \n ", a, b, c);
}


回复 使用道具 举报
an1911 中级黑马 2014-5-13 19:34:43
7#
詹绪长 发表于 2014-5-13 06:59
代码里边很乱让人不舒服,拷贝过来全是报错,警告,就私自修改了一下。不知道跟你原意有没有出入。%3p实在 ...

昨晚直接手写到文本中,没注意大小写,谢谢你的解答!
回复 使用道具 举报
an1911 中级黑马 2014-5-13 19:36:20
8#
詹绪长 发表于 2014-5-13 06:59
代码里边很乱让人不舒服,拷贝过来全是报错,警告,就私自修改了一下。不知道跟你原意有没有出入。%3p实在 ...

恩。知道了。谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马