首先,我们由浅入深,开始我们的第一个问题:
1
输入十个数字,并一次打印。
下面是这题的解析:
#include <stdio.h>
int main() {
printf("请输入十个数:");
int number[10] = { 0 };
for (int i = 0; i < 10; i++) {
scanf_s("%d", &number[i]);
}
printf("输入完毕,开始打印!\n");
for (int i = 0; i < 10; i++) {
printf("%d ", number[i]);
}
return 0;
}
注解:这题比较轻松,只需要合理的安排数组里的值,比较重要的知识点是由for循环给每个数组的内容赋上值。
2.
输入十个数,输出最大的那个数。
第二题稍微加了一点难度,这里需要一个思想的变通,考虑max的值该如何设定。
下面是这道题的解析:
#include <stdio.h>
int main() {
printf("请输入十个数:");
int number[10] = { 0 };
for (int i = 0; i < 10; i++) {
scanf_s("%d", &number[i]);
}
int max=number[0];
for (int i =1; i < 10; i++) {
max = (max >= number[i]) ? max : number[i];
}
printf("最大值为%d\n", max);
return 0;
}
注解:这道题最大的难点在于如何考虑如何设定max的值,可能会有朋友想把max设为第一个数组和第二个数组中较大的那个,可以,但是有点画蛇添足;还有可能会凭空捏造一个最小的值,这个并不符合编程严谨的思想,所以,正解应该是将第一个max设置为这个数组的第一个值,然后由此慢慢进行比较。
3.(重点)
输入10个数,将这10个数按照从小到大排序(冒泡排序)。
第三题是最具难度的一题,其为难大家的地方在于如何设计的循环让这个循环按照你指定的顺序输入结果
下面是这道题的解析:
#include <stdio.h>
int main() {
printf("请输入十个数:");
int number[10] = { 0 };
for (int i = 0; i < 10; i++) {
scanf_s("%d", &number[i]);
}
for (int j = 0; j <9; j++) {
for (int k = 0; k < 9-j; k++) {
int max;
if (number[k] >number[k + 1]) {
max = number[k];
number[k] = number[k+1];
number[k+1] = max;
}
}
}
printf("排序后的结果是:");
for (int x = 0; x < 10; x++) {
printf( "%d ", number[x]);
}
return 0;
}
注解:其实输入十个数字放进数组里,我们已经轻车熟路了,问题是如何让这些数组中的内容按照从小到大的顺序进行排序,想到排序,想到每个数每个数作比较,循环可是我们的好帮手,很明显,这题用了嵌套循环,首先从第一个数开始比较,比较它与它后一位的关系。如果大于它就把它和后一位掉个序,在内循环中,这样一直要比到最后一位;比完之后,又开始从新的第一个数开始比较,一直比到第9个数(为什么不比到第10个数,原因是第1个数在上轮循环中已经抉择出来最大的数,并且已经放入最后,我们现在要做的是找到第二大的数)。
4.
输入十个数,将这个十个数逆序输出。
这题比较简单
#include <stdio.h>
int main() {
printf("请输入十个数:");
int number[10] = { 0 };
for (int i = 0; i < 10; i++) {
scanf_s("%d", &number[i]);
}
printf("输入完毕,开始逆序打印!\n");
for (int i = 9; i>=0; i--) {
printf("%d ", number[i]);
}
return 0;
}
注解:主要考察了for的使用,难度偏小。