判斷用戶名和密碼是否正確。c++
#include <stdio.h> int main(void) { // 定義變量,用來表示用戶名和密碼 //char name; char name[32]; //int password; char password[16]; // 輸入用戶名和密碼 printf("請輸入用戶名:"); scanf("%s", name); printf("請輸入密碼:"); scanf("%s", password); if (strcmp(name, "admin") == 0 && strcmp(password, "123456") == 0) { // 打印功能菜單 printf("---交換機後臺管理---\n"); printf("1. 建立帳號\n"); printf("2. IP管理\n"); printf("3. 退出\n"); } else { printf("用戶名或密碼錯誤!\n"); } return 0; }
可參考c/c++手冊
百度網盤連接:https://pan.baidu.com/s/1dZJLwEdom
#include <string.h>
int strcmp( const char str1, const char str2 );ide
比較規則:
按順先從前日後比較
同序號的字符按「ASCII」碼值比較
直到遇到對應字符不等或者字符串結束函數
返回值:
str1 < str2時, 返回值< 0(有些編譯器返回 -1)
str1 > str2時, 返回值> 0(有些編譯器返回 1)學習
str1 等於 str2時, 返回值== 03d
democode
#include <stdio.h> int main(void) { char name[32]; int ret; printf("請輸入您的姓名:"); scanf("%s", name); ret = strcmp(name, "Rock"); printf("ret=%d\n", ret); return 0; }
#include <string.h>
int strncmp( const char str1, const char str2, size_t count );
最多比較字符串str1和str2的前count個字符。blog
demo開發
#include <stdio.h> #include <string.h> int main(void) { char name1[32] = "Rock"; char name2[32]; int ret; fgets(name2, sizeof(name2), stdin); //輸入Rock ret = strcmp(name1, name2); printf("ret=%d\n", ret); // ret = strncmp(name1, name2, strlen(name1)); printf("ret=%d\n", ret); return 0; }
### 2.其餘數據類型的比較運算
char, int, float, double數據的比較都使用:
大於: >
大於或等於: >=
小於: <
小於或等於: <=
不等於: !=
等於: == (注意:不是 = )字符串
比較運算的結果:(邏輯值)
結果爲「真」: 1
結果爲「假」: 0
#include <stdio.h> int main(void) { int a = 100; int b = 200; int ret; ret = a > b; printf("ret=%d\n", ret); //ret=0 ret = a < b; printf("ret=%d\n", ret); //ret=1 return 0; }
比較運算的使用場合:
用於「條件判斷」
使用0和1表示邏輯值
dome
#include <stdio.h> int main(void) { int a = 100; int b = 200; int ret; //或者 char ret; ret = a > b; if (ret) { printf("a > b\n"); } else { printf("a <= b\n"); } return 0; }
使用bool類型表示邏輯類型
使用 true 表示真
使用 false表示假
注意:須要包含頭文件 stdbool.h
#include <stdio.h> #include <stdbool.h> int main(void) { int a = 100; int b = 200; //int ret; bool ret; ret = a > b; if (ret) { //即: if (ret == true) printf("a > b\n"); } else { printf("a <= b\n"); } //true和false是"bool類型的常量" printf("true=%d\n", true); printf("false=%d\n", false); return 0; }
注意:大部分C項目使用的是C89標準中的邏輯值表示方式。
邏輯與 &&
都爲真,邏輯與纔是真
只要有一個是假, 邏輯與就是假
至關於「並且」
應用場景:
當須要兩個條件都知足時,就使用邏輯與
特別注意:
條件1 && 條件2
當條件1爲真時,纔去判斷條件2
當條件1爲假時,就再也不判斷條件2
#include <stdio.h> int main(void) { int x = 0; int a; printf("請輸入一個整數:"); scanf("%d", &a); if ((a > 5) && ((x=100) > 90)) { printf("OK\n"); } printf("x=%d\n", x); return 0; }
### 邏輯或 ||
都爲假,邏輯與纔是真
只要有一個是真, 邏輯與就是真
至關於「或者」
應用場景:
只須要知足任意一個條件時,就使用邏輯或
特別注意:
條件1 || 條件2
當條件1爲真時,纔再也不判斷條件2
當條件1爲假時,才判斷條件2
#include <stdio.h> int main(void) { int x = 0; int a; printf("請輸入一個整數:"); scanf("%d", &a); if ((a > 5) || ((x=100) > 90)) { printf("OK\n"); } printf("x=%d\n", x); return 0; }
至關於「不」
應用場景:
當須要不知足某條件時,就使用邏輯或
特別注意:
邏輯非,只對一個條件進行運算!
是一種「單目運算符」
#include <stdio.h> int main(void) { int age; printf("請輸入您的年齡: "); scanf("%d", &age); //特別注意要使用() //if ( ! age >= 30) 將致使非預期結果, !會和age結合 if ( !(age >= 30) ) { printf("您還不到30\n"); } else { printf("您已過而立之年!\n"); } return 0; }
算術運算
x = 10; //把x的值設置爲10, 把10寫到變量x中。
x = 10 + a;
左邊必須是變量
「優先級」很低,只比 ","(逗號元素符)高。
x = (3 + 5); //先計算"+", 再計算「=」
x += 10; // x = x + 10
x -= 10; // x = x - 10
類的還有: *= , /=, %= 等。
在後續章節中學習。
自增自減運算
注意:
1.只能對變量作++和--運算,不能對變量和表達式作++和--運算
5++; //ERROR
(3+x)++; //ERRO
2.建議儘可能使用前綴自增(自減),以免錯誤。
逗號運算符
優先級最低。
#include <stdio.h> int main(void) { int x; // 先計算 x = 3+5, 再計算3*5 x = 3+5, 3*5, 10/5; printf("x=%d\n", x); //x=8 //取最後一個表達式的值,做爲整個「逗號表達式」的值 x = (3+5, 3*5, 10/5); printf("x=%d\n", x); //x=2 return x; }
條件 ? 表達式1 :表達式2
若是條件爲真,就取表達式1做爲整個表達式的值
若是條件爲假,就取表達式2做爲整個表達式的值
#include <stdio.h> int main(void) { int year; int holiday; printf("請輸入您的工做年限: "); scanf("%d", &year); holiday = year > 10 ? 20 : 5; printf("您的年假有%d天\n", holiday); return 0; }
類型轉換的概念
爲何須要「類型轉換」
參與運算的兩個操做數的數據類型,必須相同!
類型轉換的類別:
1.隱式類型轉換
自動完成轉換!
1)算數轉換
2)賦值轉換
3)輸出轉換
算數轉化
(+,-,*,/,%)
char , int, long, long long, float, double
賦值轉換
#include <stdio.h> int main(void) { int x; x = 3.14 * 10; // 31.4 轉換爲int類型,由於賦值符號的左邊變量的類型是int類型 printf("%d\n", x); return 0; }
輸出轉換
#include <stdio.h> int main(void) { printf("%c\n", 255+50); //305 -> 49 ('1'); printf("%d\n", 255+50); return 0; }
int類型數據, 按照%f格式輸出時,將獲得錯誤的輸出
float(或double) 類型數據,按照%d格式輸出時,將獲得錯誤的輸出
強制類型轉化
#include <stdio.h> int main(void) { int x = 257 + 100; printf("%d\n", x); x = (char)257 + 100; printf("%d\n", x); return 0; }
一共有15個級別!
不需強制記憶,只須要掌握如下經常使用的優先級:
最高優先級:( )和[ ]
倒數第二低優先級:賦值和複合賦值(=, +=, -= ...)
最低優先級:逗號表達式
! > 算術運算符 > 關係運算符 > && > || > 賦值運算符
x = ! 3 + 4 < 5 && 6 > 7 || 8 > 7;
等效於:
x = ((!3 + 4 < 5) && (6 > 7)) || (8 > 7);
demo1
``
#include <stdio.h>
int main(void) {
int salary;
printf("請輸入你的指望年薪:"); scanf("%d", &salary); if (salary >= 200000) { printf("你須要精通C/C++開發\n"); } printf("OK\n"); return 0;
}
**demo2**
#include <stdio.h>
int main(void) {
char answer[16];
printf("你有房嗎? "); scanf("%s", answer); if (strcmp(answer, "yes") == 0) { printf("OK"); } else { printf("你是一個好人!\n"); } return 0;
}
**demo3**
#include <stdio.h>
int main(void) {
char answer[16];
printf("有房嗎? "); scanf("%s", answer); if (strcmp(answer, "yes") == 0) { printf("有房,不錯\n"); } else if (printf("有車嗎? ") && scanf("%s", answer) && strcmp(answer, "yes")==0) { printf("有車,還行\n"); } else if (printf("有病嗎? ") && scanf("%s", answer) && strcmp(answer, "no")==0) { printf("健康就好!\n"); } else { printf("你是一個好人!\n"); } return 0;
}
流程圖 ![](https://s1.51cto.com/images/blog/201912/18/a3634703907fc6eeb629700c168dcb37.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) ![](https://s1.51cto.com/images/blog/201912/18/3dcc12cf3c78f89037e4e42214ee2c88.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) **項目練習** 1.獨立實現該項目。 2.讓用戶輸入一個成績,而後輸出這個成績的等級。 0-59: 不及格 60-79: 及格 80-89: 良好 90-100: 優秀 其它:非法成績