求这个C语言程序的解读步骤(求详细)
#include <stdio.h>
#define SIZE 10
int main(void) {
int i, j;
int keyValue[SIZE] = {0};
int maxIndex;
int tmp;
printf("Please input %d integers:\n", SIZE);
for (i = 0; i < SIZE; ++i)
scanf("%d", &keyValue[i]);
for (i = 0; i < SIZE - 1; ++i) {
maxIndex = i;
for (j = i + 1; j < SIZE; ++j) {
if (keyValue[maxIndex] < keyValue[j])
maxIndex = j;
}
if (maxIndex != i) {
tmp = keyValue[maxIndex];
keyValue[maxIndex] = keyValue[i];
keyValue[i] = tmp;
}
}
printf("Print these intergers in ascending:\n");
for (i = 0; i < SIZE; ++i)
printf("%-4d", keyValue[i]);
printf("\n");
return 0;
}
答案:楼主也太抠门了,就给这点分……
帮你一次吧,打了好长时间的字……
#include <stdio.h>--包含头文件stdio.h
#define SIZE 10--宏定义size=10
int main(void) {
int i, j;--定义int型变量
int keyValue[SIZE] = {0};--定义int型数组,含size个(10个)单元,每个段元内容是0
int maxIndex;--定义int型变量
int tmp;--定义int型变量
printf("Please input %d integers:\n", SIZE); --输出“Please input 10 integers:”及回车换行
for (i = 0; i < SIZE; ++i) --for循环,循环10次,每次循环输入一个数到keyValue[i],i从0到9
scanf("%d", &keyValue[i]);
--以下for函数的功能是,依次假设数组第i个数是最大数,然后从第i+1个数开始向后扫描一遍数组,若有比第i个数还大的数,则将其下标--记录进变量maxIndex中,然后把这个大数和低i个数互换。然后i加一,继续上述操作,知道i=8时,后面只有一个数了,再比较一次,然--后整个排序过成结束
for (i = 0; i < SIZE - 1; ++i) {--i从0循环到8
maxIndex = i;--赋值
for (j = i + 1; j < SIZE; ++j) { --j从1到9
if (keyValue[maxIndex] < keyValue[j])
maxIndex = j;--若不等式成立,则执行赋值,也就是把最大值的下标赋给maxIndex
}
if (maxIndex != i) {--若表达式成立,则:
tmp = keyValue[maxIndex];--把数组中的最大值赋给tmp
keyValue[maxIndex] = keyValue[i];--把keyValue[i]赋给原数组中存放最大值的那个位置
keyValue[i] = tmp;--把tmp(即找出的最大值)赋keyValue[i]
}
}
printf("Print these intergers in ascending:\n");--输出“Print these intergers in ascending:”及回车换行
for (i = 0; i < SIZE; ++i)--i从0循环到9,依次输出keyValue[0]到keyValue[9]
printf("%-4d", keyValue[i]); --%-4d 代表输出的整形数据占4为,不足4为的,左对其,并右补空格
printf("\n");--最后再输出一回车换行
return 0;--程序执行完毕,无错误,返回0
}
上一个:c语言一些学习的资料从那找?
下一个:C语言 和 JAVA 语言的 区别是什么 两者