1. 程式人生 > >創客學院9天C語言二

創客學院9天C語言二

①運算子:
%取餘
&&邏輯與
||邏輯或
位運算子:
unsigned char x=0x17,y;
y=~x;結果x=11101000.
%#X是帶格式輸出,效果為在輸出前加0X;
八進位制加0表示,例如076。
^異或運算子,相異為真。

unsigned char a =0xe4,b;
b=a<<3;則b=0x20.

②條件運算子“?:”
<表示式1>?<表示式2>:<表示式3>
int x=82,y=101;
x>=y?x+18:y-100 //運算結果為1
x<(y-11)?x-22:y-1 // 運算結果為60

逗號運算子:
float x=10.5,y=1.8,z=0;
z=(x+=5,y=x+0.2)從左到右

③sizeof 只針對資料型別,而不針對變數。

{int a = 5;
long b = 3;
long long c = 9;
printf ("%d %d %d\n",sizeof(a),sizeof(b),sizeof(c));
printf ("%d %d %d\n",sizeof(int),sizeof(long),sizeof(long long));
} 結果為4 4 8,4 4 8.

④int x=1,y=0,z=0;
x++ && y++ || ++z //結果為1(2 1 1)
!(x+1>0) && y++ || ++z //結果為1(1 0 1):y++不執行
x +=y==z,y=x+2,z=x+y+x>0 // x為2,y為4,z為1

⑤字元輸入函式

#include <stdio.h>
int main ()
{
  int c;
  printf ("Enter a character :");
  c = gerchar ();
  printf ("%c--%d->hex%x\n",c,c,c);
}
執行結果:
Enter a character :A
A--65->hex41

⑥格式輸入函式:
例1

scanf ("%4d%2d%2d",&yy,&mm,&dd);
若輸入為19991915
則yy為1999,mm為10,dd為15

例2

scanf ("%2d %*3d %2d",&a,&b);
若輸入12 345 67
則a為12,b為67.

清除
getchar()

⑧字串輸入函式

int main ()
{
 char string [15];
 printf ("Input a string :");
 gets (string);
 printf ("%s\n",string);
 return 0;
}

"x"相當於'x'和空字元\0.

gets()函式不檢查目標陣列是否能夠容納輸入

int main ()
{
   float score;
   printf ("請輸入成績:");
   scanf ("%f\n",&score);
   if(score<0||score>100)
      printf("不在範圍內");
   else if (score>=90&&score<=100)
	  printf ("youxiu\n");
   else if (score>=60&&score<90)
     printf ("hege\n");
   else
    printf ("bujige\n");   
 return 0;
}

int main (int argc,char *argv[])
{
 int x = -1;
 if (x)
    printf ("if:x=%d\n",x);
  else
    printf ("else:x=%d\n",x);
  return 0;	
}  執行結果為 if……

switch語句
switch(表示式一般是整型)
default

①①while語句
while(表示式)
{
statatments;
}
例子;

{int i =1;
int sum =0;
while(i<=100){
 sum+=i;
 i++;
}
printf ("1+2+^+%d\n",i,sum);
return 0;

①②do {
statatments;
}while();

①③水仙花數:

{int n =100;
int a,b,c;
while (n<=999)
{
  a=n/100;
  b=(n/10)%10;
  c=n%10;
  if(a*a*a+b*b*b+c*c*c==n)
    printf("%d\n",n);
   n++;
}
return 0;
}

①④九九乘法表:

int i,j;
for (i=1,i<=9;i++)
  {
         for (j=1;j<=i;j++)
	     printf("%d*%d=%d\t",j,i,i*j);
		 puts(**);
  }