代码练习
1. 计算 n的阶乘。
在main函数里面实现
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>;
#include<stdlib.h>;
int main() {
int ret = 1;
printf("请输入一个整型数字\n");
int num = 0;
scanf("%d", &num);
for (int i = 1; i <= num; i++) {
ret *= i;
}
printf("num的阶乘为%d", ret);
return 0;
}
使用函数实现
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int jiecheng(int num) {
int ret = 1;
for (int i = 1; i <= num; i++) {
ret *= i;
}
return ret;
}
int main() {
printf("请输入一个整型数字\n");
int num = 0;
scanf("%d", &num);
int ret = jiecheng(num);
printf("num的阶乘为%d", ret);
return 0;
}
2. 计算 1!+2!+3!+……+10!
如下
#include<stdio.h>
#include<stdlib.h>
int jiecheng(int num) {
int ret = 1;
for (int j = 1; j<= num; j++) {
ret *= j;
}
return ret;
}
int main() {
int sum = 0;
for (int i = 1; i < 11; i++) {
sum += jiecheng(i);
}
printf("1到10的阶乘总和为%d\n", sum);
system("pause");
return 0;
}
3. 在一个有序数组中查找具体的某个数字n。 编写int binsearch(int x, int v[], int n); 功能:在v[0]<=v[1]<=v[2]<= ….<=v[n-1]的数组中查找x.
二分查找(适用于有序数组)
比如 arr[ ] = {1,2,3,4,5,6,7,8,9};
下标mid = (0+8)/2 = 4 故中间位置的下标为4.
再用提供的key值和中间下标的元素比较大小
若是key值比arr[mid]的值大 则在右边元素找,并将left = mid + 1
若是key值比arr[mid]的值小 则在左边元素找,并将right = mid -1
一直循环直到找到对应元素的下标
int bin_search(int arr[], int left, int right, int key) {
int mid = 0;
while(left<=right)
{
mid = (left+right)/2;
if(arr[mid]>key)
{
right = mid-1;
}
else if(arr[mid] < key)
{
left = mid+1;
}
else
return mid;//找到了,返回下标
}
return -1;//找不到
}
4. 编写代码,演示多个字符从两端移动,向中间汇聚。
#include<stdio.h>
#include<string.h>
#include<Windows.h>
int main() {
char ch1[] = "welcome to bit!!";
char ch2[] = "################";
int left = 0;
int right = strlen(ch1) - 1;
printf("%s\n", ch2);
while (left <= right) {
Sleep(1000);
ch2[left] = ch1[left];
ch2[right] = ch1[right];
left++;
right--;
system("cls");
printf("%s", ch2);
}
return 0;
}
5. 编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登录成,如果三次均输入错误,则退出程序。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main() {
char ch[] = "1234";
char password []= " ";
printf("请输入您的密码\n");
int i = 0;
for (; i < 3; i++) {
scanf("%s", password);
if (strcmp(password, ch) == 0) {
printf("成功登入系统\n");
break;
}
else {
printf("密码错误还剩余%d次机会", 2 - i);
}
}
if (i > 3) {
printf("您的次数已用完,无法再次登录");
}
return 0;
}