这些是一些c语言基础题,难度不大并且容易上手;答案在后面省略了<stdio.h>头文件
1:/*写一个函数返回参数二进制中 1 的个数 比如: 15 ? ? ? 0000 1111 ? ? ? 4 个 1*/
2:/*编程实现: 两个int(32位)整数m和n的二进制表达中, 有多少个位(bit)不同?*/
3:/*计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值*/
4:/*编写程序数一下 1到 100 的所有整数中出现多少个数字9*/
5:/*求出0~999之间的所有“水仙花数”并输出*/
(水仙花数;例:153=1,3,5三个数的立方之和,则称为水仙花数)
6:/*求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字, 例如:2+22+222+2222+22222*/
7:/*编写代码模拟三次密码输入的场景。 ? 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, ? 可以重新输入,最多输入三次。三次均错,则提示退出程序。*/
8:/*写代码可以在整型有序数组中查找想要的数字, 找到了返回下标,找不到返回-1.(折半查找)*/
送个壁纸顺便挡一下答案
?1:
/*写一个函数返回参数二进制中 1 的个数
比如: 15 0000 1111 4 个 1*/
//int main()
//{
// int input = 0; int court = 0;
// scanf_s("%d", &input);
// do {
// if ((input % 2) == 1)
// court++;
// input = input / 2;
// } while (input);
// printf("%d\n", court);
// return 0;
//}
//int main()
//{
// int a = 0; int court = 0;
// scanf_s("%d", &a);
// while (a)
// {
// if ((a & 1) == 1)
// {
// court++;
// }
// a = a >> 1;
// }
// printf("%d", court);
// return 0;
//}
/*编程实现:
两个int(32位)整数m和n的二进制表达中,
有多少个位(bit)不同?*/
//int main()
//{
// int input1 = 0, input2 = 0; int court = 0;
// scanf_s("%d%d", &input1, &input2);
// int input = input1 ^ input2;
// do {
// if ((input % 2) == 1)
// court++;
// input = input / 2;
// } while (input);
// printf("%d\n", court);
// return 0;
//}
/*计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值*/
//int main()
//{
// int i = 1; double sum = 0;
// while (i <= 100)
// {
// if (i % 2 == 1)
// {
// sum += 1.0 / i;
// }
// else
// {
// sum -= 1.0 / i;
// }
// i++;
// }
// printf("sum = %lf", sum);
// return 0;
//}
/*编写程序数一下 1到 100 的所有整数中出现多少个数字9*/
//int main()
//{
// int i = 0; int court = 0;
// for (i = 1; i <= 100; i++)
// {
// if ((i % 10) == 9)
// court++;
// if ((i / 10) == 9)
// court++;
// }
// printf("%d", court);
// return 0;
//}
/*求出0~999之间的所有“水仙花数”并输出*/
//#include<math.h>
//int main()
//{
// int i = 0;
// for (i = 0; i <= 999; i++)
// {
// int x = i % 10; int y = i / 10 % 10; int z = i / 10 / 10;
// if ((pow(x, 3) + pow(y, 3) + pow(z, 3)) == i)
// printf("%d ", i);
// }
// return 0;
//}
/*求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,
例如:2+22+222+2222+22222=24690*/
//#include<math.h>
//int main()
//{
// int a = 0; int i = 0;
// scanf_s("%d", &a);
// int Sn = 0; int que = 0;
// for (i = 4; i >= 0; i--)
// {
// que = i;
// while (i>=0)
// {
// Sn+=a*( pow(10, i));
// i--;
// }
// i = que;
// }
// printf("%d", Sn);
// return 0;
// }
int main()
{
int n,password=123123,i=1;
while(1)
{
printf("输入密码:\n");
scanf("%d",&n);//scanf 函数不能有\n
if(n==password)
printf("Welcome to use the software\n");
else
{
if(i<3)
printf("剩余的可输入密码的次数为:%d\n",3-i);
else
printf("Password error ! You can not use the software\n");
i++;
}
if(i>=4||n==password)break;
}
}
#include<stdio.h>
//找数组里面的数字
int get_su(int arr[],int k,int sz )
{
int left = 0;
int right = sz - 1;
while (left <= right)
{
int might = (left + right) / 2;
if (arr[might] < k)
{
left = might + 1;
}
else if (arr[might] > k)
{
right = might - 1;
}
else
{
return might;
}
}
return -1;
}
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 7;
int sz = sizeof(arr) / sizeof(arr[0]);
int ret = get_su(arr, k, sz);
if (ret == 0)
printf("找不到");
else
printf("找到了,下标是 %d", ret);
return 0;
}
|