编写简单的单片机c语言程序 1、指定数组找最大值 2、排序

如题所述

#include<stdio.h>

#defineNR10//数组元素个数

/*从主函数开始*/

intmain(intargc,char**argv)

{

intar[NR];

inti;

fprintf(stdout,"请输入%d个整数:\n",NR);

/*获取并检查用户输入*/

while(1)

{

/*循环获取NR个数据*/

for(i=0;i<NR;i++)

{

if(fscanf(stdin,"%d",&ar[i])!=1)

{

fprintf(stdout,"输入错误!请重新输入:\n");

while(getchar()!='\n');//丢弃多余非法字符

break;//打破内层for循环

}

}

/*检查是否获取到NR个数据*/

if(i!=NR)

{

continue;

}

else

{

break;

}

}

/*查找最大值和最小值*/

intmax,min;

max=ar[0];//假定第一个数为最大值

min=ar[0];//同时假定也第一个数为最大值

/*从第二个数开始比较查找最值*/

for(i=1;i<NR;i++)

{

if(ar[i]>max)//最大值

{

max=ar[i];

}

if(ar[i]<min)//最小值,不能使用elseif,否则会跳过比较

{

min=ar[i];

}

}

fprintf(stdout,"最大值为:%d最小值为:%d\n",max,min);

/*接下来:查找第二大值*/

intsecond;

/*先获取前两个数的第一大和第二大值*/

ar[0]>ar[1]?(max=ar[0],second=ar[1]):\

(max=ar[1],second=ar[0]);

/*从第2个数开始比较查找*/

for(i=2;i<NR;i++)

{

if(ar[i]>max)//查找最大值:目的是为了比较第二大值

{

second=max;//先把最大值保存给第二大值

max=ar[i];

}

elseif(second<ar[i])//比最大值小的数再看看是否大于第二大值

{

second=ar[i];

}

}

fprintf(stdout,"第二大值为:%d\n",second);

return0;

}

扩展资料

一、c语言程序求数组内所有数的和:

1、通过索引的方式就可以访问到数组内部的元素,索引是从0到数组长度-1。

2、数组点Lenth就是数组的长度。

二、c语言程序冒泡排序:

1、比较相邻的两个元素的大小,如果第一个比第二个大就互换一下。

2、然后每一对都做如上操作,如此一来最后一个元素肯定是最大的数了。

3、除了最后一个元素,重复以上步骤。然后倒数第二个就是次大的值了

4、一次按照这个逻辑直到没有任何数字可以比较了。

参考资料来源:百度百科—c语言

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-09-28
就是一般的排序算法,与查找算法一样,这个的都不会吗

float a[3],max=0;
for(i=0;i<=2;i++)
{ printf("Please enter the mark:");
scanf("%f",&a[i]);
if(max<a[i]) { max=a[i];maxnum=i+1;}
}

printf("the number of the highest is %d\n",maxnum);
for(i=0;i<=2;i++)
if(max==a[i])
if(i+1!=maxnum)
printf("the number of the highest is %d\n",i+1);

排序
#include<stdio.h>
int sort(int num[5]);
void main()
{
int numm[5],i,a;
for (i=0;i<5;i++)
scanf("%d",&numm[i]);
sort(numm); //调用排序
for (i=0;i<5;i++)
printf("%d ",numm[i]);
}
int sort(int num[5])
{
int m,n,t;
for (m=0;m<4;m++)
for(n=m+1;n<5;n++)//冒泡排序
{
if (num[m]<num[n])
{
t=num[n];
num[n]=num[m];
num[m]=t;
}

}

return 1;

}追问

不会,女生学这个学得很吃力。求大神指点…

追答

自动化专业???? 很少用单片机来实现这个东西,,单片机是用来操控接口的。。

追问

不是,电子信息工程,刚接触单片机,就是用wave 6000软件来编写程序,以达到结结果

追答

如果不涉及到接口,与一般c语言没有什么不同的。。。

追问

这样有错麽

追答

没有错 。语言规则是一样的。。

追问

为什么在伟福上运行不了了啊

追答

#include
int main(){

float a[3],max=0;
for(i=0;i<=2;i++)
{ printf("Please enter the mark:");
scanf("%f",&a[i]);
if(max<a[i]) { max=a[i];maxnum=i+1;}
}

printf("the number of the highest is %d\n",maxnum);
for(i=0;i<=2;i++)
if(max==a[i])
if(i+1!=maxnum)
printf("the number of the highest is %d\n",i+1);

}

头都没有就想运行。

追问

恩恩,谢谢大神了

本回答被提问者采纳