C语言是一门结构化的程序设计语言,支持三种结构:
*顺序结构
*选择结构:if、switch
*循环结构:for、while、do while
if语句
1.else是和离他最近的if匹配的
2.每个分块最好用花括号括起来,使代码更清晰
3.有时针对一个变量有多种情况时,用switch语句更方便
#include <stdio.h>
int main()
{
int day=0;
switch(day)
{
default://case和default的上下排序不重要,因为switch语句是运行时去匹配,哪个分支成立就走哪个
printf("工作日\n")
break;
case 7://每一个小分块不需要加大括号,但要记得加break
printf("星期日\n")
break;
case 6:
printf("星期六\n")
break;
}
return 0;
}
while语句
1.()中条件为真时一直执行,可以用break永久终止循环;用continue时,只是终止本次循环,即循环体中语句continue以下的不会运行,但下一次循环还能运行
#include <stdio.h>
int main()
{
int ch=0;
while((ch=getchar()!=EOF)
putchar(ch);
return 0;
}//这个代码适当修改可以用来清理缓冲区
#include <stdio.h>
int main()
{
char ch='\0';
while((ch=getchar()!=EOF)
{
if(ch<'0'||ch>'9')
continue;
putchar(ch);
}
return 0;
}
//只打印数字字符,跳过其他字符
for语句
1.for(初始化部分;条件判断部分;调整部分)
这三部分都可以省略
2.建议不在for循环体内修改循环变量,防止for循环失去控制
do while语句
do
{
循环体
}
while(表达式);
//演示多个字符从两端移动,向中间汇聚
#include <stdio.h>
int main()
{
char arr1[] = "welcome to bit...";
char arr2[] = "#################";
int left = 0;
int right = strlen(arr1)-1;
printf("%s\n", arr2);
//while循环实现
while(left<=right)
{
Sleep(1000);//每隔1秒运行下一个语句
arr2[left] = arr1[left];
arr2[right] = arr1[right];
left++;
right--;
printf("%s\n", arr2);
}
//for循环实现
for (left=0, right=strlen(src)-1;
left <= right;
left++, right--)
{
Sleep(1000);
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf( "%s\n", target);
}
retutn 0;
}
//折半查找
#include <stdio.h>
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int left = 0;
int right = sizeof(arr)/sizeof(arr[0])-1;
int key = 7;
int mid = 0;
while(left<=right)
{
mid = (left+right)/2;
if(arr[mid]>key)
{
right = mid-1;
}
else if(arr[mid] < key)
{
left = mid+1;
}
else
break;
}
if(left <= right)
printf("找到了,下标是%d\n", mid);
else
printf("找不到\n");
}
//二分查找函数
int bin_search(int arr[], int left, int right, int key)
{
int mid = 0;
while(left<=right)
{
mid = (left+right)>>1;
if(arr[mid]>key)
{
right = mid-1;
}
else if(arr[mid] < key)
{
left = mid+1;
}
else
return mid;//找到了,返回下标
}
return -1;//找不到
}
go to语句
适用于多重for循环,然后内层循环条件成立需要跳出全部循环时
for(...)
for(...)
{
for(...)
{
if(disaster)
goto error;
}
}
…
error:
if(disaster)
// 处理错误情况
//关机程序
#include <stdio.h>
int main()
{
char input[10] = {0};
system("shutdown -s -t 60");
again:
printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");
scanf("%s", input);
if(0 == strcmp(input, "我是猪"))
{
system("shutdown -a");
}
else
{
goto again;
}
return 0;
}
用循环同样可以实现
#include <stdio.h>
#include <stdlib.h>
int main()
{
char input[10] = {0};
system("shutdown -s -t 60");
while(1)
{
printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");
scanf("%s", input);
if(0 == strcmp(input, "我是猪"))
{
system("shutdown -a");
break;
}
}
return 0;
}