重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
利用C语言在一批数中找最大数的一般方法如下:
为龙泉驿等地区用户提供了全套网页设计制作服务,及龙泉驿网站建设行业解决方案。主营业务为成都网站设计、成都网站制作、龙泉驿网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
(1)将数据存入一个一维数组中,例如存入a数组中。
(2)在数组中找最大值(假设用变量max存放最大值)。首先将a[0]视为最大数,即首先使max=a[0]。将除a[0]之外的其他所有元素(用a[i]表示)逐个与max比较,若a[i]max,则a[i]为目前的最大数,使max=a[i]。在所有元素比较完之后,max即为最大数。
(3)输出最大数(max的值)。
这个问题涉及C语言for循环嵌套和一维数组内容,以6个数为例,具体程序如下:
#includestdio.h
int main(void)
{
int a[6],i,max;
for(i=0;i6;i++) //将6个数输入a数组
scanf("%d",a[i]);
max=a[0]; //首先将a[0]视为最大数,将a[0]存入max
for(i=1;i6;i++) //将其余5个数与max比较,大者存入max
if(a[i]max) max=a[i];
printf("max=%d\n",max); //输出最大值
return 0;
}
程序运行结果:
10 2 14 6 5 11
max=14
扩展资料:
一维数组是最简单的数组,其逻辑结构是线性表。要使用一维数组,需经过定义、初始化和应用等过程。
数组声明:
(1)在数组的声明格式里,“数据类型”是声明数组元素的数据类型,可以是java语言中任意的数据类型,包括简单类型和结构类型。“数组名”是用来统一这些相同数据类型的名称,其命名规则和变量的命名规则相同。
(2)数组声明之后,接下来便是要分配数组所需要的内存,这时必须用运算符new,其中“个数”是告诉编译器,所声明的数组要存放多少个元素,所以new运算符是通知编译器根据括号里的个数,在内存中分配一块空间供该数组使用。
利用new运算符为数组元素分配内存空间的方式称为动态分配方式。
举例:
int[]x; //声明名称为x的int型数组
x=new int[10]; //x数组中包含有10个元素,并为这10个元素分配内存空间
在声明数组时,也可以将两个语句合并成一行,格式如下:
数据类型[]数组名= new 数据类型[个数];
利用这种格式在声明数组的同时,也分配一块内存供数组使用。如上面的例子可以写成:
int[]x = new int [10];
等号左边的int[]x相当于定义了一个特殊的变量x,x的数据类型是一个对int型数组对象的引用,x就是一个数组的引用变量,其引用的数组元素个数不定。
等号右边的new int[10]就是在堆内存中创建一个具有10个int型变量的数组对象。int[]x = new int [10];就是将右边的数组对象赋值给左边的数组引用变量。
参考资料:数组_百度百科
#includestdio.h
int max(int n)
{int i,x,f;
scanf("%d",f);
for(i=1;in;i++)
{scanf("%d",x);
if(xf)f=x;
}
return f;
}
int main()
{int n;
printf("有几个数:");
scanf("%d",n);
printf("其中最大的数是:%d\n",max(n));
return 0;
}
#includestdio.h
int min;
int maxmin(int n)
{int i,x,f;
scanf("%d",f);
min=f;
for(i=1;in;i++)
{scanf("%d",x);
if(xf)f=x;
else if(xmin)min=x;
}
return f;
}
int main()
{int n,mm;
printf("有几个数:");
scanf("%d",n);
mm=maxmin(n);
printf("其中最大的数是:%d\n最小的数是:%d\n",mm,min);
return 0;
}
思路:首先设置最大最小的值都是数组第一个数,然后遍历数组,出现比当前最大值大的,修改最大值为这个数。出现比最小值小的,修改最小值为这个数。
代码
#include stdio.h
//为了方便返回,使用结构体存储最大值和最小值
typedef struct {
int Max;
int Min;
}MaxMin;
//函数参数array:数组,length:数组长度。
//这里其实可以把最大值最小值作为指针传进去的。
MaxMin GetMaxMin(int *array, int length)
{
int i;
MaxMin maxMin;
if (length = 0)
return maxMin;
//初始化最大值和最小值为数组第一个数
maxMin.Max = array[0];
maxMin.Min = array[0];
for (i = 0; i length; i++) {
if (array[i] = maxMin.Max)
maxMin.Max = array[i]; //比当前最大值大,修改最大值
if (array[i] = maxMin.Min)
maxMin.Min = array[i]; //比当前最小值小,修改最小值
}
return maxMin;
}
//主函数测试
int main() {
int length;
int i;
int *array;
printf("input length of array:");
scanf("%d", length);
array = (int *)malloc(sizeof(int)*length);
for (i = 0; i length; i++) {
printf("input data of array(index %d):", i + 1);
scanf("%d", array + i);
}
MaxMin maxMin = GetMaxMin(array, length);
printf("Max:%d,Min:%d", maxMin.Max, maxMin.Min);
return 0;
}
3. 运行结果
//随手写的,算法可能不是最佳
#include stdio.h
#include stdlib.h
#include "string.h"
int* num;
char s[100]={"\0"};
void get_max(int len)
{
int max=num[0];
int i;
for(i=1;ilen;i++)
{
if(maxnum[i])
{
max=num[i];
}
}
printf("\n最大数为:%d",max);
}
void char2num()
{
int n=0;
char c[10]={"\0"};
int i;
int j=0;
s[strlen(s)]=',';
for(i=0;istrlen(s);i++)
{
if(s[i]==',')
{
n++;
}
}
num=(int*)malloc(sizeof(int)*n); //动态定义int数组
int n_pos=0;
for(i=0;istrlen(s);i++)
{
if(s[i]==' ')
{
continue;
}
if(s[i]!=',')
{
c[j++]=s[i];
}
else
{
num[n_pos++]=atoi(c);
j=0;
memset(c,'\0',10);
continue;
}
}
get_max(n_pos); //寻找最大数
}
int main(int argc, char *argv[]) {
printf("请输入n个数(用逗号分隔):");
scanf("%s",s); //初始输入的数据接收为字符数组
char2num(); //把字符数组转化为int数组
return 0;
}
求最大值:
#includestdio.h
void main()
{
int n,max,min,a,i;
printf("请输入N的值:");
scanf("%d",n);
for(i=1;i=n;i++)
{
printf("请输入一个数:");
scanf("%d",a);
if(i==1)
{
max=min=a;
}
if(i!=1maxa)
max=a;
if(i!=1mina)
min=a;
}
printf("这%d个数中最大值是",n,max);
}
求阶乘:
#include "stdio.h"
void main()
{
int fun(int x);
float jc(int x);
int n,i;
float k;
printf("type in the n!\n");
scanf("%d",n);
i=fun (n);
k=jc (n);
printf("%d! is %10.0f\nthere are %d zero!\n",n,k,i);
}
int fun(int x)
{
int i=0;
while(x!=0)
{
x=x/5;
i+=x;
}
return (i);
}
float jc(int x)
{
float i;
if (x==0||x==1)
i=1;
else
i=jc(x-1)*x;
return (i);
}
#include "stdio.h"
struct number
{
float value;//值
struct number *next;//指向后继
};
struct number *head = NULL;//头指针
struct number *p1;//活动指针
struct number *p2;//尾指针
float max,min,sum,count;//最大值、最小值、和、数量
//输入数值
void input()
{
for(;;)
{
//申请内存空间并赋值
p1 = (struct number*)malloc(sizeof(struct number));
scanf("%f",p1-value);
p1-next = NULL;
//判断是否等于-1
if(p1-value == -1)
{
free(p1);
return;
}
//判断头指针是否为空
if(head == NULL)
head = p1;
else
p2-next = p1;
p2 = p1;
}
}
//求最大值、最小值、和、数量
void maxMin()
{
//初始化三个值
p1 = head;
max = min = p1-value;
sum = count = 0;
while(p1 != NULL)
{
//找最大值
if(p1-value max)
max = p1-value;
//找最小值
if(p1-value min)
min = p1-value;
sum += p1-value;//求和
count++;//数量
p1 = p1-next;
}
}
//输出所有值
void print()
{
p1 = head;
while(p1 != NULL)
{
printf("%g ",p1-value);
p1 = p1-next;
}
printf("\n");
}
int main()
{
printf("请连续输入n个整数,输入-1结束\n");
input();
printf("**************\n");
maxMin();
printf("最大值 = %g\n",max);
printf("最小值 = %g\n",min);
printf("平均值 = %g\n",sum/count);
}