五、语句(例1---输入输出)

来源:互联网 发布:mac打开macintosh hd 编辑:程序博客网 时间:2024/05/29 12:32
#include <stdio.h>int main(){   int n;   printf("请输入一个整数:");   int iRet=scanf("%d",&n);//如果用户一直输入回车,scanf在这种调用格式下不会返回   printf("您输入的值是:%d   接收到的有效参数个数:%d\n",n,iRet);   while(getchar()!='\n');//如果没有这一句,程序可能会卡死。缓冲区出错,导致后面的标准IO拒绝工作   n=0; printf("测试:请输入一个整数:");   scanf("%d",&n);//用户可能输入0,也可能输入错误,如果没有对SCANF返回值的判断,会导致程序运行的结果不一定是用户想要的   printf("您输入的值是:%d\n",n);   while(getchar()!='\n');   char c;    while(1)   {   printf("测试2:请输入一个字符:");   scanf("%c",&c);//如果参数输错,错误的数据并不会自动在缓冲区中被清除,如果没有人为处理,这里会出现死循环                      //如果输入的是多个回车,这种格式下会返回                      //即使参数正确,回车符也不会被自动清除   while(getchar()!='\n');   printf("您输入的字符:%c INT值:%d \n",c,c);   if(c>0)break;//人为的逻辑要求   }}
#include <stdio.h>int main(){   //标准输出格式排版   int a=138;float f=199.32;    int n;   for(n=0;n<20;n++){   printf("\r%-5d-%8.3f-%1d",a,f,n);//注意%1d的特殊情况,值比它大时的显示方式   fflush(stdout);//强迫输出缓冲区马上输出,而无需再缓冲   //缓冲区碰到回车或缓冲区满了会自动输出   //注意:fflush(stdin); 清除的是输入的缓冲区,它是无条件的清理缓冲区,注意与while(getchar()!='\n');异同   usleep(1000*1000);   }   printf("\n");   }
#include <stdio.h>int main(){   int a=3,b=5,c=0,d=1;   printf("%d,%d,%d\n",a<=b,c=1+a&&b,d+=b<<=2);   a=-3;   printf("%d,%d\n",a>=0&&a<=100,0<=a<=100);   //注意这样的0<=a<=100要跟数学同样的式子相区隔   //上式在C里更应该写成:a>=0&&a<=100   //      0  1    ,RST0 L0 R?  ,RST1 <=L0 R1        a=0;b=1;   a=(b,printf("%d ",b),++b,printf("%d ",b),++b);   //           1       b2 ,        2      ,b3     printf("%d \n",a);   //       3   a=0;b=1;   a=(b,printf("%d ",b),printf("%d ",b++),printf("%d ",b),b++);   //           1               1                 2   printf("%d %d\n",a,b);   //      2  3   a=0;b=1;   printf("%d %d %d\n",b,++b,b++);   //       3  3  1   b3,b3 ,b1   b=1;   printf("%d,%d,%d,%d,%d,%d,%d\n",b,++b,b++,++b,b++,++b,++b);   //       7  7  5  5  3  3  2  b7 ,b7 ,b5  ,b5 ,b3 ,b3,b2        <-这一个输出是错的   //       7  7  5  7  3  7  7  b7, b7,!b5  ,b7,!b3,b7,b7   //推论1:++b的运算对B的影响:本位参数的输出暂时保留,但计算会有效,   //b++编译器是直接输出结果  <-理解成固化的默认的规律   a=0;b=1;a=b++;   printf("%d %d %d %d\n",++a,b=1+a++ +(a++ +2),b,a);  //          4  5  5  1     a4,b1+1+(3)      ,b2, a1  //推论2!!:一个变量如果从事的运算只是与自身有关的,那它遵守推论1,否则按原有规则做事  //++i先自增再使用,显示输出的使用级别最低,其次到赋值(显示级别仅次于++i)  //在+++或---:这种情况看++优先还是+优先,原则是优先的先处理   printf("%d %d\n",a,b++);//a=3,b=5}