电话:0731-83595998
导航

2012年软考程序员辅导:C语言新人常见问题2

来源: 2017-10-20 13:43

 4、scanf格式控制误用

  例如:

  #include

  int main(void)

  {

  float a,b,c;

  printf("shuru 3 ge xi shu :");

  scanf("%f,%f,%f",&a,&b,&c);

  printf("he shi %f",a + b + c);

  return 0;

  }

  解析:scanf()函数允许把普通字符放在格式字符串中。除了空格字符之外的普通字符一定要与输入串准确匹配。否则,例如上面的程序,那么scanf()将其解释成,将键入一个数字,键入一个逗号,然后再键入一个数字,再键入一个逗号,最后再键入一个数学。也就是说必须像这样输入:2.3,5.1,3.8。如果不能精确匹配,则scanf()读取将失败。

  作为编写这个程序的人,你可以按照这个格式输入,但是用户则不知应该以何种格式输入。所以应该改为scanf("%f%f%f",&a,&b,&c);

  解决方案:scanf一行见解析。

  5、scanf参数错误

  例如:

  #include

  int main(void)

  {

  char str[80];

  printf("Please enter your first name");

  scanf("%s", &str);

  printf("Hello %s", str);

  return 0;

  }

  解析:scanf()中,读取int, long, float, double, char等类型的数据,是需要在第n(n>=2)个参数里加上&的,因为scanf()函数里,第n(n>=2)个参数是变量的地址,而不是变量本身:例如定义int num;则scnaf("%d", &num);而读取字符串是不需要加上&,因为字符串的变量名本身就代表了地址。所以例子中应为scanf("%s", str);同时,这条规则对于结构体内的变量的也适用,即

  struct foo {

  char ch;

  char str[80];

  int num

  }data;

  那么应该是

  scanf("%c%s%d", &data.ch, data.str, &data.num);

  解决方案:见解析

  6、数据类型混淆

  例如:

  #include

  int main(void)

  { int a;

  double b=1;

  for(a=1;a

编辑推荐:

下载Word文档

温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)

网络课程 新人注册送三重礼

已有 22658 名学员学习以下课程通过考试

网友评论(共0条评论)

请自觉遵守互联网相关政策法规,评论内容只代表网友观点!

最新评论

点击加载更多评论>>

精品课程

更多
10781人学习

免费试听更多

相关推荐
图书更多+
  • 电网书籍
  • 财会书籍
  • 其它工学书籍
拼团课程更多+
  • 电气拼团课程
  • 财会拼团课程
  • 其它工学拼团
热门排行

长理培训客户端 资讯,试题,视频一手掌握

去 App Store 免费下载 iOS 客户端