#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>//strlen函数
#include <stdlib.h>//Sleep函数头文件stdlib.h
#include <windows.h>//system函数
//练习一:计算n的阶乘n!= 1*2*3*4....*n
//int main()
//{
// int i = 1;
// int n = 0;
// scanf_s("%d", &n);//5
// int temp = 1;
// for (i = 1; i <= n; i++)
// {
// //int temp = 1;
// temp = i * temp;
// }
// printf("%d ", temp);//120
// return 0;
//}
//do while循环
//int main()
//{
// int i = 1;
// int ret = 1;
// int n = 0;
// scanf_s("%d", &n);
// do {
// ret = ret * i;
// i++;
// } while (i<=n);
// printf("%d", ret);
// return 0;
//}
//计算1!+2!+3!+...+10!
//int main()
//{
// int i = 0;
// int j = 0;
// int n = 10;
// int sum = 0;
// for (i = 1; i <= 10; i++)
// {
// int ret = 1;//每次循环第二个for都更新ret的初始值
// for (j = 1; j <= i; j++)
// {
// //int ret = 1;
// ret = ret * j ;
// }
// sum = sum + ret;
// }
// printf("%d", sum);
// return 0;
//}
//优化代码两个for循环
//int main()
//{
// int i = 0;
// int sum = 0;
// int ret = 1;
// int n = 0;
// scanf_s("%d", &n);
// for (i = 1; i <= n; i++)
// {
// ret = ret * i ;
// sum = sum + ret;
// }
// printf("sum = %d\n", sum);
// return 0;
//}
//do while 循环
//int main()
//{
// int i = 0;
// int ret = 1;
// int n = 0;
// scanf_s("%d", &n);
// int sum = 0;
// do {
// ret = 1;
// ret = ret * i;
// sum = sum + ret;
// i++;
// } while (i<=n);
// printf("sum = %d\n", sum);
// return 0;
//}//再思考
/*
int main()
{
int i = 1;
int j = 1;
int n = 0;
int ret = 1;
scanf_s("%d", &n);
int sum = 0;
do
{
ret = 1;
do
{
ret = ret * j;
//sum = sum + ret;
j++;
} while(j<=i);
sum = sum + ret;
i++;
} while (i <= n);
printf("sum = %d\n", sum);
return 0;
}
*/
/*第三题:在一个有序数组中查找具体的某一个数字n,编写int binsearch(int x,int v[],int n);
功能: 在v[0]<=v[1]<=....v[n-1]的数组中查找x*/
//int binsearch(int x, int v[], int n)
//{
// int i = 0;
// for (i = 0; i < n; i++)
// {
// if (v[i] == x)
// {
// return v[i];
// }
// }
//}
//int main()
//{
// //定义一个有序数组
// int v[] = {1,2,3,4,5,6,7,8,9};
// int x = 3;
// printf("请输入一个具体数字在(1-9)之间: ");
// scanf_s("%d", &x);
// int n = sizeof(v) / sizeof(v[0]);//求出数组的个数
// int ret = binsearch(3, v[n], n);
// printf("ret = %d\n", ret);
// return 0;
//}
//二分法查找在一个有序数组中查找一个具体数字,可以减少查找的次数,提高代码的运行效率
//int main()
//{
// 定义一个有序数组
// int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
// int sz = sizeof(arr) / sizeof(arr[0]);//数组的长度
// int left = 0;
// int right = sz-1;
// int k = 7;//要查找的数字
// 循环
// while (left<=right)
// {
// int mid = (left+right) / 2;
// if (k < arr[mid])
// {
// right = mid - 1;
// }
// else if (k > arr[mid])
// {
// left = mid + 1;
//
// }
// else
// {
// printf("找到了,下标是: %d\n", mid);
// break;
// }
// }
// if (left > right)
// {
// printf("找不到下标\n");
// }
// return 0;
//}
//普通找法--不够高效
int main()
{
//定义一个有序数组
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int sz = sizeof(arr) / sizeof(arr[0]);
int i = 0;
int k = 7;//查找的数字
for (i = 0; i <= sz; i++)
{
if (k == arr[i])
{
printf("找到了,下标是:%d\n", i);
}
}
if (k == sz)
{
printf("找不到\n");
}
return 0;
}
/*第四题:编写代码,演示多个字符从两端移动,像中间汇聚*/
//打印样式
//welcome to bit!!!!!!
/*####################
w##################!
we################!!
......
welcome to bit!!!!!!*/
int main()
{
//定义两个数组
char arr1[] = { "welcome to bit!!!!!!" };
char arr2[] = { "####################" };
int left = 0;
//int right = sizeof(arr1) / sizeof(arr1[0]) - 2;//有结束标志\0所以要减2
int right = strlen(arr1)-1;//整个数组的字节长度-1等于下标长度
while (left <= right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n", arr2);
//暂停一秒
Sleep(1000);//函数sleep的单位是毫秒
system("cls");//cls---清空输出
left++;
right--;
}
printf("%s\n",arr2);
return 0;
}
/*第五题:编写代码,模拟用户登录情景,并且只登录三次.
(只允许输入三次密码,如果密码正确则提示登录成功)
如果三次均输入错误,则退出程序
*/
//int main()
//{
// //定义数组为密码
// char arr1[] = { "123456" };
// //定义一个空数组接受用户输入的密码
// char arr2[] = { "234567"};
// int count = 0;//计算登录正确的次数
// int i = 0;//登录次数
// int j = 0;
// int t = 0;
// int length = strlen(arr1) - 1;
// while(i <= 3)
// {
// //循环判断是否相等
// for (j = 0; j <= length;j++ )
// {
// //if (arr1[j] == arr2[j])
// //{
// //
// //}
// //else
// //{
// // break;
// // i++;//失败次数
// //}
// if (arr1[j] == arr2[j])
// {
// continue;
// }
// else
// {
// break;
// i++;//失败次数
// }
// t++;
// if (i == 0)
// {
// printf("密码正确,登录成功\n");
// }
// }
// count++;//登录次数
// if (i == count)
// {
// break;
// }
//
// }
//
// return 0;
//}
//int main()
//{
// int i = 0;
// char password[20] = { 0 };
// for (i = 0; i <= 3; i++)
// {
// printf("请输入密码:>\n");
// scanf("%s", password);
// if (strcmp(password, "123456") == 0)//==不能用来比较两个字符串是否相等,应该使用一个库函数strcmp
// {
// printf("登录成功\n");
// break;
// }
// else
// {
// printf("密码错误\n");
// }
// }
// if (i == 3)
// {
// printf("三次密码均错误,退出程序\n");
// }
// return 0;
//}
复习c语言7-31(循环语句的练习题目)
最新推荐文章于 2024-08-29 16:37:54 发布