一.练习
1). 打印字母图形
int main(int argc, const char *argv[])
{
int beginLetter = 'F';
int endLetter = 'A';
int offset = beginLetter - endLetter;
for (int i=beginLetter; i>= endLetter; i--) {
int currentOffset = i - endLetter;
for (int j=0; j<(offset-currentOffset); j++) {
printf("_");
}
for (int j=beginLetter; j>=(beginLetter-(offset- currentOffset)); j--) {
printf("%c", j);
}
printf("\n");
}
return 0;
}
效果展示:
2). 输出1000-10000中的四叶玫瑰数(四叶玫瑰数,各位数字的四次方和等于其本身)
#include <stdio.h>
#include <math.h>
#define SPLIT_NUMBER(num, index)(num/index%10)
int main(int argc, const char *argv[])
{
for (int i=1000; i<=10000; i++) {
int ge = SPLIT_NUMBER(i, 1);
int shi = SPLIT_NUMBER(i, 10);
int bai = SPLIT_NUMBER(i, 100);
int qian = SPLIT_NUMBER(i, 1000);
if (pow(ge, 4) + pow(shi, 4) + pow(bai, 4) + pow(qian, 4) == i) {
printf("%d是四叶玫瑰数\n", i);
}
}
return 0;
}
展示结果:
3). 有 1、2、3、4个数字,能组成多少互不相同且无重复的三位? 都是多少?
结果展示:
#include <stdio.h>
int main(int argc, const char *argv[])
{
for (int i=1; i<= 4; i++) {
for (int j=1; j<=4; j++) {
for (int k=1; k<= 4; k++) {
printf("%d ", i*100, j*10, k);
}
}
printf("\n");
}
return 0;
}
4). 输入三个整数x、y和z,请把这三个数由小到大输出
#include <stdio.h>
int main(int argc, const char *argv[])
{
int a, b, c;
printf("请输入三个数:");
scanf("%d%d%d", &a, &b, &c);
int min = a <= b ? a : b;
min = min <= c ? min : c;
int max = a >= b ? a : b;
max = max >= c ? max : c;
int mid = a + b + c - max - min;
printf("从小到大输出结果是:%d %d %d\n", min, mid, max);
return 0;
}
展示结果:
5). 思考交换两个数的方法
#include <stdio.h>
int main(int argc, const char *argv[])
{
{
int temp, a = 1, b = 2;
temp = a;
a = b;
b = temp;
printf("a === %d, b === %d\n", a, b);
}
{
int a = 1, b = 2;
a = a + b;
b = a - b;
a = a - b;
printf("a === %d, b === %d\n", a, b);
}
{
//异或
int a = 1, b= 2;
a = a^b;
b = a^b;
a = a^b;
}
return 0;
}
结果展示: