当前位置:首页 > 全部子站 > IT > 水平考试

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

来源:长理培训发布时间:2017-10-20 13:43:48

 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

责编:罗莉

发表评论(共0条评论)
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,发表审核后显示!

国家电网校园招聘考试直播课程通关班

  • 讲师:刘萍萍 / 谢楠
  • 课时:160h
  • 价格 4580

特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关

配套通关班送国网在线题库一套

课程专业名称
讲师
课时
查看课程

国家电网招聘考试录播视频课程

  • 讲师:崔莹莹 / 刘萍萍
  • 课时:180h
  • 价格 3580

特色解密新课程高频考点,免费学习,助力一次通关

配套全套国网视频课程免费学习

课程专业名称
讲师
课时
查看课程
在线题库
面授课程更多>>
图书商城更多>>
在线报名
  • 报考专业:
    *(必填)
  • 姓名:
    *(必填)
  • 手机号码:
    *(必填)
返回顶部