欧几里德最大公约数,取模,地址字节,标准输入输出

求最大公约数

int gcb(int a,int b)
{
  if(b==0)  return a;
  else return gcb(b,a%b);
}

对于浮点数 float double ++,只会对整数的部分加1,不会对小数点后的值+

int main()
{
   float x=12,25;
   x++;
   printf("%d",x);x=13.25
}

取模运算只能对整型进行取模(char, short, int ,long int, long long

地址字节的大小

int a;
printf("%d",sizeof(&a));
x86 4个字节 32bit
64   8个字节  64bit

指针变量存放的是变量的首地址
指针访问结构体成员

(*sp).s_id;带括号是因为.的优先级高,*sp就是所指变量本身
sp->s_id

标准输入输出

显示器是标准输出文件stdout,向屏幕输出printf putchar
键盘为标准输入文件stdin 从键盘获取函数scanf getchar
下面这个代码,从键盘输入的数据先存在缓冲区中且代码停在第一个ch=getchar,当输入\n时,缓冲区才会将数据一个一个的给ch然后进入while循环,putchar也一样,先存入缓冲区,后读到屏幕
缓冲区在内存

int main()
{
   int sun=0;
   char ch='\0';
   ch=getchar();
   while(ch!='\n')
   {
      sum+=1;
      ch=getchar();
   }
   printf("sun: %d\n",sum);
   return 0;
}

缓冲区造成的问题
当从键盘中输入数字后按下enter 键后,就会将\n给ch就直接退出了,有一个方法是加上一行ch=getchar()将\n给ch

int main()
{
   int sum=0;
   int val=0;
   char ch='0';  
   do
   {
      printf("input a number:");
       scanf("%d",&val);
       sum+=val;
       printf("是否继续(Y/N)\n");
      //  ch=getchar();加这一行可以解决但是按多次空格也不行
       ch=getchar();
   }while(ch=='y'||ch=='Y');
   printf("sum : %d\n",sum);
   return 0;
}

sizeof既不是宏也不是函数,只是是一个运算符

typedef

typedef int arry[10];
arry ar={1,2,3};
ar就是整型数组并且为10个空间
上一篇:关于C/CPP字符输入,scanf("%c",&a)可能存在的问题


下一篇:Educational Codeforces Round 120