山海自有归期,风雨自有相逢。
· 一
下面代码的结果是什么?
int main()
{
int i = 0;
for (i = 0; i < 10; i++)
{
if (i = 5) //此处为赋值,i = 5表达式结果为5
printf("%d ", i); //表达式为真,i = 5
}
return 0;
}
for循环i = 0进来,在if语句处i赋值为5,打印一个5
然后i++使得i = 6再次进入循环,在if语句处继续赋值为5,打印一个5;
照此进入死循环,一直打印5。

· 二
1.switch语句中default子句可以放在任意位置
2.switch语句中case后的表达式只能是整型常量表达式(char也属于整型家族,因为字符存储的是ASCII值)
3.switch语句中case表达式不要求顺序
4.if语句是一种分支语句,可以实现单分支,也可以实现多分支
· 三(从小到大输出)
写代码将三个整数按从大到小输出
例如:
输入: 2 3 1
输出:3 2 1
法一:
#include <stdio.h>
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;
}
法二:
#include <sdtio.h>
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;
}
· 四
写一个代码打印1~100之间所以3的倍数
法一
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 100; i++)
{
if (i % 3 == 0)
{
printf("%d ", i);
}
}
return 0;
}
法二:
#include <>stdio.h>
int main()
{
int i = 0;
for (i = 3; i <= 100; i += 3)
{
printf("%d ", i);
}
return 0;
}
· 五
给定两个数,求这两个数的最大公约数
法一(暴力求解,不够高效):
#include <stdio.h>
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\n", m);
return 0;
}

法二(辗转相除法):
#include <stdio.h>
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\n", b);
return 0;
}




















