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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

8. 错误如了\n,则应原样输入以保证程序的正确执行(按理应如此,但实际只要输入个除了tab、空格、回车之外的字符即可)。
  1. #include <stdio.h>
  2. int main(int argc, const char * argv[]) {
  3.     int a=-1;
  4.     scanf("%d\n",&a);
  5. printf("%d\n",a);
  6. return 0;
  7. }
复制代码

运行情况:
18\n//原样输入
18
Program ended with exit code: 0
由此进行延伸,具体如下:
  1. #include <stdio.h>
  2. int main(int argc, const char * argv[]) {
  3.     int a=-1;
  4.     scanf("%d\n",&a);
  5. printf("%d\n",a);
  6. return 0;
  7. }
复制代码

运行情况:
18d//多输入了一个d(tab、空格、回车之外的字符)
18
Program ended with exit code: 0
再进一步延伸:
  1. #include <stdio.h>
  2. int main(int argc, const char * argv[]) {
  3.     int a=-1;
  4.     scanf("%dabcdef",&a);//不是/n,是一堆乱七八糟的字符
  5. printf("%d\n",a);
  6. return 0;
  7. }
复制代码

运行情况:
18\//多输入了一个\(tab、空格、回车之外的字符)
18
Program ended with exit code: 0

9. 如果scanf缓冲区中还有内容,则scanf会直接获取而不提示我们再输入。
  1. #include <stdio.h>int main(int argc, const char * argv[]) {    int a,b,c,d,e,f;    scanf("%d%d%d",&a,&b,&c);//第一次输入
  2.     scanf("%d%d",&d,&e);//第二次输入    printf("%d,%d,%d,%d,%d\n",a,b,c,d,e);
  3.     scanf("%d",&f);//第三次输入
  4. printf("%d\n",f);
  5. return 0;
  6. }
复制代码

运行情况:
11 22 33 44 55 66 77 88//实际却只输入了一次
11,22,33,44,55
66
Program ended with exit code: 0

10. 当需要输入整型或实型时,输入的却是字符,那么不仅这个字符无法被接收,后续的其它变量的接收也中断。
  1. #include <stdio.h>
  2. int main(int argc, const char * argv[]) {
  3.     float a=-1;
  4.     int b=-2,c=-3;
  5.     scanf("%f%d%d",&a,&b,&c);
  6.     printf("%f,%d,%d\n",a,b,c);
  7.     return 0;
  8. }
复制代码

运行情况:
4 a 6//第二项按理应输入整形,却输入了字符,所以中断获取,变量b和c保持原值。
4.000000,-2,-3
Program ended with exit code: 0

7 个回复

倒序浏览
这个也比较有意思。。。。。。
回复 使用道具 举报
O(∩_∩)O好,前排支持
回复 使用道具 举报
ncrbot 发表于 2015-10-25 14:31
O(∩_∩)O好,前排支持

感谢{:2_36:}{:2_36:}{:2_36:}
回复 使用道具 举报
支持一下!
回复 使用道具 举报
支持一下
回复 使用道具 举报

{:2_36:}{:2_36:}{:2_36:}
回复 使用道具 举报

{:2_36:}{:2_36:}{:2_36:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马