输出结果是什么?

#include<stdio.h>
int main()
{
int a = 1;
int b;
switch (a)
{
case 1:
b = 30;
case 2:
b = 20;
case 3:
b = 16;
default:
b = 0;
}
printf("%d\n", b);
return 0;
}

输出结果为:0


分支和循环的作业和练习_i++

正确答案:D

知识点:char - 字符类型 在内存中存的的是字符所对应的ASCII码值,ASCII码值是整型


define是预处理指令,不是关键字


写代码将三个数按从大到小输出

#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
scanf("%d%d%d", &a, &b, &c);
//算法实现
//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 ", a, b, c);
return 0;
}


写一个代码打印1-100之间所有的3的倍数

//法1
#include<stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 100; i++)
{
if (0 == i % 3)
{
printf("%d ", i);
}
}
return 0;
}
//法2
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 100)
{
if (0 == i % 3)
{
printf("%d ", i);
}
i++;
}
return 0;
}
//法3
#include<stdio.h>
int main()
{
int i = 1;
do
{
if (0 == i % 3)
{
printf("%d ", i);
}
i++;
} while (i <= 100);
return 0;
}


给定两个数,求这两个数的最大公约数 --辗转相除法

//最大公约数,也称最大公因数,最大公因子,指两个或多个整数整数共有约数中最大的一个。
//给定两个数,求这两个数的最大公约数。 --辗转相除法

#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
int r = 0;
scanf("%d%d", &a, &b);
while (r = a % b)
{
a = b;
b = r;
}
printf("%d", b);
return 0;
}



打印1000年到2000年之间的闰年

判断是否为闰年的条件

1.能被4整除并且不能被100整除是闰年

2.能被400整除的是闰年

#include<stdio.h>
int main()
{
int year = 0;
int count = 0;
for (year = 1000; year <= 2000; year++)
{
if (year % 4 == 0 && year % 100 != 0)
{
count++;
printf("%d ", year);
}
else if (year % 400 == 0)
{
count++;
printf("%d ", year);
}
}
printf("\ncount= %d\n", count);
return 0;
}
#include<stdio.h>
int main()
{
int year = 0;
int count = 0;
for (year = 1000; year <= 2000; year++)
{
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{
printf("%d ", year);
count++;
}
}
printf("\ncount=%d\n", count);
return 0;
}


打印素数 写一个代码 打印100-200之间的素数 --试除法

素数 -一般指质数,质数是指在大于1的自然数中,除了1和它本身外不在有其他因数的自然数

#include<stdio.h>
int main()
{
int i = 0;
int count = 0;
for (i = 100; i <= 200; i++)
{
int j = 0;
for (j = 2; j < i; j++)
{
if (i % j == 0)
break;
}
if (j == i)
{
printf("%d ", i);
count++;
}
}
printf("\ncount=%d\n", count);
return 0;
}
//如果i不是素数 那么i=a*b a和b中至少有一个数字<=开平方i  比如:16=2*8=4*4
#include<stdio.h>
#include<math.h>
int main()
{
int i = 0;
int count = 0;
for (i = 100; i <= 200; i++)
{
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;
}
//开平方i小于二分之i
#include<stdio.h>
#include<math.h>
int main()
{
int i = 0;
int count = 0;
for (i = 100; i <= 200; i++)
{
int j = 0;
for (j = 2; j <=i/2; j++)
{
if (i % j == 0)
break;
}
if (j >i/2)
{
count++;
printf("%d ", i);
}
}
printf("\ncount=%d\n", count);
return 0;
}
//偶数不是素数
#include<stdio.h>
int main()
{
int i = 0;
int count = 0;
for (i = 101; i <= 200; i+=2)
{
int j = 0;
for (j = 2; j < i; j++)
{
if (i % j == 0)
break;
}
if (j == i)
{
printf("%d ", i);
count++;
}
}
printf("\ncount=%d\n", count);
return 0;
}


《素数的n种境界》


while(表达式)
{
循环体;
}

知识点:其中表达式的执行次数总是比循环体的执行次数多一次


输出结果什么?

#include <stdio.h>
int main()
{
int a = 0, b = 0;
for (a = 1, b = 1; a <= 100; a++)
{
if (b > 20)
break;
if (b % 3 == 1)
{
b = b + 3; //4 7 10 13 16 19 22
continue;
}
b = b - 5;
}
printf("%d\n", a); // 打印8
return 0;
}

输出结果为:8


编写程序数一下100的所有整数中出现了多少个数字9

#include<stdio.h>
int main()
{
int i = 0;
int count = 0;
for (i = 1; i <= 100; i++)
{
if (i % 10 == 9)
count++;
if (i / 10 == 9)
count++;
}
//个位是9的数:9 19 29 39 ...99 -10
// 十位是9的数:90 91 92 93 94 95 96 97 98 99 -10
printf("count = %d\n", count);
return 0;
}


编写程序数一下100的所有整数中出现了多少个带9的数字

#include<stdio.h>
int main()
{
int i = 0;
int count = 0;
for (i = 1; i <= 100; i++)
{
if (i % 10 == 9)
count++;
else if (i / 10 == 9)
count++;
}
printf("\ncount = %d\n", count);
return 0;
}


计算1/1-1/2+1/3-1/4+1/5+.......+1/99-1/100的值,打印出结果

#include<stdio.h>
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\n", sum);
return 0;
}


求10个整数中的最大值

#include<stdio.h>
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int max = arr[0];
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
for (i = 0; i < sz; i++)
{
if (max < arr[i])
max = arr[i];
}
printf("max = %d\n", max);
return 0;
}


在屏幕上输出九九乘法表

#include<stdio.h>
int main()
{
int i = 0;
//打印九行
for (i = 1; i <= 9; i++)
{
//打印一行
int j = 0;
for (j = 1; j <= i; j++)
{
//printf("%d*%d=%2d ", i, j, i * j); //结果右对齐
printf("%d*%d=%-2d", i, j, i * j); //结果左对齐
}
printf("\n");
}
return 0;
}


编写一个代码在一个整形有序数组中查找具体的某个数

要求:找到了就打印数字所在的下标,找不到则输出:找不到

#include<stdio.h>
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 left = 0;
int right = sz - 1;
int mid = 0;
while (left <= right)
{
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("找不到\n");
return 0;
}


猜数字游戏

1.电脑会生成一个随机数

2.猜数字

#include<stdio.h>
#include<stdlib.h>
void menu()
{
printf("*****************************\n");
printf("*** 1.play 0.exit*****\n");
printf("*****************************\n");

}
void game()
{
//1.生成一个随机数
int ret = 0;
int guess = 0; //接收猜的数字
//拿时间戳来设置随机数的生成起点
//time_t time(time_t* timer)
//time_t
ret = rand() % 100 + 1; //生成1-100之间的随机数
//RAND_MAX 0x7fff -32767

//2.猜数字
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;
srand((unsigned int)time(NULL));
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;
}


goto语句

1.C语言中提供了可以随意滥用的goto语句和标记跳转的符号。

2.从理论上goto语句是没有必要的,实践中没有goto语句也可以很容易写出代码。

但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程,例如一次跳出两层或多层循环。

这种情况下用break是达不到目的的。它只是从最内层循环退出到上一层的循环。

分支和循环的作业和练习_最大公约数_02


#include<stdio.h>
int main()
{
again:
printf("hello bit\n");
goto again;
return 0;
}
#include<stdio.h>
int main()
{
printf("hello bit\n");
goto again;
printf("你好\n");
again:
printf("hehe\n");
return 0;
}


关机程序

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char input[20] = { 0 };
//shutdown -s -t 60
//system() -执行系统命令的
system("shutdown -s -t 60");
again:
printf("请注意,你的电脑将在1分钟内关机,如果输入:我是猪,就会取消关机\n请输入>:");
scanf("%s", &input);
if (strcmp(input, "我是猪") == 0) //比较两个字符串 -strcmp()
{
system("shutdown -a");
}
else
{
goto again;
}
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char input[20] = { 0 };
//shutdown -s -t 60
//system() -执行系统命令的
system("shutdown -s -t 60");
while (1)
{
printf("请注意,你的电脑将在1分钟内关机,如果输入:我是猪,就会取消关机\n请输入>:");
scanf("%s", &input);
if (strcmp(input, "我是猪") == 0) //比较两个字符串 -strcmp()
{
system("shutdown -a");
break;
}
}
return 0;
}


分支和循环的作业和练习_最大公约数_03