用c语言 任意输入n个数,输出其中最大数和最小数,并输出它们在序列中的位置
#include<stdio.h>
#include<stdlib.h>
intmain()
{
inti,j,n,max_pos=0,min_pos=0;
int*a;
printf("Pleaseinputmaximumnumber:");
scanf("%d",&n);
a=(int*)malloc(sizeof(int)*n);
printf("Pleaseinput%dnumbersnow:\n",n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
if(a[max_pos]<a[i])
max_pos=i;
if(a[min_pos]>a[i])
min_pos=i;
}
printf("Themaximumnumberis%d,itspositionis%d\n",a[max_pos],max_pos+1);//从第1开始算,所以第0要+1
printf("Theminimumnumberis%d,itspositionis%d\n",a[min_pos],min_pos+1);//从第1开始算,所以第0要+1
free(a);
return0;
}
扩展资料
C语言判断三个数中的最大数:
#include<stdio.h>
intmain()
{
doublen1,n2,n3;
printf("请输入三个数,以空格分隔:");
scanf("%lf%lf%lf",&n1,&n2,&n3);
if(n1>=n2&&n1>=n3)
printf("%.2f是最大数。",n1);
if(n2>=n1&&n2>=n3)
printf("%.2f是最大数。",n2);
if(n3>=n1&&n3>=n2)
printf("%.2f是最大数。",n3);
return0;
}
2013-04-17
int main(void)
{
int num[50];
int max,min;
int i;
int n,nn,mm;
printf("请输入要输入多少个数:\n");
scanf("%d",&n);
printf("请输入%d多少个数:\n",n);
for(i = 0; i<n; i++)
{
scanf("%d",&num[i]);
}
max=min=num[0];
for(i = 1; i < n; i++)
{
if(num[i]<min)
{
min = num[i];
nn = i;
}
else if(num[i]>max)
{
max = num[i];
mm = i;
}
}
printf("最大值是:%d 它在序列中的位置是第%d个元素\n",max,mm+1);
printf("最小值是:%d 它在序列中的位置是第%d个元素\n",min,nn+1);
return 0;
}
Main()
{
int x,max;
printf(“输入一批非零整数,以0为结束符”);
scanf(“%d”,&x);
max = x; min=x;/*现将第一个数赋值给变量max,min*/
for(i=2; x!=0 ;i++)
{
scanf(“%d”,&x);
if(max<x)
max=x; /*输入值比变量max大,用当前值替换max*/
maxindex=i;
}
if(min>x)
min=x; /*输入值比变量max大,用当前值替换max*/
minindex=i;
}
printf(“max=%d\n 在数组的第%d位\n”,max,maxindex); /*输出最大值*/
printf(“max=%d\n 在数组的第%d位\n”,min,minindex); /*输出最小值*/
}
int main()
{
int a[100];
int n,max,maxi,min,mini,i;
printf("请输入数组的个数n= ");
scanf("%d",&n);
printf("输入数组:\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
max=a[0];
maxi=1;
min=a[0];
mini=1;
for(i=0;i<n;i++)
{
if(max<a[i])
{
max=a[i];
maxi=i+1;
}
if(min>a[i])
{
min=a[i];
mini=i+1;
}
}
printf("最大数是:%d,位置:%d\n",max,maxi);
printf("最小数是:%d,位置:%d\n",min,mini);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUFSIZE 4096
struct result {
int max;
int max_pos;
int min;
int min_pos;
};
int isnum(char *s){
if(s == NULL) {
return 0;
}
char *s1 = s;
while(*s1 != '\0') {
if(*s1 != '\n' && !isdigit(*s1)) {
return 0;
}
s1++;
}
return 1;
}
void find(char *s, struct result *ret) {
if(ret == NULL) {
fputs("require argument <result *>,not NULL\n",stderr);
return;
}
char *sep=" \t";
char *next = strtok(s,sep);
int inext,pos=1,f=0;
ret->max=0;
ret->max_pos=-1;
ret->min=0;
ret->min_pos=-1;
while(next != NULL) {
if( isnum(next) ) {
inext = atoi(next);
if(!f) {
ret->max=inext;
ret->max_pos=pos;
ret->min=inext;
ret->min_pos=pos;
f=1;
}else{
if(ret->max < inext) {
ret->max = inext;
ret->max_pos = pos;
}
if(ret->min > inext) {
ret->min = inext;
ret->min_pos = pos;
}
}
}
pos++;
next = strtok(NULL,sep);
}
}
int main(void) {
struct result ret;
char buf[BUFSIZE];
printf("input any number sepereted by 'space' or 'tab'\n");
fgets(buf,sizeof(buf),stdin);
find(buf,&ret);
if(ret.max_pos < 0){
printf("your input is incorrect\n");
}else{
printf("max=%d (pos %d),min=%d (pos %d)\n",ret.max,ret.max_pos,ret.min,ret.min_pos);
}
exit(0);
}