一、前言
這篇文章作為C語言基礎(chǔ)知識點(diǎn),介紹C語言常用的幾個(gè)語句的用法、規(guī)則、使用案例。
介紹的語句如下:
if..else 判斷語句
for循環(huán)語句
while循環(huán)語句
do..while循環(huán)語句
switch 語句
goto 語句
return 語句
break 語句
continue 語句
第二章介紹語法使用規(guī)則、使用案例,第三章列出了一些練習(xí)題,用于結(jié)合第二章介紹的語句完成知識點(diǎn)鞏固。
二、知識點(diǎn)與案例代碼
2.1 if語句語法規(guī)則、使用案例
if語句語法:
//形式1
if(<條件表達(dá)式>) //條件為真的時(shí)候執(zhí)行
{
...執(zhí)行的代碼..
}
//形式2
if(<條件表達(dá)式>) //條件為真的時(shí)候執(zhí)行
{
...執(zhí)行的代碼..
}
else //條件為假的時(shí)候執(zhí)行 (else的語句塊可以選擇的,可以寫也可以不寫)
{
}
//形式3
if(<條件表達(dá)式>) //條件為真的時(shí)候執(zhí)行
{
...執(zhí)行的代碼..
}
else if(<條件表達(dá)式>) //條件為假的時(shí)候執(zhí)行 (else的語句塊可以選擇的,可以寫也可以不寫)
{
...執(zhí)行的代碼..
}
else if(<條件表達(dá)式>)
{
...執(zhí)行的代碼..
}
........
<條件表達(dá)式> 里可以寫什么代碼? 寫的語句執(zhí)行完必須返回具體的結(jié)果。
比如:12>34
比如: if(printf("12345"))
使用案例
#include
int main(int argc,char *argv[])
{
int a=100;
int b=20;
int c=30;
if(a>b)
{
printf("a>b\n");
}
if(a>b)printf("a>b\n");
//容易出錯(cuò)的地方
if(a==0) //if(a=0)
{
printf("a>b a>c\n");
}
//容易出錯(cuò)的地方
if(a&&b)//if(a&0)
{
printf("a>b a>c\n");
}
return 0;
}
/*
逗號、分號
逗號:間隔符號。 比如: int a,b,c,d;
! 邏輯非
&& 邏輯與 -- 并且
|| 邏輯或 --或者
& 按位與(3&1)、取地址(&a)
* 乘號(a*b) 、指針(*a)、 *(塊注釋)
*/
#include
int main(int argc,char *argv[])
{
int year;
printf("輸入年份:");
scanf("%d",&year);
//判斷平年和閏年 條件:能被4整除并且不能被100整除 條件2:能被400整除
if((year%4==0 && year%100!=0) || (year%400==0))
{
printf("閏年\n");
}
else
{
printf("平年\n");
}
//判斷平年和閏年 條件:能被4整除并且不能被100整除 條件2:能被400整除
if(year%4==0 && year%100!=0)
{
printf("閏年\n");
}
else if(year%400==0)
{
printf("閏年\n");
}
else
{
printf("平年\n");
}
return 0;
}
2.2 while、do..while語句
//循環(huán)語句
while(<條件表達(dá)式>)
{
...執(zhí)行的代碼..
}
do
{
...執(zhí)行的代碼..
}while(<條件表達(dá)式>);
#include
int main(int argc,char *argv[])
{
int a=5;
int b=5;
//循環(huán)語句 a-- 、a=a-1、a-=1;
while(a--)
{
printf("a=%d\n",a);//4\3\2\1\0
}
//循環(huán)語句
do
{
printf("a=%d\n",b);//\5\4\3\2\1\0
}while(b--);
return 0;
}
2.3 for語句
#include
int main(int argc,char *argv[])
{
int a=0;
//寫法1
for(<初始化語句>;<條件表達(dá)式>;<自增/自減>)
{
}
比如:
for(a=0;a<10;a++)
{
}
//寫法2
for(;<條件表達(dá)式>;<自增/自減>)
{
}
比如:
for(;a<10;a++)
{
}
//寫法3
for(;;) //條件永遠(yuǎn)為真
{
}
等價(jià)于
while(1)//條件永遠(yuǎn)為真
{
}
return 0;
}
#include
int main(int argc,char *argv[])
{
//打印99乘法口訣表
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{
printf("%dx%d=%2d ",i,j,i*j);
}
printf("\n");
}
return 0;
}
/*
1x1=1
2x1=1 2x2=4....
3x1=1 3x2=6 3x3=9 .....
................
*/
2.4 break語句
作用: 跳出當(dāng)前的一層循環(huán),或者跳出switch語句。
#include
int main(int argc,char *argv[])
{
int i,j,cnt=1;
for(i=0;i<5;i++)
{
for(j=0;j<10;j++)
{
if(j==5)
{
break; //跳出當(dāng)前一層循環(huán)
}
printf("cnt=%d\n",cnt++); //25
}
}
return 0;
}
2.5 goto跳轉(zhuǎn)語句
可以在函數(shù)內(nèi)設(shè)置標(biāo)簽,任意跳轉(zhuǎn)。
#include
int main(int argc,char *argv[])
{
int i,j,cnt=1;
for(i=0;i<5;i++)
{
for(j=0;j<10;j++)
{
if(j==5)
{
goto AA; //跳轉(zhuǎn)語句
}
printf("cnt=%d\n",cnt++); //5
}
}
AA:
printf("程序執(zhí)行完畢.\n");
return 0;
}
2.6 continue語句
跳出本次循環(huán),繼續(xù)執(zhí)行下一次新的循環(huán)。
#include
int main(int argc,char *argv[])
{
int i,j,cnt=1;
for(i=0;i<5;i++)
{
for(j=0;j<10;j++)
{
if(j==5)
{
continue; //跳出當(dāng)前一次循環(huán)
}
printf("cnt=%d\n",cnt++); //
}
}
return 0;
}
2.7 switch 分支語句(C89標(biāo)準(zhǔn)和C99標(biāo)準(zhǔn))
#include
int main(int argc,char *argv[])
{
int a;
scanf("%d",&a);
switch(a)
{
case 1:
printf("選擇1.\n");
break;
case 2:
printf("選擇2.\n");
break;
case 3:
printf("選擇3.\n");
break;
case 4:
case 5:
case 6:
printf("選擇4,5,6\n");
break;
default:
printf("選擇默認(rèn)值.\n");
break;
}
return 0;
}
三、練習(xí)題
3.1 輸入整數(shù),然后使用二進(jìn)制方式輸出(數(shù)據(jù)傳輸)
0x23; ---8次 00100011
#include
int main()
{
unsigned int a,i;
int flag=0;
printf("輸入整數(shù):");
scanf("%d",&a);
for(i=0;i<32;i++)
{
//if(a&0x1) //從低位開始判斷
//if(a&0x80000000) //從高位開始判斷
if(a&(1<<31)) //從高位開始判斷
{
flag=1;
printf("%d",1);
}
else
{
if(flag)
{
printf("%d",0);
}
}
a<<=1; //把a(bǔ)的左邊移動 (高位溢出、低位補(bǔ)0)
}
printf("\n");
return 0;
}
3.2 打印所有水仙花數(shù)。
所謂水仙花是指一個(gè)三位數(shù),其各位數(shù)字的立方和等于該數(shù)
#include
int main()
{
int i;
int a, b, c;
for (i = 100; i <= 999; i++)
{
a = i / 100;
b = i % 100 / 10;
c = i % 10 / 1;
if ((a*a*a + b*b*b + c*c*c) == i)
{
printf("%d ", i);
}
}
return 0;
}
3.3 百元買百雞
公雞每只 5 元,母雞每只 3 元,小雞 3 只一元,問一百元買一百只雞有幾種買法。
#include
int main()
{
int m, g, x;
int m_max;
int g_max;
int x_max;
int q, cnt; //cnt=數(shù)量 q:錢
printf("公雞每只 5 元,母雞每只 3 元,小雞 3 只一元\n");
printf("請輸入要買雞的數(shù)量:\n");
scanf("%d", &cnt);// 100 100
printf("請輸入要買雞的錢:\n");
scanf("%d", &q);// 100 100
/*1. 判斷輸入的數(shù)據(jù)是否合理*/
if (q>0 && cnt>0)
{
m_max = cnt / 3; // 母雞 100 /3 =33
g_max = cnt / 5; // 公雞 100 /5 =20
x_max = (cnt / 1) * 3; // 小雞 100 /1*3 =300
for (g = 0; g;>
3.4 打印正三角形
#include
/*
1
121
12321
1234321
*/
int main()
{
int i, j;
int len;
scanf("%d", &len);
for (i = 1; i <= len; i++) //總行數(shù)
{
/*1. 打印空格*/
for (j = 1; j <= len - i; j++)
{
printf(" ");
}
/*2. 打印前面一半*/
for (j = 1; j <= i; j++)
{
printf("%d", j);
}
/*3. 打印后面一半*/
for (j = i - 1; j >= 1; j--)
{
printf("%d", j);
}
printf("\n");
}
return 0;
}
3.5 打印倒三角形
#include
int main()
{
int i, j;
int len;
scanf("%d", &len);
for (i = len; i >= 1; i--) //循環(huán)的總次數(shù)
{
/*1. 打印空格*/
for (j = len; j>i; j--)
{
printf(" ");
}
/*2. 打印前面部分*/
for (j = 1; j <= i; j++)
{
printf("%d", j);
}
/*3. 打印后半部分*/
for (j = i - 1; j >= 1; j--)
{
printf("%d", j);
}
printf("\n");
}
return 0;
}
審核編輯:湯梓紅
-
C語言
+關(guān)注
關(guān)注
180文章
7604瀏覽量
136680 -
代碼
+關(guān)注
關(guān)注
30文章
4779瀏覽量
68519
發(fā)布評論請先 登錄
相關(guān)推薦
評論