求任意多個數的最大值(利用可變引數列表)
可變引數列表是通過巨集來實現的,這些巨集定義於stdarg.h標頭檔案中。這個標頭檔案聲明瞭一個型別va_list和三個巨集va_start,va_arg,va_end.我們可以宣告一個型別為va_list的變數與這幾個巨集配合使用,訪問引數的值。
函式先宣告一個va_list型別的變數,這個變數通過呼叫va_start來初始化,第一個引數是va_list變數的名字,第二個引數是省略號前最後一個有名字的引數。初始化過程把va_list型別的變數設定為指向可變引數部分的第一個引數。
va_arg巨集接受兩個引數:va_list變數和引數列表中下一個引數的型別,返回這個引數的值,並使va_list 型別的變數指向下一個可變引數。
當訪問完最後一個可變引數之後,要呼叫va_end.
#include <stdio.h>
#include <stdarg.h>
int Max(int n, ...)
{
int i = 0;
int max = 0;
va_list arg;
va_start(arg, n);
for (i = 0; i < n; i++)
{
int val = va_arg(arg,int);
if (val > max)
{
max = val;
}
}
va_end(arg);
return max;
}
int main()
{
int ret = Max(10, 100, 2, 3, 4, 5, 6, 7, 8, 9, 10);
printf("%d\n", ret);
getchar();
return 0;
}
求任意多個數的平均值
#include<stdio.h>
#include<stdarg.h>
float average(int n, ...)
{
int count = n;
va_list val;
float sum = 0;
va_start(val, n);
while (count--)
{
sum += va_arg(val, int);
}
va_end(val);
return sum / n;
}
int main()
{
float aver = average(7, 1, 2, 3,4,5,6,7);
printf("average = %f\n", aver);
getchar();
return 0;
}
相關推薦
求任意多個數的最大值(利用可變引數列表)
可變引數列表是通過巨集來實現的,這些巨集定義於stdarg.h標頭檔案中。這個標頭檔案聲明瞭一個型別va_list和三個巨集va_start,va_arg,va_end.我們可以宣告一個型別為va_list的變數與這幾個巨集配合使用,訪問引數的值。
求三個數的最大值(利用三目運算子)
//求三個資料中的最大值 public class OperatorTest {public static void main(String[] args) {//定義三個變數int a = 20 ;int b = 50 ;int c = 30 ;//使用中間第三方變數實現
(C語言)用函式實現求三個數最大值
題目描述:從鍵盤輸入三個數,之後呼叫函式實現求三個數的最大值 程式碼實現: #include<stdio.h> int main() { int qmax(int a,int b,int c); //求最大值函式的宣告 int x,y,z; int max
遞歸求數組的最大值
spa 遞歸 logs blog clas urn pre 最大 log 1 int Max(int a[], int n) 2 { 3 if (n == 1) return a[0]; 4 return a[0]>Max(a + 1, n - 1)
如何求數組的最大值和最小值
pre 不能 for 進行 rip red arr func min 前言 取出數組中的最大值或者最小值是開發中常見的需求,但你能想出幾種方法來實現這個需求呢? Math.max JavaScript 提供了 Math.max 函數返回一組數中的最大值,用法是: Math
F. Drivers Dissatisfaction+最小生成樹+lca求樹上兩點的最大值
continue tmp rst spa 題解 去掉 題意 drive .com 題目鏈接:F. Drivers Dissatisfaction 題意:n個點,m條邊,每條邊有一個w,代表這條路的不滿意度,每一條邊我們可以花費c來使不滿意讀-1;然後問你有s,找到一棵生成
求數組中最大值
ack 函數 run 記錄 類型 () 字符數 on() span /* 所有c語言代碼,都是在LoadRunner中運行; */ Action(){ int a[]={12,34,565,23,24,667,89,98};//定義一個int數組; int len;
【POJ】3620Avoid The Lakes(求聯通塊的最大值)
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9009 Accepted:&nb
awk按照某個欄位排列,求某個列的最大值最小值
file FFF;2011-10-1;2011-10-1 0:00 ;4.57389 FFF;2011-10-1;2011-10-1 0:15 ;4.33278 FFF;2011-10-2;2011-10-2 12:45;5.95446 FFF;2011-10-2;2011
三個數最大值(if)
輸入三個數,輸出最大值; #include<stdio.h> int main() { int a,b,c,max; scanf("%d%d%d",&a,&
實驗8,編寫一個模板函式求陣列中的最大值和最小值
#include <iostream> using namespace std; template<typename T1> //模板宣告,T1為型別引數 T1 max(T1 *p1,T1 n)
求出兩數最大值的C程式
1.不使用判斷語句 #include <stdio.h> #include <math.h> double Max(double a, double b) { double q = sqrt((a-b)*(a-b)); return
求陣列每列最大值
#實現程式碼 var arr=[ [1,2,5,9], [4,6,2,8], [2,5,7,4], [3,7,8,1], [0,4,1,2] ]; //建立一個空陣列,用來接收每一列最大數所在的行數 var hang=[]
二分法求單峰函式最大值
#include <iostream> #include <boost/timer/timer.hpp> #include <ctime> #include <set> using namespace boost::timer
STL-求陣列中的最大值,最小值
這個也算是比較好用的一個模版函式吧... #include <stdio.h> #include <string.h> #include <stdlib.h> #include <iostream> #include <
遞迴求線性表的最大值
感覺沒什麼說的直接上程式碼,就是遞迴就是吊。/*************** 求線性表的最大值 ***************/ #include<iostream> #in
C#——求若干數的最大值最小值和平均值
/* (程式頭部註釋開始)* 程式的版權和版本宣告部分* Copyright (c) 2011, 煙臺大學計算機學院學生 * All rights reserved.* 檔名稱:編寫一個控制檯應用。輸入一組整數,輸出最大值、最小值和平均值。 * 作 者: 李莉* 完成日期
【Hive】多列最大值 或 陣列最大值
max()函式是針對單列多行求最大值。當我們想要對多列同行之間進行比較時,可以嘗試以下辦法: 1.先將數值轉換成陣列array(),再對陣列排序sort_array(),通過負值使其為降序; select -sort_array(array(-a,-b,-c))[0]
C語言求兩個整數最大值
上程式碼: #include<stdio.h> #define Max(a,b) ((a>b)?(a):(b)) //預處理實現 int max(int a,int b) //函式實現 {return a>b?a:b; } int main()
求數組中最大值和次大值
http 運行 else if ++ pre int mage 技術分享 分享圖片 一維數組,找出其中最大的數和第二大的數。 #include<stdio.h> void main() { int a[]={1,23,45,6,34,2,67,345,6