1. 程式人生 > 其它 >Day05 運算子和流程結構語句

Day05 運算子和流程結構語句

技術標籤:學習筆記c語言

Day05

一、運算子表示式和流程控制語句

運算子

1、算數運算子【+ - * / % ++( 自增 ) --(自減)】
	int a =10;
	a++;等同於 a = a+1; 等同於 a += 1
	++a;

	2、賦值運算子【= += -= *= /= %=】
	3、比較運算子【 > < >= <= == !=】
	4、邏輯運算子【! &&  ||

二、型別轉換

1、隱式轉換
		編譯器會自動將低的資料型別轉成高的資料型別,轉化後的資料正確
	2、強制轉化
		需要程式根據實際用途去轉化,得到的結果可能會省略部分的值

	(
型別說明符) 表示式 (float) a

三、程式流程結構

1、if語句

  格式: 		if(表示式){ 語句 程式碼}
	//如果表示式為真 執行括號內程式碼
     格式:if(表示式){ 程式碼}else {程式碼}	
	//如果表示式為真 執行if括號內程式碼  如果為假執行else{}內程式碼
     格式:if(表示式1){程式碼} else if(表示式2){程式碼}else if(表示式3){程式碼}else{程式碼}

練習:

三隻小豬稱體重,定義三個變數,可以通過鍵盤錄入體重。
	
	#define _CRT_SECURE_NO_WARNINGS
	#include<stdio.h>
#include<string.h> #include<stdlib.h> int main() { int a, b, c; scanf("%d%d%d", &a, &b, &c); if (a > b) { if (a > c) { printf("a重 :%d\n", a); } else { printf("c重 : %d\n", c); } } else { if
(b > c) { printf("b重 :%d\n", b); } else { printf("c重 : %d\n", c); } } system("pause"); return EXIT_SUCCESS;

2、三目運算子

表示式 ? 選項1 : 選項2		//如果表示式為真,則執行選項1,否則執行2

3、switch語句

格式:
	switch(表示式)
    {
	    case 值1:
	    程式碼
	    break;
	    case 值2:
	    程式碼;
	    break;
	    default:
	    程式碼
	    break;

    }

練習:

通過鍵盤輸入一名學員成績 根據成績【0-100】算出 優秀【90 100】 良好【80 99】 及格【60 -79】  不及格【0-59】

注意:

1.if條件語句執行效率差 switch 條件語句 執行效率高 
2.if可以判斷一個區間 switch用來判斷一個值 
3.三目運算子結構簡單明瞭

4、迴圈語句

(while語句)練習:

從1到100  所有7的倍數 帶7的全部略過

(do while語句)練習:

格式:
do{}while();
水仙花100 到999所有三位數的各個位數的立方和等於該數本身 那麼她就是一個水仙花  153  =1+125+27 =153。
#define _CRT_SECURE_NO_WARNINGS
	#include<stdio.h>
	#include<string.h>
	#include<stdlib.h>
	
	int main()
	{
		int index = 100;
		do
		{
			//將一個三位數拆解成個位 十位 百位
			int a = 0, b = 0, c = 0;
			//百位
			a = index / 100;
			//十位 
			b = index / 10 % 10;
			//個位
			c = index % 10;
			if (a*a*a + b*b*b + c*c*c == index)
			{
				printf("%d是水仙花\n", index);
			}
			index++;
		} while (index < 1000);
	
		system("pause");
		return EXIT_SUCCESS;
	}

(for迴圈)

格式:
for(初始值;表示式;表示式){}

練習1:99乘法表 按照樣式列印 並輸出結果
#define _CRT_SECURE_NO_WARNINGS
	#include<stdio.h>
	
	int main()
	{
	
		//linux 無法編譯程式  -std=c90  c99   gcc -o .exe .c -std=c99
		int i, j;
		for (i = 1; i <= 9; i++)
		{
			for (j = 1; j <= i; j++)
			{
				printf("%d*%d=%d\t", j, i, i*j);
			}
			printf("\n");
		}
		return 0;
	}
練習2:水仙花
#define _CRT_SECURE_NO_WARNINGS
	#include<stdio.h>
	
	int main()
	{
	
		for (int i = 0; i < 1000; i++)
		{
			//將一個三位數拆解成個位 十位 百位
			int a = 0, b = 0, c = 0;
			//百位
			a = i / 100;
			//十位 
			b = i / 10 % 10;
			//個位
			c = i % 10;
			if (a*a*a + b*b*b + c*c*c == i)
			{
				printf("%d是水仙花\n", i);
			}
		}
	
		return 0;
	}

練習:

【猜數字】猜1-100之內的數,如果你猜的數小於【數字】  提示你輸入的數字太小了,如果你猜的數大於【數字】,提示你輸入的數字太大瞭如果你的輸入的數字等於【數字】,提示恭喜你猜對了    程式退出

使用隨機數

1、匯入標頭檔案 time.h   #include <time.h>
	2、生成隨機數種子 每次生成的隨機數不一樣
	3、生成隨機數  int num=rand()%100+1; //範圍1-100

程式碼

#define _CRT_SECURE_NO_WARNINGS
	#include<stdio.h>
	#include<time.h>
	
	int main(void)
	{
		//加入隨機數種子
		srand((unsigned int)time(NULL));
		int num = rand() % 100 + 1;
		int value;
		while (1)
		{
		
			printf("請猜一下我心裡想的什麼數字:\t");
			scanf("%d", &value);
			if (value == num)
			{
			
				printf("恭喜你猜對了!!!\n");
				break;
			}
			else if (value > num)
			{
				printf("大了大了,再往小了猜!\n");
				continue;
			}
			else
			{
				printf("小了小了,再往大了猜!\n");
				continue;
			}
		}
		return 0;
	}

練習:

//等腰三角星星。
	#include<stdio.h>
	
	int main(void)
	{
		printf("請輸入行數\n");
		int row,i,j,k;
		scanf("%d", &row);
		for (i = 1; i <=row; i++)
		{
			for (j = 1; j <= row - i; j++)
			{
				printf(" ");
			}
			for (k = 1; k <= 2 * i - 1; k++)
			{
				printf("*");
			}
			printf("\n");
		}
		return 0;
	}