1. 计算 n的阶乘。
调用阶乘函数,三种循环
1.计算阶乘
int main()
{
int n = 0;
int m = 0;
scanf("%d", &n);
m = jiecheng(n);
printf("%d\n", m);
system("pause");
return 0;
}
int jiecheng(int n)
{
int i = 1;
int m = 1;
while (i <= n)
{
m = m*i;
i++;
}
/*do
{
m = m*i;
i++;
} while (i <= n);*/
/*for (i = 1; i <= n; i++)
{
m = m*i;
}*/
return m;
}
2. 计算 1!+2!+3!+……+10!
两种方式,一种简单,一种复杂,时间复杂度不同
int main()
{
int i = 0;
int ret = 1;
int sum = 0;
for (i = 1; i <= 10; i++)
{
ret *= i;
sum += ret;
}
printf("%d", sum);
return 0;
}
int main()
{
int i = 0;
int n = 0;
int ret = 1;
int sum = 0;
for (n = 1; n <= 10; n++)
{
for (i = 1; i <= n; i++)
{
ret *= i;
}
sum += ret;
ret = 1;
}
printf("%d", sum);
return 0;
}
3. 在一个有序数组中查找具体的某个数字n。(讲解二分查找)
需要复习
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 = (right + left) / 2;
if (arr[mid] < k)
{
left = mid + 1;
}
else if (arr[mid]>k)
{
right = mid - 1;
}
else
{
printf("找到了,下标是:%d", mid);
break;
}
}
if (left > right)
{
printf("找不到");
}
return 0;
}
4. 编写代码,演示多个字符从两端移动,向中间汇聚。
休眠清屏
#include <string.h>
#include <Windows.h>
int main()
{
char arr1[] = "happy birthday!!";
char arr2[] = "################";
int sz = sizeof(arr1) / sizeof(arr1[0]);
int n = (sz / 2)-1;
int i = 0;
int j = 0;
for (i = 0; i <= n; i++)
{
arr2[i] = arr1[i];
arr2[sz-2 - i] = arr1[sz-2 - i];
printf( "%s\n", arr2);
Sleep(500);//休眠
system("cls");//清屏
}
printf("%s\n", arr2);
return 0;
}
5. 编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则
提示登录成,如果三次均输入错误,则退出程序。
比较两个字符串是否相同用strcmp(a,b)==0
int main()
{
int i = 0;
char arr[] = "abc";
char p[20] = {0};
for (i = 1; i <= 3; i++)
{
printf("请输入密码:");
scanf("%s", p);//p数组本来就是地址,不用取地址
//if (p == arr)错误,两个字符串比较不能用==应该使用strcmp
if (strcmp(p,arr)==0)
{
printf("登录成功\n");
break;
}
else
{
if (i < 3)
printf("密码错误,请重新输入,还有%d次机会\n", 3 - i);
else
printf("密码错误,今天次数已达上限\n");
}
}
return 0;
}
6.
猜数字游戏实现
1.随机产生一个1-100之间的随机数
2.猜数字
a.猜对了,恭喜你游戏结束
b.猜错了,会告诉猜大了或者猜小了,继续猜直到猜对
3.游戏可以一直玩,除非退出
//猜数字游戏
//1.随机产生一个1-100之间的随机数
//2.猜数字
//a.猜对了,恭喜你游戏结束
//b.猜错了,会告诉猜大了或者猜小了,继续猜直到猜对
//3.游戏可以一直玩,除非退出
#include <stdlib.h>//调用rand
#include <time.h>
void game()
{
int n = rand();
int a = n % 100 + 1;、、将随机数控制在1-100之间
int b = 0;
printf("请输入一个1-100之间的数字:\n");
do
{
scanf("%d", &b);
if (b > a)
printf("猜大了\n");
else if (b < a)
printf("猜小了\n");
} while (a != b);
printf("猜对了,Congratulation!该数是%d\n", a);
return 0;
}
void menu()
{
printf("***********************\n");
printf("****** 1. play ******\n");
printf("****** 0. exit ******\n");
printf("***********************\n");
return 0;
}
int main()
{
srand((unsigned int)time(NULL));//用时间戳获取随机数
int input;
do
{
menu();
printf("请选择(0/1):");
scanf("%d", &input);
switch (input)
{
case 1:
printf("开始游戏\n");
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("重新输入,请输入0或1\n");
break;
}
} while (input);
return 0;
}
7.求两个数的最大公约数
a.普通方法
int main()
{
int a = 0;
int b = 0;
int i = 0;
scanf("%d %d", &a, &b);
if (a > b)
i = b;
else
i = a;
for (i; i > 0; i--)
{
if (a%i == 0 && b%i == 0)
{
printf("%d\n", i);
break;
}
}
return 0;
}
b.辗转相除法:a%b=c,b%c=d,c%d=e.....m%n==0,n就是最大公因数
int main()
{
int a = 0;
int b = 0;
int c = 0;
int temp = 0;
scanf("%d %d", &a, &b);
/*if (b > a)
{
temp = a;
a = b;
b = temp;
} 不需要判断ab大小a=55,b=77,c=55,a=77;b=55*/
do
{
c = a%b;
a = b;
b = c;
} while (c != 0);//当括号内成立继续,不成立跳出
printf("%d", a);
return 0;
}
//最小公倍数=m*n/最大公约数
8.打印100-200之间的素数
int main()
{
int i = 0;
int j = 2;
for (i = 100; i <= 200; i+=2)
{
for (j = 2; j < i; j++)
{
if (i%j == 0)
break;
}
if (i == j)//没想到
printf("%d ", i);
}
return 0;
}
不同方法
#include <math.h>
int main()
{
int i = 0;
for (i = 100; i <= 200; i++)
{
int j = 0;
int flag = 1;
for (j = 2; j<=sqrt(i); j++)
{
if (i%j == 0)
{
flag = 0;
break;
}
}
if (flag)//没想到
printf("%d ", i);
}
return 0;
}
//初始定义flag=1应在循环里定义
//m=a*b
//a,b之间一定至少有一个数字是<=m开平方sqrt()
9.控制电脑关机
int main()
{
char input[20] = { 0 };
system("shutdown -s -t 120");
while (1)
{
printf("请注意,你的电脑将在两分钟内关机,想取消请输入:秋秋最漂酿\n");
scanf("%s", input);
if (strcmp(input, "秋秋最漂酿") == 0)
{
system("shutdown -a");
break;
}
}
return 0;
}