#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//---------------------------------------------------------------------------------第 5 次作业:选择语句 if 和 switch
//-----------------------------------------------------------------1.输出结果
/*
int main()
{
int i = 0;
for (i = 0; i < 10; i++)
{
if (i = 5) //这里不是判断,是赋值
printf("%d", i); // 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 死循环
//if (i == 5) //这里不是判断,是赋值
// printf("%d", i); // 5
}
return 0;
}
*/
//-----------------------------------------------------------------2.单选
/*
关于if语句说法正确是:( C ) √
题目内容:
A.if语句后面只能跟一条语句
B.if语句中0表示假,1表示真 -----------非0表示真,不够准确
C.if语句是一种分支语句,可以实现单分支,也可以实现多分支
D.else语句总是和它的对齐的if语句匹配
*/
//-----------------------------------------------------------------3.单选
/*
题目名称:
关于switch说法不正确的是:(A) × C
题目内容:
A.switct语句中的default子句可以放在任意位置
B.switch语句中case后的表达式只能是整形常量表达式----------char 也属于整型家族,因为字符存储时,存的是ASCLL码值
C switch语句中case子句必须在default子句之前
D.switch语句中case表达式不要求顺序
*/
/*--------------------------------------例如
int main()
{
int n = 0;
scanf("%d", &n);
switch (n)
{
case 1:
{
printf("1\n");
break;
}
default:
{
printf("3\n");
break;
}
case 2:
{
printf("2\n");
break;
}
}
return 0;
}
*/
//-----------------------------------------------------------------4.单选
/*
题目名称:
int func(int a)
{
int b;
switch (a)
{
case 1: b = 30; -----------只有有 break 才能跳出语句,没有 break,接着往下走
case 2: b = 20;
case 3: b = 16;
default: b = 0;
}
return b;
}
题目内容: 返回值为(D)
A.30
B.20
C.16
D.0
*/
//-----------------------------------------------------------------5.单选
/*
题目名称:
switch(c)语句中,c不可以是什么类型 (D)
题目内容:
A.int
B.long
C.char
D.float
*/
//-----------------------------------------------------------------6.输出结果
/*
int main()
{
int x = 3;
int y = 3;
switch (x % 2)
{
case 1:
switch (y)
{
case 0:
printf("first");
case 1:
printf("second");
break;
default: printf("helIo");
}
case 2:
printf("third");
}
return 0;
}
// 代码执行结果 helIothird
*/
//----------------------------------------------------------------------7. 编程题:从大到小 输出
//输入:2 3 1
//输出:3 2 1
//----------------------------------- 教学版 1
/*
int main()
{
int a = 0;
int b = 0;
int c = 0;
//输入
scanf("%d %d %d", &a,&b,&c);
//调整顺序
int tmp = 0;
if (a < b)
{
tmp = a;
a = b;
b = tmp;
}
if (a < c)
{
tmp = a;
a = c;
c = tmp;
}
if (b < c)
{
tmp = b;
b = c;
c = tmp;
}
//输出
printf("%d %d %d\n", a,b,c);
return 0;
}
*/
//----------------------------------- 教学版 优化:写个交换函数
/*
void Swap(int* px, int* py)
{
int tmp = *px;
*px = *py;
*py = tmp;
}
int main()
{
int a = 0;
int b = 0;
int c = 0;
//输入
scanf("%d %d %d", &a, &b, &c);
//交换数值,调整顺序
int tmp = 0;
if (a < b)
Swap(&a, &b);
if (a < c)
Swap(&a, &c);
if (b < c)
Swap(&b, &c);
//输出
printf("%d %d %d\n", a, b, c);
return 0;
}
*/
//----------------------------------------------------------------------8. 打印3 的倍数的数
// 写一个代码打印1-100 之间所有3 的倍数的数字
//--------------------------------------------------------- 自写版(正确)
/*
int main()
{
int i = 0;
for (i = 1; i <= 100; i++)
{
if (i % 3 == 0)
{
printf("%d ", i);
}
}
return 0;
}
*/
//-------------------------------------------------------------方法2
/*
int main()
{
int i = 0;
for (i = 3; i <= 100; i += 3)
{
printf("%d ", i);
}
return 0;
}
*/
//---------------------------------------------------------------------------9. 最大公约数
//给定两个数,求这两个数的最大公约数
//---------------------------------------------- 自写版:只找出了所有公约数 ×
#include <math.h>
/*
void Swap(int* px, int* py)
{
int tmp = *px;
*px = *py;
*py = tmp;
}
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
//找较小值
Swap(&a, &b);
int min = b;
int i = 0;
for (i = 1; i <= min; i++)
{
if ((a % i == 0) && (b % i == 0))
{
printf("%d ", i);
}
}
return 0;
}
*/
//----------------------------------------------教学版1:暴力求解,不够高效
/*
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int min = (a < b) ? a : b; //三目操作符 找最小值
int m = min;
while (1)
{
if (a % m == 0 && b % m == 0)
{
break; // 跳出循环
}
m--;
}
printf("%d ", m);
return 0;
}
*/
//----------------------------------------------教学版2:辗转相除法(数学)
/*
int main()
{
int a = 0;
int b = 0;
int c = 0;
scanf("%d %d", &a, &b);
//求最大公约数
while (c=a%b)
{
a = b;
b = c;
}
printf("%d ", b);
return 0;
}
*/
//---------------------------------------------------------------------------10. 打印1000-2000年之间的闰年
//------------------------------------之前写过,没问题 √
/*
int main()
{
int i = 0;
int count = 0;
for (i = 1000; i <= 2000; i++)
{
if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0))
{
count++;
printf("%d ", i);
}
}
printf("\ncount=%d ", count);
return 0;
}
*/
//---------------------------------------------------------------------------11. 打印100-200之间的素数
int main()
{
int i = 0;
int count = 0;
for (i = 101; i <= 200; i += 2)
{
int flag = 1;// flag是1 表示他是素数
int j = 0;
//for (j = 2; j <= i - 1; j++)
for (j = 2; j <= sqrt(i); j++)
{
if (i % j == 0)
{
flag = 0;
//break;
}
}
if (flag == 1)
{
count++;
printf("%d ", i);
}
}
printf("\ncount=%d\n", count);
return 0;
}