C语言学习笔记:switch语句、循环语句--while、for、getchar,eof概念(推荐MSDN查询函数概念等)
Switch語句:常用于多分支的情況
switch (整型表達式)
{
??? 語句項;
}
其中,語句項是一些case語句,case可以放多個語句項:
case 整型常量表達式:
???? 語句;
switch后面的表達式結果是幾,就會從哪里輸出,比如以上例子輸入2,星期一的結果就有可能不輸出。即day是幾,就會從幾開始輸出。
在switch語句中,我們沒法直接實現分支,搭配break使用才能實現真正的分支。
如果想輸入幾,就只打印幾,添加break。修改代碼結果如下:
int main()
{
??? int day = 0;
??? scanf_s("%d", &day);
??? switch (day)
??? {
??? case 1:
???????? printf("星期一\n");
???????? break;
??? case 2:
???????? printf("星期二\n");
???????? break;
??? case 3:
???????? printf("星期三\n");
???????? break;
??? case 4:
???????? printf("星期四\n");
???????? break;
??? }
??? return 0;
}
補充:要寫1-5為工作日,6-7為休息日
int main()
{
??? int day = 0;
??? scanf_s("%d", &day);
??? switch (day)
??? {
??? case 1:
??? case 2:
??? case 3:
??? case 4:
??? case 5:
???????? printf("工作日\n");
???????? break;
??? case 6:
??? case 7:
???????? printf("休息日\n");
???????? break;
??? }
??? return 0;
}
想要添加一個輸入錯誤的提示,應添加一個default子句,(為了節省位置將部分case語句刪除)如下:
int main()
{
??? int day = 0;
??? scanf_s("%d", &day);
??? switch (day)
??? {
??? case 1:
??? case 5:
???????? printf("工作日\n");
???????? break;
??? case 6:
??? case 7:
???????? printf("休息日\n");
???????? break;
??? default:
???????? printf("error\n");
???????? break;
??? }
??? return 0;
}
default寫在任何一個case標簽可以出現的位置(但大部分默認寫在結尾)。當switch表達式的值并不匹配所有case標簽的值時,這個default子句后面的語句就會執行。所以,每個switch語句中只能出現一條default子句。但它可以出現在語句列表的任何位置。
循環語句:
分3種:
while
do while
for
while循環:
while (表達式)
??? 循環語句;
其中,表達式結果如果為真(即非0),循環語句就會執行,否則循環停止。
例子:打印1-10的數字
int main()
{
??? int i = 1;
??? while (i <= 10)
??? {
???????? printf("%d ", i);
???????? i++;
??? }
}
關于while語句中break、continue,例子如下:
例子1:
int main()
{
??? int i = 1;
??? while (i <= 10)
??? {
???????? if (i == 5)
???????????? break;?????????????? //在while循環語句中,break用于永久的終止循環
???????? printf("%d ", i);
???????? i++;
??? }
}
//在while循環中,continue的作用是跳過本次循環continue后邊的代碼。直接去判斷部分,看是否進行下一次循環
int main()
{
??? int i = 1;
??? while (i <= 10)
??? {
???????? if (i == 5)
???????????? continue;??????????????
???????? printf("%d ", i);
???????? i++;
??? }
}
以上continue就是陷入死循環的例子。
getchar: Read a character from a stream(getc,getwc), or get a character from stdin(getchar,getechar).
*stdin:標準輸入(鍵盤)
Return value返回值:Each of these functions returns the character read. To indicate an read error or end-of-file condition, getc and getchar return EOF, and getwc and getwchar return WEOF. For getc and getchar, use ferror or feof to check for error or for end of file.
EOF: end of file(文件結束標志)
例子:
int main()
{
??? int ch = 0;
??? while ((ch = getchar()) != EOF)?????? //"!="是不等于的意思
??? {
???????? putchar(ch);
??? }
??? return 0;
}
//ctrl+z --getchar就讀取結束
例子:
int main()
{
??? char password[20] = { 0 };
??? printf("input your password, please.");
??? scanf_s("%s ", password);???? //這里的password前面不加&取地址符是因為password是字符數組本來就是地址
??? printf("confirm your password, (Y/N)");
??? int ch = getchar();
??? if (ch == 'Y')
??? {
???????? printf("success\n");
??? }
??? else
??? {
???????? printf("failure\n");
??? }
??? return 0;
}
例子修改:
int main()
{
??? char password[20] = { 0 };
??? printf("input your password, please.");
??? scanf_s("%s", password);???? //這里的password前面不加&取地址符是因為password是字符數組本來就是地址
??? printf("confirm your password(Y/N)");
??? // getchar;???????? //清理緩沖區的一條字符;處理\n
??? //清理緩沖區中的多個字符
??? int tmp = 0;
??? while ((tmp = getchar()) != '\n')
??? {
???????? ;
??? }
??? int ch = getchar();
??? if (ch == 'Y')
??? {
???????? printf("success\n");
??? }
??? else
??? {
???????? printf("failure\n");
??? }
??? return 0;
}
例子2:
#include<stdio.h>
int main()
{
??? int ch = 0;
??? while ((ch = getchar()) != EOF)
??? {
???????? if (ch < '0' || ch>'9')
???????????? continue;
???????? putchar(ch);
??? }
??? return 0;
}
int main()
{
??? int i = 1;??????? //初始化
??? while (i <= 10)???????? //判斷部分
??? {
???????? printf("%d ", i);
???????? i++;???????????? //調整部分
??? }
??? return 0;
}
for循環:
語法:
for(表達式1;表達式2;表達式3)
循環語句;
表達式1就是初始化部分,用于初始化循環變量。表達式2為條件判斷部分,用于判斷循環時候終止。表達式3為調整部分,用于循環條件的調整。
int main()
{
??? int i = 0;
??? for (i = 1; i <= 10; i++)
??? {
???????? printf("%d ", i);
??? }
??? return 0;
}
ps:不要在for循環體內修改循環變量,防止for循環失去控制。
建議for語句的循環控制變量的取值采用“前閉后開區間”寫法。
例子:
int main()
{
??? int arr[10] = { 0 };
??? int i = 0;
??? for (i = 0; i < 10; i++)????? //建議左邊閉區間,右邊開區間的做法。而i=0;i<=9;這種就是兩邊都是閉區間的
??? {
???????? printf("%d ", arr[i]);
??? }
??? return 0;
}
//for的初始化部分、判斷部分、調整部分都可以省略
//但注意:判斷部分的省略--判斷部分就會恒為真
int main()
{
??? int i = 0;
??? int j = 0;
??? for (i = 0; i < 3; i++)
??? {
???????? for (j = 0; j < 3; j++)
???????? {
???????????? printf("123\n");
???????? }
??? }
??? return 0;
}
以上會打印9個“123”.如果去掉i=0、j=0,會打印幾個?
for循環的變種1:
int main()
{
??? int i = 0;
??? int j = 0;
??? for (; i < 3; i++)
??? {
???????? for (; j < 3; j++)
???????? {
???????????? printf("123\n");
???????? }
??? }
??? return 0;
}
會打印3個“123”
for循環的變種2:
int main()
{
??? int x, y;
??? for (x = 0, y = 0; x < 2 && y < 5; ++x, y++)
??? {
???????? printf("123\n");
??? }
??? return 0;
}
總結
以上是生活随笔為你收集整理的C语言学习笔记:switch语句、循环语句--while、for、getchar,eof概念(推荐MSDN查询函数概念等)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows系统C语言代码一览
- 下一篇: 前端屏幕尺寸和分辨率_屏幕尺寸、分辨率、