do...while循环
do
循环语句;
while(表达式);
(先执行在判断,至少执行一次,和while一样,想要执行多条语句需要用{}引起来)
代码如下:
int main()
{
int n = 0;
scanf("%d", &n);
int i = 0;
int ret = 1;
for (i = 1; i <= n; i++)
{ret = ret * i;}
printf("%d\n", ret);
return 0;
}
2.计算1-10的阶乘
在上面代码的基础上限值循环次数为十次,并且每次结果相加即可
int main()
{
int n=0;
int i=0;,
int ret=1;
int sum=0;
for(i= 1;i<=10;i++)
{ ret*=i;
sum=sum+ret;
}
printf("%d\n", ret);
return 0;
}
3.有序数组查找某个数
我们使用二分查找法,先找出中间元素,进行对比,调整范围, 依次进行查找缩小范围找到。
#include
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int l = (sizeof(arr) / sizeof(arr[0]));
int left = 0;
int right = l - 1;
int j = 9;
while (left<=right)
{
int k=(left + right) / 2;
if (arr[k] j) // 可以用 int k=left+(right-left)/2即可
{
right = right - 1;
}
else
{
printf("找到了,为%d\n",k);
break;
}
if (left > right)
printf("找不到\n");
}
4.制作效果多个字符从两端移动,向中间汇聚:
#include
#include //使用system("cls") 引用 的头文件
#include
int main()
{
char arr1[]="welcome to bit!!!!"
char arr2[]="*******************"
int left=0;
int right=strlen(arr1)-1;
{
while(left<=right)
arr2[left]=arr1[left];
arr2[right]=arr1[right];
printf("%s",arr2);
Sleep(1000); //Sleep是一个控制时间的快慢 windows下单位是毫秒
left++;
right--;
system("cls") //cls是清屏 system是windows命令
}
printf("%s\n",arr2);
return 0;
}
5.编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正则提示登录成,如果三次均输入错误,则退出程序。
这里用到字符串比较函数来比较输入内容是否和密码相同
#include
int main()
{
int password[20]=0;
int i=0;
for(i=0;i<3;i++)
{
printf("请输入密码\n");
scanf("%s",&password);
if(strcmp(password,"qwer")==0);
{
printf("密码正确\n");
break;
}
else
{
printf("密码错误\n");
}
}
if(i==3)
{
printf("三次密码输入错误,退出\n");
}
retutn 0;
}
6.猜数字小游戏
#include
#include
#include
void menu()
{
printf("******************************\n"); //游戏开始菜单
printf("*********1.进入游戏***********\n");
printf("*********0.退出游戏***********\n");
printf("******************************\n");
printf("******************************\n");
}
void game()
{
int guss = 0;
int rad = rand() % 100 + 1; //rand函数可以生成随机数 //返回一0~RAND_MAX(32767)
while (1)
{
printf("请猜数");
scanf("%d", &guss);
if (guss < rad)
{
printf("猜小了\n");
}
else if (guss>rad)
{
printf("猜大了\n");
}
else
{
printf("恭喜你猜对了\n");
break;
}
}
}
int main()
{ int num = 0;
srand((unsigned int)time(NULL)); //初始化随机数
do
{
menu();
printf("请选择\n");
scanf("%d", &num);
switch (num)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("输入错误\n");
break;
}
} while (num);
return 0;
}
主要进行循环语句的训练,包含二分查找法,简单的猜数字小游戏,以及生产随机数的使用