当前位置:编程学习 > C/C++ >>

求这个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 语言的 区别是什么 两者

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,