運算符和輸出函數

一.邏輯運算符; 1代表’真’ 0代表’假’
&& 與 兩個條件都需要滿足 1&&1 1; 1 && 0 0; &(地址符) 讀 and
|| 或 滿足其中一個條件 1 || 0 1; 0 || 0 0; or
! 非 與條件相反 如:1 0; 0 1; not
x,y中至少有一個小於0;
x<0 && y>=0 || x>=0 && y<0 || x<0 && y<0
x < 0 || y < 0;
“&&” “||”均具有短路求值的特點:
情況1: 表達式1 && 表達式2 當表達式1爲假時 ,表達式2的值都不會被計算(可以理解爲字節忽略.)
情況2: 表達式1 || 表達式2 當表達式1爲真時 繼續運算。
例子:
int a = 2, b = 3, c;
c = !a && b++;
printf(“b = %d,c = %d”, b, c); //b = 3,c = 0
c = a || b++;
printf(“\nb = %d,c = %d”, b, c); //b = 3,c = 1
c = !a || b++;
printf(“\nb = %d,c = %d”, b, c); //b = 4,c = 1
c = a && b++;
printf(“\nb = %d,c = %d”, b, c); //b = 5,c = 1
運算符補充:
按位 與 : & (00得0,10得0,01得0,11得1)
7&8 = 0
7 00000111
&
8 00001000
00000000

按位 或 : | (00得0,10得1,01得1,11得1)
7|8 = 15
7 00000111
|
8 00001000
00001111

按位 異或 : ^ (00得0,10得1,01得1,11得0)
7^8 = 15
7 00000111
^
8 00001000
00001111
常用於交換兩個變量的值,如:
int a = 10, b = 20;
a = a^b;
b = a^b;
a = a^b;
printf(“a = %d,b = %d”, a, b); //a = 20,b = 10

取反: ~ (1得0,0得1)
~7 = -8 7 = 00000111 ~= 11111000(補) = 11110111(反) = 10001000(原) = -8;

右移: >> (往右移動,高位補0)
7 >> 2 = 00000111 >> 2 = 00000001 = 1

左移: << (往左移動,低位補0)
7 << 2 = 00000111 << 2 = 00011100 = 28

二.條件運算符
1.三目運算符 (2>1) ? 12:13 ; (2>1)是1 取12 (2<1)是0 1取 13
int a = (3 > 5) ? 10 : 20;
printf(“a = %d”,a);
“表達式1 ? 表達式2 : 表達式3”, 三目運算符;
如果表達式1的值爲真,則整個條件表達式的值爲表達式2的值,否則爲表達式3的值.

三.輸入輸出函數:
1.printf()打印 getchar()請求終端輸入字符 puts()輸出字符串 putchar()輸出單個字符 scanf()一個與輸出界面過度的輸入面板
需要引入的頭文件stdio.h 與 #define _CRT_SECURE_NO_WARNINGS
int a = 0;
scanf(“%d”,&a); //a = 我們輸入的數字
getchar();

int a = 0,b,c;
printf(“請輸入我的財產:\t”);
scanf(“%d%d%d”, &a,&b,&c); //此時每個數字輸完我們用回車間隔;
//scanf(“%d,%d,%d”, &a, &b, &c); //此時每個數字輸完我們用逗號間隔,全部輸完才按回車;
//scanf(“%d %d %d”, &a, &b, &c); //此時每個數字輸完我們用逗空格間隔,全部輸完才按回車;

輸入矩形長寬求面積!
輸入圓形半徑求面積!
輸入三個學生成績求平均成績!

/*int r;
printf(“請輸入一位正整數作爲圓形的半徑:\t”);
scanf(“%d”, &r);
getchar();
printf(“\n圓形的面積是:\t%0.2f”, Pai*r*r);*/

/*int w, h;
printf(“請輸入兩個正整數,分別表示矩形的長寬,用逗號間隔:\t”);
scanf(“%d,%d”, &w, &h);
getchar();
printf(“\n矩形的面積爲:\t%d”,w*h);*/

int s1,s2,s3;
printf(“請輸入三個正整數,分別表示三名學生的成績,用逗號間隔:\t”);
scanf(“%d,%d,%d”, &s1, &s2,&s3);
getchar();
printf(“\n三名學生的平均成績爲:\t%0.2f”, (s1+s2+s3)/3.0f);*/

    getchar(),請求終端輸入字符;

putchar(),輸出單個字符

    格式控制符擴充: %hd   %d  %ld  %c  %u %f   %-    %0  %m  %.n   %s  %o %x %e  %g

格式控制符擴充 % + :
%- 左對齊(默認是右對齊)
%0 輸出的空位用0補充
%m 表示字寬

如int a = 5 printf(“%06d”,a); //000005
printf(“%-6d”,a); //5
printf(“%-06d”,a); //5 (只有在右對齊且存在空位時才補0)
%.n 對實數,表示輸出n位小數;對字符串,表示截取的字符個數。

%s 表示輸出字符串
如: printf(“%s”,”shantao”); //”shantao”
printf(“%10s”,”shantao”); //” shantao”
printf(“%-10s”,”shantao”); //”shantao ”
printf(“%-010s”,”shantao”); //”shantao ”
printf(“%010s”,”shantao”); //”000shantao”
printf(“%010.5s”,”shantao”); //”00000shant”
printf(“%-010.5s”,”shantao”); //”shant “

%l 輸出長整形
%d —— 以帶符號的十進制形式輸出整數
%o —— 以無符號的八進制形式輸出整數
%x —— 以無符號的十六進制形式輸出整數
如:int a = 1024;
printf(“十進制 = %d,八進制 = %o,十六進制 = %x”, a, a, a);
//打印結果: 十進制 = 1024,八進制 = 2000,十六進制 = 400

%u —— 以無符號的十進制形式輸出整數
如:int a = -1;
printf(“%u”,a); //4294967295

%c —— 以字符形式輸出單個字符
%f —— 以小數點形式輸出單、雙精度實數

%e —— 以標準指數形式輸出單、雙精度實數
輸出數據共佔13位,其中整數部分爲1位非
零數字,小數點佔1位,小數部分爲6位,
指數部分e佔1位,指數符號佔1位,指數爲
3位。若輸出數據爲負數,還應增加一位整
數部分的符號位。
如:float a = 12345677;
printf(“%e”, a); //1.234568e+007
a = -12345677;
printf(“%e”, a); //-1.234568e+007

int a = 123456789
%g —— 選用輸出寬度較小的格式輸出實數(只佔7位多餘的自動刪除) 如e 格式 1.23456e + 002
根據數值的大小,自動選擇用f格式或e格式輸出
實數。輸出時選擇佔寬度較小的一種,且不輸出
無意義的零。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章