1.计算n的阶乘
int main()
{
int n = 0;
int i=0;
int sum = 0;
scanf("%d",&n);
for (i = 0; i<n; i++)
{
sum=sum*i;
}
printf("%d\n", sum);
return 0;
}
2.计算1!+2!+...+10!
int main()
{
int i = 0;
int n = 0;
int ret = 1;
int sum = 0;
for (n = 1; n <=10; n++)
{
for (ret=1,i = 1; i <= n; i++)
{
ret = i * ret;
}
sum = ret + sum;
}
printf("%d\n", sum);
return 0;
}
3.折半查找
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int left = 0;
int right = sizeof(arr) / sizeof(arr[0]) - 1;
int key = 7;
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
break;
}
if (left <= right)
printf("找到了,下标是%d\n", mid);
else
printf("找不到\n");
}
优化后:
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 17;
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)
{
right = mid - 1;
}
else if (arr[mid] < k)
{
left = mid + 1;
}
else
{
printf("下标是 %d\n", mid);
break;
}
}
if (left > right)
{
printf("找不到\n");
}
return 0;
}
4.多个字符从两端移动,向中间汇聚
int main() {
char arr1[] = "welcome to bit!!!";
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;
}
5.猜数字游戏
#include <time.h>
void game()
{
//1.生成数字
int guess = 0;
int ret = 0;
ret = rand()%100+1;
//2.猜数字
while (1)
{
printf("请输入你猜的数字:");
scanf("%d", &guess);
if (guess > ret)
{
printf("猜大了\n");
}
else if (guess < ret)
{
printf("猜小了\n");
}
else
{
printf("猜对了!\n");
break;
}
}
}
void menu()
{
printf("*******************\n");
printf("**1.play 0.exit**\n");
printf("*******************\n");
}
int main()
{
srand((unsigned)time(NULL));
int input = 0;
do {
menu();
printf("请输入:");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("输入有误,请重新输入\n");
break;
}
} while (input);
return 0;
}
6.模拟用户登录场景,只能试错三次
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;
}
7.给定两个整形变量的值,将两个值的内容进行交换
int main() {
int a = 1, b = 3;
int c;
c = a;
a = b;
b = c;
printf("a=%d b=%d\n", a, b);
return 0;
}
8.不允许创建临时变量,交换两个数的内容(附加题)
int main() {
int a = 5, b = 12;
a = a + b;
b = a - b;
a = a - b;
printf("a=%d b=%d", a, b);
return 0;
}
9.求10 个整数中最大值。
int main() {
int arr[] = { 1,2,4,34,5,64,6,211,87,9 };
int max = 0;
int i = 0;
for (i = 0; i < 10; i++)
{
if (arr[i] > max) {
max = arr[i];
}
}
if (i == 10)
printf("max= %d\n", max);
return 0;
}
10.将三个数按从大到小输出。
int main()
{
int a = 0;
int b = 0;
int c = 0;
scanf("%d%d%d", &a, &b, &c);//2 1 3
//算法实现
//a中放最大值
//b次之
//c中放最小值
if(a<b)
{
int tmp = a;
a = b;
b = tmp;
}
if(a<c)
{
int tmp = a;
a = c;
c = tmp;
}
if(b<c)
{
int tmp = b;
b = c;
c = tmp;
}
printf("%d %d %d\n", a, b, c);
return 0;
}
11.求两个数的最大公约数
int main()
{
int m = 0;
int n = 0;
int r = 0;
scanf("%d%d", &m ,&n);
while(r=m%n)
{
//r = m%n;
m = n;
n = r;
}
printf("%d\n", n);
return 0;
}
12.判断year是否为闰年
int main()
{
int year = 0;
int count = 0;
for(year=1000; year<=2000; year++)
{
//判断year是否为闰年
//1. 能被4整除并且不能被100整除是闰年
//2. 能被400整除是闰年
//if(year%4==0 && year%100!=0)
//{
// printf("%d ", year);
// count++;
//}
//else if(year%400==0)
//{
// printf("%d ", year);
// count++;
//}
if(((year%4==0)&&(year%100!=0))||(year%400==0))
{
printf("%d ", year);
count++;
}
}
printf("\ncount = %d\n", count);
return 0;
}
13.100-200内的素数
int main()
{
int i = 0;
int count = 0;
for(i=100; i<=200; i++)
{
//判读i是否为素数
//素数判断的规则
//1. 试除法
//产生2->i-1
int j = 0;
for(j=2; j<i; j++)
{
if(i%j == 0)
{
break;
}
}
if(j == i)
{
count++;
printf("%d ", i);
}
}
printf("\ncount = %d\n", count);
return 0;
}
14.sqrt判断素数
int main()
{
int i = 0;
int count = 0;
//sqrt - 开平方的数学库函数
for(i=100; i<=200; i++)
{
//判读i是否为素数
//素数判断的规则
//1. 试除法
//产生2->i-1
int j = 0;
for(j=2; j<=sqrt(i); j++)
{
if(i%j == 0)
{
break;
}
}
if(j>sqrt(i))
{
count++;
printf("%d ", i);
}
}
printf("\ncount = %d\n", count);
return 0;
}
优化
int main()
{
int i = 0;
int count = 0;
//sqrt - 开平方的数学库函数
for(i=101; i<=200; i+=2)
{
//判读i是否为素数
//素数判断的规则
//1. 试除法
//产生2->i-1
int j = 0;
for(j=2; j<=sqrt(i); j++)
{
if(i%j == 0)
{
break;
}
}
if(j>sqrt(i))
{
count++;
printf("%d ", i);
}
}
printf("\ncount = %d\n", count);
return 0;
}
15.计算1/1-1/2+1/3-1/4+...+1/99-1/100
int main()
{
int i = 0;
double sum = 0.0;
int flag = 1;
for(i=1; i<=100; i++)
{
sum += flag*1.0/i;
flag = -flag;
}
//1/1+1/2+1/3...
//1+0+0+0.. = 1
printf("%lf\n", sum);
return 0;
}
16.99乘法表输出
//在屏幕上输出9*9乘法口诀表
//
//1*1=1
//2*1=2 2*2=4
//3*1=3 3*2=6 3*3=9
//4*1=4 .....
//....
//9*1=9 ....
//
int main()
{
int i = 0;
//确定打印9行
for(i=1; i<=9; i++)
{
//打印一行
int j = 1;
for(j=1; j<=i; j++)
{
printf("%d*%d=%-2d ", i, j, i*j);
}
printf("\n");
}
return 0;
}