for循環(huán)
1.for循環(huán)的基礎(chǔ)
for(循環(huán)控制變量;運行的條件抓谴;控制變量的變化)
for循環(huán)中間條件必須要暮蹂,其他部分可省略,分號不能省略
2. 示例
for(;1<2;)
for(int i = 0;i<10;i++)
3.循環(huán)控制變量
<1.>
循環(huán)控制變量的定義和初始化只執(zhí)行一次
<2.>
循環(huán)控制變量什么時候變化癌压?
i++ i-- j++ j--
i+=2
當(dāng)這一次循環(huán)結(jié)束后在變化/執(zhí)行
<3.>變量的作用域:
(1.)局部變量 :代碼塊里定義的變量
{
int a;
{int a;
}
}
(2.)全局變量 main函數(shù)前定義的變量
(3.)靜態(tài)變量
4.結(jié)束循環(huán)的方式
break跳出整個for循環(huán)
continue結(jié)束當(dāng)前這次循環(huán)繼續(xù)下一次循環(huán)
for循環(huán):<1.>輸出1-10之間的整數(shù)仰泻;
<2.>不斷輸出1-10之間的整數(shù)
#include<stdio.h>
/*
for循環(huán)
while循環(huán)
數(shù)組
*/
/*
for(循環(huán)控制變量;運行的條件滩届;控制變量的變化)
for循環(huán)中間條件必須要集侯,其他部分可省略被啼,分號不能省略
for(;1<2;)
for(int i = 0;i<10;i++)
*/
int main(){
/*
//輸出1-10之間的整數(shù)
for(int i = 1;i < = 10;i++)
{
printf("i = %d\n",i);
}
*/
/*
循環(huán)控制變量的定義和初始化只執(zhí)行一次
變量的作用域:
局部變量 :代碼塊里定義的變量
{
int a;
{int a;
}
}
全局變量 main函數(shù)前定義的變量
靜態(tài)變量
*/
/*循環(huán)控制變量什么時候變化?
i++ i-- j++ j--
i+=2
當(dāng)這一次循環(huán)結(jié)束后在變化/執(zhí)行
*/
/*
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之間的整數(shù)
//int i = 1;
/*
for(int i = 1;i<=10;i++)
{
printf("i = %d\n",i);
if(i == 10) {
i = 0;
}
//i++;
}
*/
//break跳出整個for循環(huán)
//continue結(jié)束當(dāng)前這次循環(huán)繼續(xù)下一次循環(huán)
for(int i = 1;i<=10;i++)
{
printf("i = %d\n",i);
if(i == 5) {
break;
}
//i++;
}
return 0;
}
程序運行結(jié)果
for循環(huán)實例運用demo:ATM
#include<stdio.h>
#include<stdlib.h>
int main(){
//ATM終
/*
**********
歡迎使用建設(shè)銀行
**********
請輸入密碼:
密碼錯誤請重新輸入:
密碼錯誤次數(shù)過多 請聯(lián)系工作人員棠枉!
3次
請選擇操作
**********
1.存款
請輸入存款金額:8000
存款成功浓体,余額為:8000
是否繼續(xù)(y/n)
2.取款
請輸入取款金額:8000
余額不足請重新輸入
取款成功,余額為:8000
是否繼續(xù)(y/n)
3.更改密碼
請輸入新密碼:
請確認(rèn)密碼
設(shè)置成功
兩次密碼不一致辈讶,請輸入新密碼:
4.查詢余額
5.退出
**********
*/
int old=123;//原始密碼
int input;//用戶輸入密碼
int wrongTime = 3;//錯誤次數(shù)
int total=1000;//金額
printf("**********\n");
printf("歡迎使用建設(shè)銀行\(zhòng)n");
printf("**********\n");
printf("請輸入密碼:");
for(int i = 1;i<=wrongTime;i++){
scanf("%d",&input);
//判斷密碼
if(input == old){
//密碼正確
break;
}
if(i == wrongTime){
printf("密碼錯誤次數(shù)過多 請聯(lián)系工作人員命浴!\n");
return 1;//退出整個程序
}
//密碼不正確
printf("密碼錯誤請重新輸入密碼:");
}
printf("密碼正確\n");
//接收用戶是否繼續(xù)的輸入
/*
getchar();從終端接收一個字符
注意:當(dāng)上一次有輸入的情況下,必須要將上一次緩沖區(qū)里面的內(nèi)容清空
scanf("%d");
123\n;
\n
第一種方法
getchar();//拿走\n
getchar();
第二種方法
fflush(stdin);刷新輸入流
*/
int choice;//接受用戶選擇
char goon;//是否繼續(xù)
for(;1<2;) { //條件永久成立 贱除,始終循環(huán)
//主界面
printf("**********\n");
printf("請選擇相關(guān)操作:\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āng)前余額為:%d\n",total) ;
break;
case 4: //更改密碼
int n1;
int n2;
for(;1<2;){
printf("請輸入新密碼:");
scanf("%d",&n1);
printf("請確認(rèn)密碼:");
scanf("%d",&n2);
if(n1 == n2){
printf("密碼設(shè)置成功!\n");
old = n1;
break;
}else{
printf("兩次輸入不一致!\n");
}
}
break;
default://退出
exit(EXIT_SUCCESS);
//exit(EXIT_FAILURE);
break;
}
//提示是否繼續(xù)操作
for(;1<2;){
printf("是否繼續(xù)(y/n)");
getchar();
scanf("%c",&goon);
if(goon == 'y'){
break;
}
if(goon == 'n'){
exit(EXIT_SUCCESS);
}
printf("輸入無效 ");
}
}
/*
return ;結(jié)束當(dāng)前這個函數(shù)
main(){
1;
2;
3;
}
exit();導(dǎo)入頭文件<stdlib.h>直接退出程序
add(){
return;
}
*/
return 0;
}
/*
main函數(shù):不寫實際代碼 ,邏輯
*/
程序運行結(jié)果:switch語句的基礎(chǔ)
1.
switch 可讀性
2.switch基本結(jié)構(gòu)
switch(已經(jīng)確定值的變量-int-char){
case 10 'c':
break;
case 10 'c':
break;
default:
break;
}
同樣功能if-else if-else if-else
switch語句demo:輸入1-3之間的一個數(shù)月幌,系統(tǒng)顯示你輸出的是哪一個數(shù)
#include<stdio.h>
int main(){
/*
switch 可讀性
switch(已經(jīng)確定值的變量-int-char){
case 10 'c':
break;
case 10 'c':
break;
default:
break;
同樣功能if-else if-else if-else
*/
int a=0;
printf("請輸入一個數(shù)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;
}
程序運行結(jié)果:隨機數(shù)
1.隨機數(shù)的產(chǎn)生
當(dāng)程序運行起來的時候碍讯,系統(tǒng)自動產(chǎn)生一個種子
使用rand()產(chǎn)生隨機數(shù)后,重新啟動程序扯躺,再次使用rand()捉兴,發(fā)現(xiàn)種子是一樣的
總結(jié):只要種子一樣產(chǎn)生的隨機數(shù)就一樣
如果需要每次重新運行都產(chǎn)生 不一樣的隨機數(shù)就需要更改種子
則此時就有
時間: 001 002
運用時間做種子:
srand(time(NULL)) 導(dǎo)入頭文件<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系統(tǒng)延時或用
#include<windows.h>
int main(){
Sleep(2000);
return 0;
}
2.刷新界面
<1.>
system("cls"); 刷新界面
#include<stdlib.h> 刷新界面需要使用該頭文件
<2.>
mac系統(tǒng)刷新
for(int i=0;i<20;i++){
printf("\n");
}
demo:輸入的內(nèi)容顯示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系統(tǒng)延時或用
#include<windows.h>
int main(){
Sleep(2000);
return 0;
}
*/
/* mac系統(tǒng)刷新
for(int i=0;i<20;i++){
printf("\n");
}
*/
demo:小游戲,產(chǎn)生不同的隨機數(shù)录语,產(chǎn)生的隨機數(shù)顯示2s后消失倍啥,玩家輸入所看到的隨機數(shù),輸入正確澎埠,游戲繼續(xù)逗栽,否則游戲結(jié)束
#include<stdio.h>
#include<stdlib.h>//使用rand函數(shù)需用此頭文件
#include<time.h>//關(guān)于時間的頭文件
#include<windows.h>//用Sleep延時時需用該頭文件
int main(){
int count = 3;//記錄每次生成多少個隨機數(shù)
while(1){
unsigned int seed = time(NULL);
//設(shè)置隨機數(shù)的種子
srand(seed) ;
for(int i = 0;i<count;i++){
//生成一個隨機數(shù)
int temp = rand() % 9 + 1;//生成0-1之間的數(shù)
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("請輸入:");
//重新設(shè)種子和之前生成時的種子一樣
srand(seed);
//接受用戶輸入一個一個接收
for(int i = 0;i < count;i++){
scanf("%d",&temp);
//獲取對應(yīng)生成的隨機數(shù)
int old = rand() % 9 + 1;
//比較輸入的和隨機數(shù)是否相同
if(temp != old){
printf("錯誤 退出!");
exit(EXIT_SUCCESS);
}
}
printf("正確");
count ++;//第一輪3個數(shù)失暂,第二輪4個數(shù)彼宠,以此類推
}
return 0;
}
程序運行結(jié)果:數(shù)組
1.數(shù)組的基礎(chǔ) 數(shù)組:存儲多個同種類型的數(shù)據(jù)
<1.>數(shù)組的定義:必須明確知道數(shù)組元素的個數(shù)
系統(tǒng)為數(shù)組分配內(nèi)存空間的時候 必須確定
<2.>數(shù)組內(nèi)存
數(shù)組名就是數(shù)組的首地址
<3.>數(shù)組訪問:下標(biāo) 0 - n-1
#include <stdio.h>
int main(){
//if for while 數(shù)組 指針 結(jié)構(gòu)體 動態(tài)分配內(nèi)存
//學(xué)生管理系統(tǒng)
/*
基本數(shù)據(jù)類型:int float double long char
數(shù)組:存儲多個同種類型的數(shù)據(jù)
*/
//1.數(shù)組的定義:必須明確知道數(shù)組元素的個數(shù)
// 系統(tǒng)為數(shù)組分配內(nèi)存空間的時候 必須確定
int a = 10; //4
int array1[4];
int array2[4] = {1,2};
//2.數(shù)組內(nèi)存
//數(shù)組名就是數(shù)組的首地址
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.數(shù)組訪問:下標(biāo) 0 - n-1
array[0] = 2;
array[1] = 23;
//4.Demo - 產(chǎn)生4個隨機數(shù) 保存到數(shù)組 輸出
return 0;
}
<4.>Demo - 產(chǎn)生4個隨機數(shù) 保存到數(shù)組 輸出
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
//產(chǎn)生四個(不同)隨機數(shù) 保存到數(shù)組 輸出
int array[4] = {};//最好初始化數(shù)組,防止出現(xiàn)數(shù)據(jù)出現(xiàn)錯誤
srand(time(NULL));//種種子弟塞,使每次產(chǎn)生的隨機數(shù)不一樣
//生成數(shù)組
/*防止生成的隨機數(shù)中有重復(fù)凭峡,解決方法:產(chǎn)生隨機數(shù)的同時
去比較是否重復(fù) ,如果重復(fù)就重新在產(chǎn)生一個隨機數(shù)决记,如果
不重復(fù)就保存
每次i的值正好可以用來判斷已經(jīng)有幾個了
*/
for(int i = 0;i < 4;i++){
int temp = rand() % 10;//產(chǎn)生0-99之間的數(shù)
if(i == 0){
//第一個 直接保存
array[i] = temp;
} else {
//判斷前面是否已經(jīng)存在了
int j = 0;
for(;j < i;j++){
//比較j對應(yīng)的值和temp是否相同
if(array[j] == temp){
//重復(fù)了
printf("重復(fù)了:%d\n",temp);
break;
}
}
//判斷是怎么出來的
if(j == i) {
//將i前面的比較一遍都沒有發(fā)現(xiàn)重復(fù)的
//保存temp值
array[i] = temp;
}else{
//重復(fù)了
i--;//重新回到當(dāng)前這一次
}
}
}
//輸出
for(int i = 0;i < 4;i++){
printf("%d ",array[i]);
}
return 0;
}
程序運行結(jié)果: