第一个练习是计算阶乘的:
int main()
{
int i = 0;
int ret = 1;
int n = 0;
while (1)
{
scanf("%d", &n);
if (0 == n)
{
printf("退出程序\n");
break;
}
for (i = 1,ret = 1; i <= n; i++)
{
ret *= i;
}
printf("%d的阶乘是:%d\n", n, ret);
}
return 0;
}
第二个练习是阶乘和:
int main()
{
int i = 0;
int n = 0;
int ret = 1;
int sum = 0;
while (1)
{
scanf("%d", &n);
if (0 == n)
{
printf("退出程序\n");
break;
}
ret = 1; sum = 0;
for (i = 1; i <= n; i++)
{
ret *= i;
sum += ret;
}
printf("%d以内的阶乘和:%d\n", n, sum);
}
return 0;
}
第三个练习是有序数组中查找数值,运用了折半查找,也叫二分查找
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 7;
int sz = sizeof(arr) / sizeof(arr[0]); //求数组元素个数
int left = 0; //范围左下标
int right = sz - 1; //范围右下标
int mid = 0;
while (left <= right)
{
mid = (left + right) / 2; //从数组中间找起
if (arr[mid] > k)
right = mid - 1;
else if (arr[mid] < k)
left = mid + 1; //缩小查找范围
else
{
printf("找到了,下标是:%d\n", mid);
break;
}
}
if (left > right)
printf("找不到了\n"); //当范围左下标大于右下标,则表示已经没有要查找的元素了
return 0;
}
第四个练习,则是一个从两端往中间一一显示出来的代码;
int main()
{
char arr1[] = "Nice to meet you!";
char arr2[] = "#################";
int left = 0;
int right = strlen(arr1) - 1;
while (left <= right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n", arr2);
Sleep(1000);
system("cls");
left++;
right--;
}
printf("%s\n", arr2);
return 0;
}
第五个,模拟限制输入密码次数的代码:
int main()
{
int i = 0;
char password[20] = { 0 };
for(i = 0;i <3;i++)
{
printf("请输入密码:>");
scanf("%s", password);
if (strcmp(password, "123456") == 0)
{
printf("登录成功\n");
break;
}
else
printf("输入错误,请重新输入\n");
}
if (i == 3)
printf("三次均输入错误,退出程序\n");
return 0;
}
这就是本人所学的几个练习,请多多指教;