目录
目录
switch 语句
除了 if 语句外,C语言还提供了 switch 语句来实现分支结构。switch 语句是一种特殊形式的 if...else 结构,用于判断条件有多个结果的情况。它把多重的 else if 改成更易用、可读性更好的形式。
int main()
{
int n = 0;
scanf("%d", &n);
switch (n)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
default:
printf("输入错误\n");
break;
}
return 0;
}
循环语句
for
表达式1可省略,但循环之前应给循环变量赋值
表达式2可省略,将陷入死循环
表达式3可省略,但在循环体中增加使循环变量值改变的语句
for(;;){//死循环,在单片机程序中可以看到}
水仙花数
99乘法表
while
int main()
{
int n = 0;
scanf("%d", &n);
while (n)
{
printf("%d ", n % 10);
n = n / 10;
}
return 0;
}
do while
break和continue语句
break 的作用是用于永久的终止循环,只要 break 被执行,直接就会跳出循环,继续往后执行。
continue 的作用是跳过本次循环中 continue 后边的代码,在 for 循环和 while 循环中有所差异的。
找出素数
素数也叫质数,就是只能被1和它本身整除的数字
//1. 产生100~200之间数字 -- for i
//2. 判断生成的i是否为素数
// 如果是素数就打印
//怎么判断i是否是素数呢?
//使用2~i-1之间的数字去试除i,如果都不能整除i,那么i就是素数,否则就不是素数
// 2~i-1之间的数字 for
int main()
{
int i = 0;
for (i = 100; i <= 200; i++)
{
int flag = 1;//假设i是素数
//判断i是否为素数
//产生2~i-1之间的数字
int j = 0;
for (j = 2; j <= i - 1; j++)
{
if (i % j == 0)
{
flag = 0;
break;
}
}
if (flag == 1)
printf("%d ", i);
}
return 0;
}
代码优化
//sqrt 库函数 - 开平方
//math.h
#include <math.h>
int main()
{
int i = 0;
for (i = 100; i <= 200; i++)
{
int flag = 1;//假设i是素数
//判断i是否为素数
//产生2~i-1之间的数字
int j = 0;
for (j = 2; j <= sqrt(i); j++)
{
if (i % j == 0)
{
flag = 0;
break;
}
}
if (flag == 1)
printf("%d ", i);
}
return 0;
}
再次优化,每次自增2
//sqrt 库函数 - 开平方
//math.h
#include <math.h>
int main()
{
int i = 0;
for (i = 101; i <= 200; i+=2)
{
int flag = 1;//假设i是素数
//判断i是否为素数
//产生2~i-1之间的数字
int j = 0;
for (j = 2; j <= sqrt(i); j++)
{
if (i % j == 0)
{
flag = 0;
break;
}
}
if (flag == 1)
printf("%d ", i);
}
return 0;
}
goto
在任何编程语言中,都不建议使用goto语句。•因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。
一个猜数小游戏
知识点:
rand函数能够生成随机数的范围是:0~32767
生成随机数之前需要调用srand来设置随机数的生成起点srand函数只需要调用一次就可以了,不能频繁的调用
#include <stdio.h>
#include <string.h>
#include <math.h>
#include<stdlib.h>
int main() {
srand((unsigned int)time(NULL));
int a = (rand()%100)+1;
int guess,s,y,count;
printf("***************************\n");
printf("****** 1. play ********\n");
printf("****** 0. exit ********\n");
printf("***************************\n");
scanf_s("%d",&s);
if (s == 1) {
printf("开始游戏\n");
}
else if(s==0){
printf("exit\n");
}
else {
printf("输入错误!!!");
s = 0;
}
count = 3;
while (s!=0 && count) {
printf("输入一个数,只有%d次机会\n",count);
scanf_s("%d", &guess);
if (a > guess) {
printf("输入的数小了\n");
}
else if (a < guess) {
printf("输入的数大了\n");
}
else {
printf("恭喜你猜对了,随机数是:%d\n继续吗*****1-play,0-exit****\n", guess);
scanf_s("%d", &y);
if (0 == y)
break;
}
count--;
}
if (count == 0)
{
printf("机会使用完,你失败了,正确的数字是:%d\n", a);
}
return 0;
}