赞
踩
例7-4原题:
输入一个正整数n(1<n<=10),再输入n个正整数,将它们存入数组a中。
条件1:输出最小值和它所对应的下标
条件2:将最小值与第一个数交换,输出交换后的n个数。
课本给出的代码及我的理解
#include<stdio.h> int main() { int i,index,n; //定义变量,下标,n个数 int a[10]; //定义长度为10的数组 printf("Enter n: "); //输入提示 scanf("%d",&n); //输入n printf("Enter %d integers: ",n); for(i=0;i<n;i++) scanf("%d",&a[i]); //输入n个数存入数组中 index=0; //假设第一个数最小 for(i=1;i<n;i++) //遍历数组 if(a[i]<a[index]) //进行比较 index=i; //找到更小的数,进行操作 printf("min is %d\tsub is %d\n",a[index],index); // \t表示跳格,跳到下一制表位置,就是八个空格 return 0; }
显然课本给出的代码只有条件1,其实加上条件2也不难,就像交换两杯果汁一样,先拿出第三个杯 “t” 再进行操作。
我的代码和解释
#include<stdio.h> int main() { int n; scanf("%d",&n); //输入一个正整数n int a[n],i; //定义长度为n的数组 for(i=0;i<n;i++) scanf("%d",&a[i]); //输入n个整数存入数组中 int min,m; min=a[0];m=0; //先假设首项最小,下标为0 for(i=1;i<n;i++) //遍历数组 { if(a[i]<min) //找到更小的数 { min=a[i]; m=i; //改变min m的值 } } printf("min=%d index=%d\n",min,m); //输出最小的数及相应的下标 int t; t=a[0]; a[0]=a[m]; a[m]=t; //交换最小的数和首项 for(i=0;i<n;i++) printf("%d ",a[i]); //输出交换后的数组 }
课本例子和我的 最小值 设法不太一样,课本直接一个变量搞定,我的还要多一个,算了看在数据小的份上就不理它了
有错请指出,感谢!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。