C语言 数组内数字比较大小
你的代码很简单、明了,对于解决这个问题也非常合适。
书也是人写出来的,也会有瑕疵,
代码写多了以后,经常会形成一些习惯的语句写法,这是养成良好的编程习惯的必经之处,我猜想该作者就是习惯所致,要知道,在复杂数据结构中对数据进行变动的时候,作个标记是很必要的……
main() {int a[10],b[10],i,j=0,k=0,e=0; for(i=0;ib[i]) j++; else if(a[i]b %d times
a
#include
int main(){
int numbers[10] = { 10,2,3,4,5,6,9,8,7,1 };
int a,b, text, hello;
for(a=0; a<10-1; a=a+1) { //在这里进行比较的开始的代码
hello = 1; //假如剩下的元素已经被排序好了,然后接着进行下面的比较
for(b=0; b<10-1-i; b=b+1){
if(numbers[b] > numbers[b+1]){
text= numbers[b];
numbers[b] = numbers[b+1];
numbers[b+1] = text;
hello= 0;
}
}
if(hello) break;
}
for(a=0; a<10; a=a+1){
printf("%d ", numbers[a]);
}
printf("
");
return 0;
}
扩展资料:
C语言中数组元素大小的相关排序规则:
一、首先需要对数组中的元素进行排列,默认是以字符串的规则进行从小到大排序;可接收一个参数:自定义的规则相关排序。参数的具体要求如下:
1、参数首先必须是一个函数;
2、函数必须有一个明确的返回值;
3、返回值必须是number类型,但不可以是NaN。
二、排序中的具体规则:
1、首先每次从数组中挑选出两个元素传入函数中,进行比较,直到所有进行排列的元素都被挑选完毕以后就不要再进行挑选;
2、如果返回值是一个正数,就交换这彼此的位置,实现大小的正确排列;
3、如果返回值是一个负数或0,此时说明大小位置的顺序是正确的,此时就不需要交换彼此的位置。
4、默认同一字符的全角字符看做半角字符。不区分同一个字符(如日文的片假字)的半角与全角状态。相同元素,维持原序,默认区分字母大小写,同一个字符小写在前,大写在后。
注意:对数组的元素进行排序需要不断比较两个数字的大小,10个元素排序一共需要比较9次,直到所有的元素被都完完全全地被比较一次。
1、首先打开CodeBlocks。
2、创建一个新项目。项目语言,选择“c”。
3、我们将项目名称命名为“MaxNum”,然后下一步,“finish”。
4、打开 “main.c”文件。
5、用数组将10个数存入其中即可。开始,创建一个整型(int)有10个空间的数组nums。然后,定义一个循环变量i。
6、在for循环中,用来接收用户输入的数字,将其存到数组中。其中for循环10次。
7、完成以上代码,就是完成了接收10个数的功能完成了。
8、我们用for循环十次。同时每次循环,判断max与相应的的数进行比较。如果max小于那个数,那么就将那个数赋值给max。以此类推,循环10次就是 max和所有数都进行了比较和优选。
#include<stdio.h>
voidmain()
{
inta[10]={10,2,3,4,5,6,9,8,7,1};
inti,j,t;
for(j=0;j<10;j++)
for(i=0;i<10-1-j;i++)
if(a[i]>a[i+1])/*由小到大,由大到小时改为<*/
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
for(i=0;i<10;i++)
printf("%d",a[i]);
}
扩展资料
C语言数组长度获取
#include<stdio.h>
#include<stdlib.h>
#defineGET_ARRAY_LEN(array,len){len=(sizeof(array)/sizeof(array[0]));}
//定义一个带参数的宏,将数组长度存储在变量len中
intmain()
{
chara[]={'1','2','3','4'};
intlen;
GET_ARRAY_LEN(a,len)
//调用预定义的宏,取得数组a的长度,并将其存储在变量len中
printf("%d
",len);
system("pause");
return0;
}
#include<stdio.h>
int main()
{
int a[100]={0};
int tmp=0;
int i,j;
int num;
printf("please input your num:");
scanf("%d",&num);
for(i=0;i<num;i++)
scanf("%d",&a[i]);
for(j=0;j<num;j++){ //此处是关键:要依次比较一趟
for(i=0;i<num-j;i++){ //每一个循环都要依次比较一趟
if(a[i]<a[i+1]){
tmp=a[i];
a[i]=a[i+1];
a[i+1]=tmp;
}
}
}
for(i=0;i<num;i++)
printf("%d
",a[i]);
return 0;
}
冒泡法的程序是这样的:
#include <stdio.h>
#define N 6
main()
{
int a[10];
int i,j,t;
printf("input N numbers:\n");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<N-1;j++)/*进行N-1次循环,实现N-1次比较,设置N=6,则需要进行5次比较,即一个数只要跟其他5个数比较*/
for(i=0;i<N-1-j;i++)/*在每一趟中进行N-1-j次比较*/
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
for(i=0;i<N;i++)
printf("%d ",a[i]);
}
j=0时,经过i=0,1,2,3,4的循环比较,最大的数已经放到了a[5]里面;
j=1时,因为最大的数已经在a[5]里面了,剩下的5个数只需进行N-1-j=4次的比较,把第二大的数放到a[4]里面;
j=2时,最大的数和第二大的数分别在a[5]、a[4]里面了,剩下的4个数所以只需进行N-1-j=3次比较,把第三大的数放到a[3]里面;
j=3时,第一、第二、第三大的数分别在a[5]、a[4]、a[3]里面,剩下的3个数所以只需进行N-1-j=2次比较,把第四大的数放到a[2]里面;
j=4时,第一、第二、第三、第四大的数分别在a[5]、a[4]、a[3]、a[2]里面,剩下的两个数只需进行N-1-j=1次比较就可以把第五大的数放到a[1]里面,然后a[0]存最小的数。
void bubble_sort(int *x,int n)
{
int j,k,h,t;
for (h=n-1,h=k; h>0; h--) /*循环到没有比较范围*/
{
for (j=0,k=0; j<h; j++) /*每次预置k=0,循环扫描后更新k*/
{
if (*(x+j) > *(x+j+1)) /*大的放在后面,小的放到前面*/
{
t = *(x+j);
*(x+j) = *(x+j+1);
*(x+j+1) = t; /*完成交换*/
k = j; /*保存最后下沉的位置。这样k后面的都是排序排好了的。*/
}
}
}
}
int main()
{
int t,i,a[N];
for(i=0;i<N;i++)
scanf("%d",&a[i]);
bubble_sort(a, 10);
for(i=0;i<10;i++)
printf("%d,",a[i]);
}
乾琛复方: #include <stdio.h> void BubbleSort(int *a, int length) {int i, j,temp;for(i = 0; i < length-1; i ++){ for(j = 0; j < length-1-i; j++)if(a[j] > a[j+1]){temp = a[j];a[j] = a[j+1];a[j+1] = temp; } }} int main(void) {int a[3];int i;printf("请输入三个数,空格...
灵台县19482974509: 谁教我有C语言编写比较3个数的大小. - ?
乾琛复方: #include<stdio.h>void main() {int A,B,C; scanf("%d%d%d",&A,&B,&C);if(A<B)A=B;if(A<C)A=C; printf("%d\n",A);}
灵台县19482974509: C语言3个数比较大小! - ?
乾琛复方: 输出最大值:#include <stdio.h> void main() { int a,b,c,Max; scanf("%d %d %d",&a,&b,&c); if (a <= b) Max = b; else Max = a; if (Max <= c) printf("%d",c); else printf("%d",Max); }输入三个数(空格隔开),先比较前两个数大小,将较大的...
灵台县19482974509: C语言数组怎么比较大小 - ?
乾琛复方: 不知道你讲的是不是这个意思比如 a[i] 里放100 b[j]里放200你是想比较 i j 的大小?那很简单呀int i=0,j=0;while(a[i]!=100) i++;while(b[i]!=200) j++;这样就得出下标值了,后面的比较就不用说了吧
灵台县19482974509: c语言二维数组比较大小 - ?
乾琛复方: if(i==j==0){max=x;min=x;} 中的 i==j==0 等价于(i==j)==0 所以当i=1 j=0时(即倒数第二轮) 其值为0==0 即1 所以 max和min被重新赋值了 这样只能比较最后两个 应该改成 if(i==0&&j==0){max=x;min=x;} 其他不变
灵台县19482974509: c语言 函数 数组 比较大小 - ?
乾琛复方: 我知道你为什么会错了,因为你输入数据的方式不对,正确的如:(3.5,4.5\n)就可以了,你么有好的习惯,也有么调式的经验,如果你输入错误如:(3.5 4,5)或者(3,5 回车 4,5) 就会出错,因为你的b变量没有得到数据或者数据溢出了,调...
灵台县19482974509: C语言中怎么比较两个数组中对应位置的数的大小 - ?
乾琛复方: #include#include#includeint main(){int i=0,j=0;int str1[]={00000000000000000000000000000000};int str2[]={11111111111111111111111111111111111111111111};while(str1[i++]);while(str1[j++]);if(i>j)printf("0的个数多余1的个数");else printf("1的个数多余0的个数");} -物联网校企联盟技术部
灵台县19482974509: C语言 比较三个数大小 - ?
乾琛复方: 您好!很高兴为您解答.程序的最后一行错了.以下是改正后的代码: #include <stdio.h> void main() {float a,b,c,x,y;printf("please input a,b,c\n");scanf("%f%f%f",&a,&b,&c);{if(a>b)x=a;else x=b;if(x>c)y=x;else y=c;}printf("max=%f\n",y); }望采纳~
灵台县19482974509: C语言:编写一个程序实现3个数之间大小的比较.将最大的数输出 - ?
乾琛复方: #include<stdio.h> main() { int a,b,c,d; printf("输入3个数:");//输入3个数 scanf("%d%d%d",&a &b &c);if(a>b)//比较大小并输出较大在数 d=a ; else d=b; if(d>c) printf("%d",d); else printf("%d",c); }
灵台县19482974509: C语言中用数组如何对数据进行大小排列,可有程序参考?谢谢! - ?
乾琛复方: 我把你的程序作了如下修改:#define NUM 10 main() { int a[NUM],i,j,r,temp; printf("please input %d number\n",NUM); for(i=0;i<NUM;i++) scanf("%d",&a[i]); for(i=0;i<NUM-1;i++) { /*我这里没有使用r=i*/ for(j=i+1;j<NUM-1;j++) /*你的程序问...