【C語言】使用可變引數,實現函式,求函式引數的最大值。
求若干個引數的最大值,我們假定第一個可變引數為最大值,定義為max,將之後的每一個可變引數和第一個可變引數相比較,始終在max裡存放的是最大值。
但是這裡需要注意,每一次呼叫va_arg,都會指向下一個可變引數,因此我們需要將其值儲存在臨時變數裡,以防指向錯誤。
#include <stdio.h> #include <stdlib.h> #include <stdarg.h> int MAX(int n, ...) { va_list arg; va_start(arg, n); int i = 0; int max = va_arg(arg, int); for (i = 1; i < n;i++) { int next = va_arg(arg, int); if (max < next) { max = next; } } va_end(arg); return max; } int main() { int max1 = MAX(3, 1, 2, 5); int max2 = MAX(5, 9, 4, 5, 6, 41); printf("max1=%d\n", max1); printf("max2=%d\n", max2); system("pause"); return 0; }
相關推薦
【C語言】可變引數列表剖析
一、為什麼函式要有可變引數列表 就舉一個簡單的例子來解答這個問題吧,具有一定C語言程式設計基礎的讀者,一定知道求兩個數平均值的函式,實現過程很簡單,我們只需要把兩個引數傳給函式,並用一個變數接收函式返回來的結果即可。 但是,我們都知道現實生活中,我們需要求
【C語言】自己編寫程式實現strrchr函式,即在給定字串中找特定的字元並返回最後出現的位置
//自己編寫程式實現strrchr函式,即在給定字串中找特定的字元並返回最後出現的位置 #include <stdio.h> #include <string.h> char
【C語言】對一個n*n矩陣,通過行變換,使其每行元素的平均值按遞增順序排序
#include<stdio.h> int main() { int n,a[100][100],r,c,i,j; scanf("%d",&n); for(i=0;i<n;i++) { for(j=0;j<n;j++) scanf("%d",&am
【c語言】利用指標模式實現字串函式(strlen、strcat、strstr、strcpy、strcmp、memcpy、memove)
模擬實現strlen int my_strlen(const char *p) { assert(p != NULL); char *s = p; while (*p) { p++; } r
【C語言】自己編寫程式實現strchr函式。即在給定字串中找特定的字元並返回該處指標。
<pre name="code" class="cpp">//自己編寫程式實現strchr函式。即在給定字串中找特定的字元並返回該處指標。 #include <stdio.h>
【C語言】單鏈表的實現
單鏈表 單鏈表是一種鏈式存取的資料結構,用一組地址任意的儲存單元存放線性表中的資料元素。 單鏈表結構如下: typedef int DataType; typedef struct Node { struct Node* next; /
【C語言】簡單的瞭解遞迴(求斐波那契,n的階乘,字串長度,把一個整型(無符號),轉化為字元型並打印出來)
簡單瞭解遞迴1.什麼是遞迴???程式設計程式呼叫自身的程式設計技巧稱為遞迴( recursion)遞迴做為一種演算法在程式設計語言中廣泛應用。 一個過程或函式在其定義或說明中有直接 或間接呼叫自身的一種方法,它通常把一個大型複雜的問題層層轉化為一個與原問題相似的 規模較小的問
【c語言】依次將10個數輸入,要求輸出其中最大的數
// 依次將10個數輸入,要求輸出其中最大的數 #include <stdio.h> int main() { int a[10]; int i; int temp; printf("請輸入10個數:"); for( i = 0; i < 1
【c語言】巨集(#define、#和##)與函式比較
#define -定義識別符號 ef:#define在預處理階段替代所有的Max #define Max 100 int main() { printf("%d\n", Max); system("pause"); return 0
【C語言】佇列演示(佇列的幾個函式)
/* * 佇列演示(佇列的幾個函式) * */ typedef struct { int arr[SIZE]; int head; //記錄最前面數字所在的下標 int tail; //記錄最後一個有效數字的下一個座標
【C語言】簡單思路找一個數組中重複次數最多的數
#include <stdio.h> int main() { int a[1024]; int b[1024] = {0}; //初始化每個數出現一次 int i = 0;
用c語言實現求數值的最大值。
對於求10個整數中的最大值這類問題,具體分析和解決辦法如下。 第一類:給定一個具體的陣列求陣列中的最大值 程式1: #include<stdio.h> #include<stdlib.h> int main(){ int arr[10] = { 1, 2,
輸入一個數字n,列印1到n位數的最大值。eg:n=3,代表列印1-999之間的數字
相關解決: package com.swordRefersToOffer; import java.util.Arrays; /** * @author 凌龍 * @date 2018/9/28 */ public class Test { public
【C語言】使用可變引數,實現函式,求函式引數的最大值。
求若干個引數的最大值,我們假定第一個可變引數為最大值,定義為max,將之後的每一個可變引數和第一個可變引數相比較,始終在max裡存放的是最大值。 但是這裡需要注意,每一次呼叫va_arg,都會指向下一個可變引數,因此我們需要將其值儲存在臨時變數裡,以防指向錯誤。 #includ
【C語言】用可變引數列表實現printf函式
//用可變引數列表實現printf函式 #include <stdio.h> #include <stdarg.h> void my_printf(const char *st
【c語言】用可變引數列表實現一個簡化的printf函式
//實現一個簡化的printf函式。 #include <stdarg.h> #include <string.h> void my_printf(const char *str,...) { va_list arg; //準備訪問可變引
【C語言】實現對一個8bit資料(unsigned char 型別)的指定位(例如第n位)的置0或者置1操作,並保持其他位不變
請編碼實現以下功能的函式 功能:實現對一個8bit資料(unsigned char 型別)的指定位(例如第n位)的置0或者置1操作,並保持其他位不變。 函式原型:void bit_set(unsigned char *p_data,unsigned char position,int flag)
【C語言】實現對一個8bit資料的指定位的置0或者置1操作,並保持其他位不變。
給定函式原型:void bit_set(unsigned char *p_data,unsigned char positin,int flag) 引數說明:p_data是指定的源資料;position是指定位(取值範圍為1~8);flag表示置0還是
【C語言】一個數組中只有兩個數字是出現一次,其他所有數字都出現了兩次。 找出這兩個數字,程式設計實現。
一看到這道題,我想到了之前學習過的異或。我們知道兩個相同的數字異或的結果是 0,因為在計算機中,異或運算是按照二進位制位來運算的,相同為 0 ,相異為 1。任何數與 0 異或都等於它自己。既然我們要找出來一組數中不同的兩個數字,也可以採用這種方法。 但是這次不是直接異或,
【C語言】實現對一個8bit資料(unsigned char)型別的指定位的置0或置1操作,並保持其他位不變
功能:實現對一個8bit資料(unsigned char)型別的指定位(例如第n位)的置0或置1操作,並保持其他位不變。 函式原型:void bit_set(unsigned char *p_data