while循环
while循环中的break
与continu
的区别:
break
必须要在循环的内部(除了swicth语句以外),并且会结束当前循环语句的所有循环。
contine
结束本趟循环
有关while循环的例子:
例1、求1-10的和;求1-10之间偶数的和;求1-10之间奇数的和
#include<stdio.h>
int main(){
int sum = 0; int sumEve = 0; int sumOdd = 0;
//求1-10的和
int i =i;
while(i <= 10)
{
sum += i;
i++;
}
printf("%d\n", sum);
//求偶数和
i = 2;
while(i <= 10)
{
sumEve += i;
i += 2;
}
printf("sumEve=%d\n", sumEve);
//求奇数和
i = 1;
while(i <= 10)
{
sumOdd += i;
i += 2;
}
printf("sumEve=%d\n", sumOdd);
return 0;
}
例2、找到1-100之间既能被3整除,也能被5整除的数字
#include<stdio.h>
int i = 0;
while(i <= 99)
{
i++;
if(i % 15 != 0)
{
continue;
}
printf("%d\n",i);
}
例3、编写一个密码验证程序,最多输入3次:
#include<stdio.h>
#include<windows.h>
int main()
{
int count = 3;
char pass[10];
while (count != 0)
{
printf("请输入你的密码:\n");
scanf_s("%s",pass);//"123"
if ( strcmp(pass, "1234") == 0 )
{
printf("%s\n","密码相同");
}
count--;
printf("你还有 %d 次机会\n",count);
}
}
例4:使用二分查找法,找到数组中与key值相等的值
#include<stdio.h>
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9};
int key = 8;
int len = sizeof(arr) / sizeof(arr[0]);
int left = 0;
int right = len - 1;
while (left <= right)
{
int mid = (left + right) / 2;
if (arr[mid] < key)
{
left = mid + 1;
}
else if (arr[mid] > key)
{
right = mid - 1;
}
else
{
printf("%d\n", mid);
break;
}
}
if (left <= right)
{
printf("找到了!\n");
}
else
{
printf("没找到!\n");
}
}
例5:将数组1的数字按照从两端向中间移动的方法依次赋给数组2。
int main()
{
char arr1[] = "abcdefg";
char arr2[] = "*******";
int len= sizeof(arr1) / sizeof(arr1[0]);
int len = strlen(arr1);
int lef = 0;
int right = len - 1; //字符串最右边含有'\0',需要减掉
printf("%s\n", arr1);
while(left <= right)
{
Sleep(1000); //暂停1000ms后向下执行
arr2[left] = arr1[letf];
arr2[rigth] = arr1[[right];
left++;
right--;
printf("%s\n", arr2);
}
}
go to 语句
举一个go to语句的例子,go to语句会直接跳转到标记处,编程中尽可能不要使用。
int main()
{
int a = 10;
nb:
if (a == 10)
{
printf("hehe\n");
}
goto nb;