一、单选题
1、当i=0进入for循环,if语句给赋值=5,被打印,i+1=6小于10,再进入循环……此后 i 始终以i+1=6结束,因此死循环打印5
2、
A if后面可以用大括号{ }实现跟多条语句
B 不是1表示真,而是非零!=表示真
C 正确
3、switch语句不需要顺序
4、结果=0,误以为是30,但是这个switch语句中没有break,因此会从case1往下一直进行,直到default:b=0,跳出语句,返回值b=0
5、必须是整型
6、打印结果:“hello"“third”
误以为只打印“hello”,但是case1的default结束后,case1后没有break,会继续执行case2,直接打印"third"
二、编程题
打印1-100中3的倍数
//方法一 判断能否被3整除;
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//打印1-100中3的倍数
//方法一 判断能否被3整除;
int main()
{
int i = 0;
for (i = 1; i <= 100; i++)
{
if (0 == i % 3)
{
printf("%d ",i);
}
}
return 0;
//方法二 直接加等3,成为3的倍数;
//方法二 直接加等3,成为3的倍数;
int main()
{
int i = 0;
for (i = 3; i <= 100; i+=3)
{
printf("%d ", i);
}
return 0;
}
求两个数的最大公约数
最小公倍数=两数之积 / 最大公因数
//方法一 最大公约数 不会大于 两个整数中的较小值,因此采用逐次-1来尝试找到
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//求两个数的最大公约数
//方法一 最大公约数 不会大于 两个整数中的较小值,因此采用逐次-1来尝试找到
int main()
{
int i = 0;
int j = 0;
int k = 0; //令最大公约数=k
scanf("%d%d",&i,&j);
//先找两数中的较小值,即最大公约数k的最大值
int max = i < j ? i: j; //三目操作符 ?:;
for (k = max; 0 == j % k && 0 == k < i % k; k--)
{
printf("最大公约数:%d",k);
}
return 0;
}
//方法二 辗转相除法——运行结果不对
int main()
{
int i = 0;
int j = 0;
scanf("%d%d", &i, &j);
int k = 0; //令最大公约数=k
int min = i < j ? i : j; //三目操作符 ?:;
int max = i < j ? j : i;
while (min)
{
k = max % j;
max =min;
min = k;
}
printf("最大公约数:%d", k);
return 0;
}
输出1000-2000之间的闰年
//闰年;能被4整除,但不能被100整除;或者被400整除
//用操作符 &&并且 ||或者
int main()
{
int y = 0;
for (y=1000;y<= 2000; y++)
{
if (0 == y % 4 && 0 != y % 100 || 0 == y % 400)
{
printf("%d ", y);
}
}
return 0;
}
打印100-200之间的素数
// 素数 prime num—质数—只能被1和自身整除的数
// 用2->i之间的数去整除i,如果能被整除说明不是素数
//打印100-200之间的素数
int main()
{
int i = 0;
for (i = 100; i <= 200; i++)
{
int j = 0;
for (j = 2; j < i; j++)
{
if (0 == i % j)
{
break;//跳出这个for循环
}
}
if (i == j) //说明只能被本身整除
{
printf("%d ",i);
}
}
return 0;
}
//可以方法优化,引入sqrt( )函数—开平方函数 ,头文件<math.h>
//如果是非素数,可以写成两因数之积,因数其中一个必然小于等于 非素数开平方,因此从1开始试
//还可以源头优化,直接去掉偶数,因为偶数不可能是素数;
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
int main()
{
int i = 0;
for (i = 100; i <= 200; i+=2)
{
int j = 0;
int flag = 1; //给一个标记flag,假设i就是素数,flag为真
for (j = 2; j <= sqrt(i); j++) //对i开平方
{
if (0 == i % j)
{
int flag = 0; //说明i试素数不成立,跳出循环
break;//跳出这个for循环
}
}
if (flag = 1) //说明i为素数成立
{
printf("%d ", i);
}
}
return 0;
}