for循環
1.for循環的基礎
for(循環控制變量;運行的條件;控制變量的變化)
for循環中間條件必須要,其他部分可省略,分號不能省略
2. 示例
for(;1<2;)
for(int i = 0;i<10;i++)
3.循環控制變量
<1.>
循環控制變量的定義和初始化只執行一次
<2.>
循環控制變量什么時候變化?
i++ i-- j++ j--
i+=2
當這一次循環結束后在變化/執行
<3.>變量的作用域:
(1.)局部變量 :代碼塊里定義的變量
{
int a;
{int a;
}
}
(2.)全局變量 main函數前定義的變量
(3.)靜態變量
4.結束循環的方式
break跳出整個for循環
continue結束當前這次循環繼續下一次循環
for循環:<1.>輸出1-10之間的整數;
<2.>不斷輸出1-10之間的整數
#include<stdio.h>
/*
for循環
while循環
數組
*/
/*
for(循環控制變量;運行的條件;控制變量的變化)
for循環中間條件必須要,其他部分可省略,分號不能省略
for(;1<2;)
for(int i = 0;i<10;i++)
*/
int main(){
/*
//輸出1-10之間的整數
for(int i = 1;i < = 10;i++)
{
printf("i = %d\n",i);
}
*/
/*
循環控制變量的定義和初始化只執行一次
變量的作用域:
局部變量 :代碼塊里定義的變量
{
int a;
{int a;
}
}
全局變量 main函數前定義的變量
靜態變量
*/
/*循環控制變量什么時候變化?
i++ i-- j++ j--
i+=2
當這一次循環結束后在變化/執行
*/
/*
for(int i = 1;i<=10;) {
printf("i = %d\n",i);
i+=1;
}
int i = 1;
for(;int i = 1;i<=10;) {
printf("i = %d\n",i);
i+=1;
}
*/
//不斷輸出1-10之間的整數
//int i = 1;
/*
for(int i = 1;i<=10;i++)
{
printf("i = %d\n",i);
if(i == 10) {
i = 0;
}
//i++;
}
*/
//break跳出整個for循環
//continue結束當前這次循環繼續下一次循環
for(int i = 1;i<=10;i++)
{
printf("i = %d\n",i);
if(i == 5) {
break;
}
//i++;
}
return 0;
}
程序運行結果
程序運行.PNG
for循環實例運用demo:ATM
#include<stdio.h>
#include<stdlib.h>
int main(){
//ATM終
/*
**********
歡迎使用建設銀行
**********
請輸入密碼:
密碼錯誤請重新輸入:
密碼錯誤次數過多 請聯系工作人員!
3次
請選擇操作
**********
1.存款
請輸入存款金額:8000
存款成功,余額為:8000
是否繼續(y/n)
2.取款
請輸入取款金額:8000
余額不足請重新輸入
取款成功,余額為:8000
是否繼續(y/n)
3.更改密碼
請輸入新密碼:
請確認密碼
設置成功
兩次密碼不一致,請輸入新密碼:
4.查詢余額
5.退出
**********
*/
int old=123;//原始密碼
int input;//用戶輸入密碼
int wrongTime = 3;//錯誤次數
int total=1000;//金額
printf("**********\n");
printf("歡迎使用建設銀行\n");
printf("**********\n");
printf("請輸入密碼:");
for(int i = 1;i<=wrongTime;i++){
scanf("%d",&input);
//判斷密碼
if(input == old){
//密碼正確
break;
}
if(i == wrongTime){
printf("密碼錯誤次數過多 請聯系工作人員!\n");
return 1;//退出整個程序
}
//密碼不正確
printf("密碼錯誤請重新輸入密碼:");
}
printf("密碼正確\n");
//接收用戶是否繼續的輸入
/*
getchar();從終端接收一個字符
注意:當上一次有輸入的情況下,必須要將上一次緩沖區里面的內容清空
scanf("%d");
123\n;
\n
第一種方法
getchar();//拿走\n
getchar();
第二種方法
fflush(stdin);刷新輸入流
*/
int choice;//接受用戶選擇
char goon;//是否繼續
for(;1<2;) { //條件永久成立 ,始終循環
//主界面
printf("**********\n");
printf("請選擇相關操作:\n");
printf("1.存款\n");
printf("2.取款\n");
printf("3.更改密碼\n");
printf("4.查詢余額\n");
printf("5.退出\n");
printf("**********\n");
//提示用戶選擇
printf("請選擇操作:");
scanf("%d",&choice) ;
//判斷操作
switch(choice){
case 1://存款
int temp;
printf("請輸入存款金額:");
scanf("%d",&temp);
total+=temp;//total=total+temp
printf("存款成功!可用余額為:%d\n",total);
break;
case 2://取款
int temp2;
for(;1<2;){
printf("請輸入取款金額:");
scanf("%d",&temp2);
if(temp2>total) {
printf("余額不足");
}else{
total -= temp2;
printf("取款成功 余額為:%d",total);
break;
}
}
break;
case 3://查詢余額
printf("當前余額為:%d\n",total) ;
break;
case 4: //更改密碼
int n1;
int n2;
for(;1<2;){
printf("請輸入新密碼:");
scanf("%d",&n1);
printf("請確認密碼:");
scanf("%d",&n2);
if(n1 == n2){
printf("密碼設置成功!\n");
old = n1;
break;
}else{
printf("兩次輸入不一致!\n");
}
}
break;
default://退出
exit(EXIT_SUCCESS);
//exit(EXIT_FAILURE);
break;
}
//提示是否繼續操作
for(;1<2;){
printf("是否繼續(y/n)");
getchar();
scanf("%c",&goon);
if(goon == 'y'){
break;
}
if(goon == 'n'){
exit(EXIT_SUCCESS);
}
printf("輸入無效 ");
}
}
/*
return ;結束當前這個函數
main(){
1;
2;
3;
}
exit();導入頭文件<stdlib.h>直接退出程序
add(){
return;
}
*/
return 0;
}
/*
main函數:不寫實際代碼 ,邏輯
*/
程序運行結果:捕獲.PNG
switch語句的基礎
1.
switch 可讀性
2.switch基本結構
switch(已經確定值的變量-int-char){
case 10 'c':
break;
case 10 'c':
break;
default:
break;
}
同樣功能if-else if-else if-else
switch語句demo:輸入1-3之間的一個數,系統顯示你輸出的是哪一個數
#include<stdio.h>
int main(){
/*
switch 可讀性
switch(已經確定值的變量-int-char){
case 10 'c':
break;
case 10 'c':
break;
default:
break;
同樣功能if-else if-else if-else
*/
int a=0;
printf("請輸入一個數1-3:");
scanf("%d",&a);
//int char-ASCII bool
switch(a){
case 1:
printf("你輸入的是1\n");
break;
case 2:
printf("你輸入的是2\n") ;
break;
default:
printf("你輸入的是3\n") ;
break;
}
return 0;
}
程序運行結果:switch.PNG
隨機數
1.隨機數的產生
當程序運行起來的時候,系統自動產生一個種子
使用rand()產生隨機數后,重新啟動程序,再次使用rand(),發現種子是一樣的
總結:只要種子一樣產生的隨機數就一樣
如果需要每次重新運行都產生 不一樣的隨機數就需要更改種子
則此時就有
時間: 001 002
運用時間做種子:
srand(time(NULL)) 導入頭文件<stdlib.h> <time.h>
控制時間
1.延時2s
<1.>第一種方式
for(long long i = 0;i<10000000000/14;i++); //顯示時間2s即延時2s
<2.>第二種方式
(1.)
Sleep(2000) ;
#include<windows.h> 用Sleep延時時需用該頭文件
(2.)
windows系統延時或用
#include<windows.h>
int main(){
Sleep(2000);
return 0;
}
2.刷新界面
<1.>
system("cls"); 刷新界面
#include<stdlib.h> 刷新界面需要使用該頭文件
<2.>
mac系統刷新
for(int i=0;i<20;i++){
printf("\n");
}
demo:輸入的內容顯示2s后消失
//控制時間輸入2s后消失
#include<stdio.h>
#include<stdlib.h>//刷新界面需要使用該頭文件
#include<windows.h>//用Sleep延時時需用該頭文件
int main(){
printf("12\n");
//for(long long i = 0;i<10000000000/14;i++);//顯示時間2s即延時2s
Sleep(2000) ;//#include<windows.h>//用Sleep延時時需用該頭文件
system("cls");//刷新界面
return 0;
}
/*
windows系統延時或用
#include<windows.h>
int main(){
Sleep(2000);
return 0;
}
*/
/* mac系統刷新
for(int i=0;i<20;i++){
printf("\n");
}
*/
demo:小游戲,產生不同的隨機數,產生的隨機數顯示2s后消失,玩家輸入所看到的隨機數,輸入正確,游戲繼續,否則游戲結束
#include<stdio.h>
#include<stdlib.h>//使用rand函數需用此頭文件
#include<time.h>//關于時間的頭文件
#include<windows.h>//用Sleep延時時需用該頭文件
int main(){
int count = 3;//記錄每次生成多少個隨機數
while(1){
unsigned int seed = time(NULL);
//設置隨機數的種子
srand(seed) ;
for(int i = 0;i<count;i++){
//生成一個隨機數
int temp = rand() % 9 + 1;//生成0-1之間的數
printf("%d ",temp);
}
printf("\n");
//延時2s
Sleep(2000) ;
//for(int i = 0;i < 10000000000/15*2;i++);
//刷新屏幕
system("cls");//#include<stdlib.h>//刷新界面需要使用該頭文件
/* mac
for(int i=0;i<20;i++){
printf("\n");
}
*/
int temp;
printf("請輸入:");
//重新設種子和之前生成時的種子一樣
srand(seed);
//接受用戶輸入一個一個接收
for(int i = 0;i < count;i++){
scanf("%d",&temp);
//獲取對應生成的隨機數
int old = rand() % 9 + 1;
//比較輸入的和隨機數是否相同
if(temp != old){
printf("錯誤 退出!");
exit(EXIT_SUCCESS);
}
}
printf("正確");
count ++;//第一輪3個數,第二輪4個數,以此類推
}
return 0;
}
程序運行結果:小游戲.PNG
數組
1.數組的基礎 數組:存儲多個同種類型的數據
<1.>數組的定義:必須明確知道數組元素的個數
系統為數組分配內存空間的時候 必須確定
<2.>數組內存
數組名就是數組的首地址
<3.>數組訪問:下標 0 - n-1
#include <stdio.h>
int main(){
//if for while 數組 指針 結構體 動態分配內存
//學生管理系統
/*
基本數據類型:int float double long char
數組:存儲多個同種類型的數據
*/
//1.數組的定義:必須明確知道數組元素的個數
// 系統為數組分配內存空間的時候 必須確定
int a = 10; //4
int array1[4];
int array2[4] = {1,2};
//2.數組內存
//數組名就是數組的首地址
int array[] = {1,2,3,4};
printf("%d\n",array);
printf("%d\n",array+1);
printf("%d\n",&array[0]);
printf("%d\n",&array[1]);
//3.數組訪問:下標 0 - n-1
array[0] = 2;
array[1] = 23;
//4.Demo - 產生4個隨機數 保存到數組 輸出
return 0;
}
<4.>Demo - 產生4個隨機數 保存到數組 輸出
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
//產生四個(不同)隨機數 保存到數組 輸出
int array[4] = {};//最好初始化數組,防止出現數據出現錯誤
srand(time(NULL));//種種子,使每次產生的隨機數不一樣
//生成數組
/*防止生成的隨機數中有重復,解決方法:產生隨機數的同時
去比較是否重復 ,如果重復就重新在產生一個隨機數,如果
不重復就保存
每次i的值正好可以用來判斷已經有幾個了
*/
for(int i = 0;i < 4;i++){
int temp = rand() % 10;//產生0-99之間的數
if(i == 0){
//第一個 直接保存
array[i] = temp;
} else {
//判斷前面是否已經存在了
int j = 0;
for(;j < i;j++){
//比較j對應的值和temp是否相同
if(array[j] == temp){
//重復了
printf("重復了:%d\n",temp);
break;
}
}
//判斷是怎么出來的
if(j == i) {
//將i前面的比較一遍都沒有發現重復的
//保存temp值
array[i] = temp;
}else{
//重復了
i--;//重新回到當前這一次
}
}
}
//輸出
for(int i = 0;i < 4;i++){
printf("%d ",array[i]);
}
return 0;
}
程序運行結果:數組.PNG