目录
1. 打印n的阶乘;
2、计算 1!+2!+3!+......+10!
3、用二分查找在一个有序数组中查找一个数
4、打印如下
5、输入三次密码
6、写一个猜数字游戏
7、如题
8、打印1到100之间 3的倍数
9、给两个数,求出最大公约数
10、找出从1000到2000之间的闰年
11、找出100到200之间的素数(只能被1和它本身整除的数)
1. 打印n的阶乘;
int main()
{
int i = 1;
int n = 1;
int ret = 1;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
ret *=i;
}
printf("%d\n",ret);
return 0;
}
2、计算 1!+2!+3!+......+10!
int main()
{
int i = 0;
int j = 0;
int ret = 1;
int sum = 0;
for(i=1;i<=3;i++)
{
ret = 1;
for(j=1;j<=i;j++)
{
ret *=j;
}
sum +=ret;
}
printf("%d\n",sum);
return 0;
}
以上代码优化
int main()
{
int i = 0;
int ret = 1;
int sum = 0;
for(i=1;i<=3;i++)
{
ret *=i;
sum +=ret;
}
printf("%d\n",sum);
return 0;
}
3、用二分查找在一个有序数组中查找一个数
#include<stdio.h>
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;
while(left<=right)
{
int mid = (left + right) / 2;
if(k > arr[mid])
{
left = mid + 1;
}
else if(k < arr[mid])
{
right = mid - 1;
}
else
{
printf("找到了为:第%d位数\n",mid);
break;
}
}
if(left > right)
{
printf("找不到\n");
}
return 0;
}
4、打印如下
#include<stdio.h>
#include<string.h>
#include<windows.h>
int main()
{
char arr1[] = "Welcome to byte!!!";
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);
left ++;
right --;
Sleep(1000);
}
或者
#include<stdio.h>
#include<string.h>
#include<windows.h>
int main()
{
char arr1[] = "Welcome to byte!!!";
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);
left ++;
right --;
Sleep(1000); //睡眠1秒
system("cls"); //清屏
}
printf("Welcome to byte!!!\n");
return 0;
}
5、输入三次密码
如果对输出:密码输入正确,如果三次都错误,输出:三次密码均错误,退出程序。
#include<string.h>
int main()
{
int i = 0;
char password[20]={ 0 };
for(i= 0; i<3; i++)
{
printf("请输出密码:>");
scanf("%s",password);
//if(password = "123456") 这样比较字符是错误的
if(strcmp(password,"123456") == 0)
{
printf("登录成功\n");
break;
}
else
{
printf("密码输出错误,请重新输入!\n");
}
}
if(i == 3)
{
printf("密码输入错误3次,退出程序\n");
}
return 0;
6、写一个猜数字游戏
1 自动产生一个1-100之间的随机数
2.猜数字:
- a. 猜对了,就恭喜你,游戏结束
- b. 你猜错了,会告诉猜大了,还是猜小了,继续猜,直到猜对
3.游戏一个一直玩,除非退出游戏
#include<stdlib.h>
void menu()
{
printf("**************************\n");
printf("******* 1.开始 *********\n");
printf("******* 0.结束 *********\n");
printf("**************************\n");
printf("**************************\n");
}
void game()
{
int ret = rand()%100+1;
int guess = 0;
while(1)
{
printf("请猜数字:>");
scanf("%d",&guess);
if(guess < ret)
{
printf("猜小了\n");
}
else if(guess > ret)
{
printf("猜大了\n");
}
else
{
printf("恭喜你,猜对了\n");
break;
}
}
}
int main()
{
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;
}
7、如题
从大到小输出题目内容:
写代码将三个整数数按从大到小输出。
例:
输入: 231
输出:321
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
scanf("%d%d%d",&a,&b,&c);
if(a<b)
{
int ret = a;
a = b;
b = ret;
}
if(a<c)
{
int ret = a;
a = c;
c = ret;
}
if(b<c)
{
int ret = b;
b = c;
c = ret;
}
printf("%d %d %d",a,b,c);
return 0;
}
8、打印1到100之间 3的倍数
int main()
{
int i = 0;
for(i=1; i<=100; i++)
{
if(i%3 == 0)
{
printf("%d ",i);
}
}
return 0;
}
或者
int main()
{
int i = 0;
for(i=3; i<=100; i+=3)
{
printf("%d ",i);
}
return 0;
}
9、给两个数,求出最大公约数
#include<stdio.h>
int main()
{
int m = 0;
int n = 0;
int Max = 0;
scanf("%d%d",&m,&n);
if(m >= n) //假如最大公约数就是m、n的最小值
Max = n;
else
Max = m;
while(1)
{
if(m % Max == 0 && n % Max == 0)
{
printf("%d\n",Max);
break;
}
Max--;
}
return 0;
}
还可以用辗转相除法:
int main()
{
int m = 0;
int n = 0;
int t = 0;
scanf("%d%d",&m,&n);
while(t = m%n)
{
m = n;
n = t;
}
printf("%d\n",n);
}
10、找出从1000到2000之间的闰年
1.可以被4整除且不被100整除 或者
2.可以被400整除的
int main()
{
int y = 0;
int count = 0;
for(y=1000; y<=2000; y++)
{
if(((y%4 == 0) && (y%100 != 0)) || (y % 400 == 0))
{
printf("%d ",y);
count++;
}
}
printf("\n闰年一共:%d\n",count);
return 0;
}
11、找出100到200之间的素数(只能被1和它本身整除的数)
int main()
{
int i = 0;
int j = 0;
int count = 0;
for(i=100; i<=200; i++)
{
j = 0;
for(j=2; j<i; j++)
{
if(i%j == 0 )
{
break;
}
}
if(i == j)
{
printf("%d ",i);
count++;
}
}
printf("\n一共:%d\n",count);
return 0;
}