1.打印九九乘法表
int main()
{
int i, n;
for (n = 1; n <= 9; n++)
{
for (i = 1; i <= n; i++)
{
printf("%d*%d=%d\t", n, i, n * i);//for循环的嵌套 \t 表示空格的意思
}
printf("\n");
}
return 0;
}
2.查找
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 17;
//写一个代码,在arr数组(有序的)中找到7
int sz = sizeof(arr) / sizeof(arr[0]);
int i = 0;
for (i = 0; i <sz; i++)
{
if (k == arr[i])
{
printf("找到了,下标是%d", i);
break;
}
}
if (i == sz)
printf("找不到\n");
return 0;
}
优化:二分查找
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k =0;
scanf("%d", &k);
int sz = sizeof(arr) / sizeof(arr[0]);
int left = 0;
int right = sz - 1;
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", mid);
break;//循环要停下来
}
}
if(left>right)
printf("找不到\n");
return 0;
}
3.编写代码,演示多个字符从两端移动,向中间汇聚
int main()
{
char arr1[] = "welcome to bit!!!!!!";
char arr2[] = "####################";
int left = 0;
//int right = sizeof(arr1) / sizeof(arr2[0]) - 2;//不能这么写 err 后面要减2 因为还有一个转义符 '\n' 字符串有结束标志
//整型数组无需考虑'\0'的问题,但字符串或字符数组要考虑'\0'
int right = strlen(arr1)-1;//strlen是库函数,计算字符串长度
while (left <= right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n", arr2);
//休息一秒 要用#include <windows.h>
Sleep(1000);//1000毫秒 一秒
system("cls");//执行系统命令的一个函数-cls-清空屏幕 要用#include <stdlib.h>
left++;
right--;
}
printf("%s\n", arr2);
return 0;
}
5.编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登录成功,如果三次均输入错误,则退出程序。(关键是strcmp函数)
int main()
{
int i = 0;
char password[20] = {0};
for (i = 0; i < 3; i++)
{
printf("请输入密码:");
scanf("%s", password);
//if (password == "123456")// == 不能用来比较两个字符串是否相等,应该使用一个库函数 -strcmp;
//strcmp函数规定左边大于右边返回正数,左边等于右边返回0,左边小于右边返回负数 库函数头文件依然是<string.h>
if (strcmp(password, "123456") == 0)
{
printf("登录成功!\n");
break;
}
else
{
printf("登录失败\n");
}
}
if (i == 3)
{
printf("三次密码都错误,登录失败");
}
return 0;
}