1.单精度浮点型float精确到小数点后5位,双精度浮点型double精确到小数点后15位。
2.输出控制格式:%md指输出宽度为m。若实际(包含符号位)小于m,左端补全空格;若大于m 按实际位数输出。%m.nd指浮点数保留n位小数,输出宽度为m(包含符号位和小数点)。//若要求补全为0则%0md。
eg:
#includeint main() { int day,mouth,year; scanf("%d-%d-%d",&mouth,&day,&year); printf("%d-%02d-%02d",year,mouth,day);//用到了前导0 return 0; }
3.getchar()会读入换行符。
eg:课本例3-7
统计英文字母和数字字符。输入一个正整数n,再输入n个字符,统计其中英文字母,数字字符和其它字符的个数。
#includeint main() { int digit,i,letter,n,other; char ch; digit = letter = other = 0; printf("请输入正整数nn"); scanf("%d",&n); getchar(); printf("输入%d个字符n",n); for(i=1;i<=n;i++){ ch = getchar(); if((ch>='a' && ch<='z')||(ch>='A' && ch<='Z')){ letter++; } else if(ch>='0' && ch<='9'){ digit++; } else{ other++; } } printf("letter = %d,digit = %d,other = %d",letter,digit,other); return 0; }
#includeint main() { int digit,i,letter,n,other; char ch; digit = letter = other = 0; printf("请输入正整数nn"); scanf("%d",&n); printf("输入%d个字符n",n); for(i=1;i<=n;i++){ ch = getchar(); if((ch>='a' && ch<='z')||(ch>='A' && ch<='Z')){ letter++; } else if(ch>='0' && ch<='9'){ digit++; } else{ other++; } } printf("letter = %d,digit = %d,other = %d",letter,digit,other); return 0; }
比较两个代码,第二个缺少for循环上面的getchar();而结果是letter少一,other多一。
reason:在输入字符之后需要按enter键进行确定,回车符也算是字符,第11行的getchar();起到了读入并舍弃回车符,如果不读入舍弃,第一次循环ch的赋值将为回车符。



