练习(二分查找):
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 = (left + right) / 2;
if (arr[mid] < k) {
left = mid + 1;
}
else if (arr[mid] > k) {
right = mid - 1;
}
else
{
printf("找到了:%d\n", mid);
break;
}
}
if (left > right) {
printf("找不到了");
}
return 0;
}
练习:
#include <string.h>
//使用strlen函数
#include <windows.h>
//使用Sleep()函数
int main()
{
char arr1[] = "welcome to BeiJingTianAnMen";
char arr2[] = "###########################";
int left = 0;
int right = strlen(arr1) - 1;//计算字符串长度
while (left <= right) {
arr2[left] = arr1[left];
arr2[right] = arr1[right];
Sleep(1000);//睡眠(计时器)
system("cls");//清屏
left++;
right--;
printf("%s\n", arr2);
}
return 0;
}
练习(小登录):
int main()
{
int i = 0;
int m = 0;
char password[20] = { 0 };
for (i = 0; i < 3; i++) {
printf("请输入密码:");
scanf("%s", password);
//strcmp对比 下列就是将password和123456对比 正确返回0
if (strcmp(password, "123456") == 0) {
printf("密码正确,登录成功");
break;
}
else {
printf("密码错误,请重新输入 \n");
}
}
if (i >= 3) {
printf("已超过三次,账号即将锁定 \n");
for (m = 5; m >= 0; m--) {
printf("%d \n", m);
Sleep(1000);
}
}
if (m <= 0) {
printf("已锁定");
}
return 0;
}
练习(猜字游戏):
void menu() {
printf("################### \n");
printf("####1、开始游戏#### \n");
printf("####0、退出游戏#### \n");
printf("################### \n");
}
void game(){
int guess = 0;
int ret = rand()%100+1;
//printf("%d \n", ret);
while (1) {
printf("请输入:\n");
scanf("%d", &guess);
if (guess < ret) {
printf("猜小了 \n");
}
else if (guess > ret) {
printf("猜大了 \n");
}
else {
printf("恭喜你猜对了 \n");
break;
}
}
}
int main()
{
srand((unsigned int)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;
}
练习(1000-2000的润年):
int main()
{
int i = 1000;
for (i = 1000; i <= 2000; i++) {
if ((i % 400 == 0)||(i %4==0&&i%100!=0)) {
printf("%d\n", i);
}
}
return 0;
}
练习(100 - 200 之间的素数)
#include <math.h>
int main()
{
int count = 0;
int i = 0;
for (i = 101; i <= 200; i+=2) {
int j = 0;
int flang = 1;
//sqrt()函数是求一个数的平方,这个函数要引入<math.h>头文件
for (j = 2; j <= sqrt(i); j++) {
if (i % j == 0) {
flang = 0;
break;
}
}
if (flang == 1) {
count++;
printf("%d ", i);
}
}
printf("count=%d", count);
return 0;
}
练习(斐波那契)不考虑栈溢出:
int Fib(n) {
if (n <= 2) {
return 1;
}
else {
return Fib(n - 1) + Fib(n - 2);
}
}
int main()
{
int n = 0;
scanf("%d", &n);
int ret = Fib(n);
printf("%d", ret);
return 0;
}
//数值大的话会很慢
int Fib(n) {
int a = 1;
int b = 1;
int c = 1;
while (n > 2) {
c = a + b;
a = b;
b = c;
n--;
}
return c;
}
int main()
{
int n = 0;
scanf("%d", &n);
int ret = Fib(n);
printf("%d", ret);
return 0;
}
//这样会很快但是数值大的话会溢出,但是不考虑溢出的问题
练习(1-100中的整数中出现多少个数字9)
int main()
{
int i = 0;
int count = 0;
for (i = 1; i < 100; i++) {
if (i % 10 == 9) {
count++;
}
if (i / 10 == 9) {
count++;
}
}
printf("%d", count);
return 0;
}
练习(计算1/1-1/2+1/3-1/4+1/5......+1/99-1/100的值
//第一种方法
int main()
{
int i = 0;
double sum = 0.0;
for (i = 1; i <= 100; i++) {
if (i % 2 == 0) {
sum -= 1.0 / i;
}
else
{
sum += 1.0 / i;
}
}
printf("%lf", sum);
return 0;
}
//第二种方法
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;
}
printf("%lf", sum);
return 0;
}
练习(找到10个整数中最大的数)
int main()
{
int arr[10] = { 2,34,1,3,5,6,3,87,23,13 };
int i = 0;
int max = arr[0];
for (i = 1; i < 10; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
printf("%d", max);
return 0;
}