C语言程序设计-练习篇
山海自有归期,风雨自有相逢。
· 一
下面代码的结果是什么?
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;
}