练习一
计算 n 的阶乘
#include <stdio.h>
int main()
{
int n, i;
int sum = 1;
scanf("%d", &n);
for ( i = 1; i <= n; i++)
{
sum = sum * i;
}
printf("%d\n", sum);
return 0;
}
打印结果:
练习二
计算 1!+2!+3!+......+10!
#include <stido.h>
int main()
{
int n = 0;
int ret = 1;
int sum = 0;
scanf("%d",&n);
for( int i = 1; i <= n; i++)
{
ret *= i;
sum += ret;
}
printf("%d\n",sum);
return 0;
}
打印结果:
练习三
找出有序数组中的某一个数
#include <stdio.h>
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 7;
//要查找的数字 -在arr这个有序的数组中查找 k(7) 的值
int sz = sizeof(arr) / sizeof(arr[0]);//数组的元素个数
//数组的长度=数组所占的大小 / 单个数组元素所占的大小
int left = 0;
int right = sz - 1;
while (left <= right)
{
int mid = (left + right) / 2;
if (arr[mid] < k)
{
left = mid + 1;
}
else if (arr[mid] > k)
{
right = mid - 1;
}
else
{
printf("找到了:%d\n", mid);
break;
}
}
if (left > right)
{
printf("找不到\n");
}
return 0;
}
打印结果:
练习四
编写代码,演示两个字符从两端移动,向中间汇聚
#include <stdio.h>
#include <windows.h>
int main()
{
char arr1[] = "welcome to BeiJing!!!";
char arr2[] = "#####################";
int left = 0;
int right = sizeof(arr1) - 1;//从右往左的下标依次 -1
while (left < right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n", arr2);
Sleep(1000);//睡眠1秒,需要引头文件#include <windows.h>
system("cls");//清空屏幕
left++;
right--;
}
printf("%s\n", arr2);//这里是system清空屏幕后,输出最后的内容
return 0;
}
打印结果:
练习五
编写代码,模拟用户登录,并且只能登陆三次(只允许输入三次密码)
#include <stdio.h>
#include <string.h>
int main()
{
int i = 0;
char password[20] = { 0 };//假设密码为:123456
for ( i = 0; i < 3; i++)
{
printf("请输入密码:>");
scanf("%s", password);
//if(password == "123456")//err -两个字符串比较,不能使用== ,应该使用strcmp
if (strcmp(password,"123456") == 0)//strcmp 需要引用头文件#include <string.h>
{
printf("登陆成功!\n");
break;
}
else
{
printf("密码错误,请重新输入!\n");
}
}
if (i == 3)
{
printf("三次密码均错误,退出程序!\n");
}
return 0;
}
打印结果: