欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

C語言函數(shù)題模板 C語言函數(shù)模板

C語言函數(shù)編程題

修改后的C語言程序:

專注于為中小企業(yè)提供網(wǎng)站設計制作、成都網(wǎng)站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)隆陽免費做網(wǎng)站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了1000多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉變。

#include?stdio.h?

void?triangle(int?g)

{

int?n=1,?m; /*?修改處1?*/

for(n;n=g;?n++)

{

for(m=1;m=2*n-1;m++) /*?修改處2?*/

putchar('*');

putchar('\n');

}

}

void?rectangle(int?g)

{

int?n=1,?m; /*?修改處3?*/

for(n;n=g;n++)

{

for(m=1;m=3;m++) /*?修改處4?*/

putchar('*');

putchar('\n');

}

}

int?main()

{

int?i,k;

printf("請輸入行數(shù)(大于3):");

scanf("%d",i);

printf("請選擇圖形:1---三角形??\t2---矩形\t3---小旗?:");

scanf("%d",k);

if(k==1)

{?

triangle(i);

}

if(k==2)

{?

rectangle(i);

}

if(k==3)

{?

triangle(i);

rectangle(i);

}

return?0;

}

C語言函數(shù)模板問題

首先,C沒有函數(shù)模版。C++才有。

其次,template class T是函數(shù)聲明的一部分,所以下面函數(shù)實現(xiàn)應該是:

template class T

void swap(T a,T b){

int temp;

temp=a;

a=b;

b=temp;

}

最后,#include iostream,在標準的C++函數(shù)中,std的域中已經(jīng)有一個swap函數(shù)。

而且前面也using namespace了。函數(shù)聲明重復。

兩個辦法:

1 swap(i,j);改為 ::swap(i,j); //全局化。

2 swap改個名字。

在c語言中如何實現(xiàn)函數(shù)模板

各種用 C 語言實現(xiàn)的模板可能在使用形式上有所不同。現(xiàn)以一個求和函數(shù) Sum 為例,用 C++ Template 可寫如下:

template R Sum(const T *array, int n)

{

R sum = 0;

for (int i = 0 ; i n ; ++i)

sum += i;

return sum;

}

如果不是內(nèi)置類型,該模板隱式地需要 有R R::operator+=(T)運算符可用。

1. 使用函數(shù)指針作為 Functor 替換者

Typedef struct tagAddClass

{

Void (*add)(char* r1, const char* r2);

Int elemSize;

Char sum[MAX_ELEM_SIZE];

} AddClass;

void Sum(AddClass* self, const char* array, int n)

{

for (int i = 0 ; i n ; ++i)

self-add(self-sum, array + i*self-elemSize);

}

使用時:

Void AddInt(char* r1, const char* r2) {

*(long*)r1 += *(int*)r2; }

AddClass addClass = {AddInt, 2, 0 };

Int array[100];

Read(array);

Sum(addClass, array, 100); …..

2. 用宏作為Functor的替換者

#define GenSumFun(SumFunName, Add, RetType, ElemType)

RetType SumFunName (const ElemType *array, int n) \

{

RetType sum = 0;

for (int i = 0 ; i n ; ++i)

Add(sum, i);

return sum; }

使用時:

#define AddInt(x, y) ((x) += (y))

GenSumFun(SumInt, AddInt, long, int) …..

Int array[100];

Read(array);

Long sum = SumInt(array, 100); …..

3. 所有可替換參數(shù)均為宏

至少需要一個額外的文件(實現(xiàn)文件)為 impsum.c

/* impsum.c */

RetType FunName(const ElemType *array, int n)

{

RetType sum = 0;

for (int i = 0 ; i n ; ++i)

Add(sum, i);

return sum; }

使用時:

#undef RetType

#undef FunName

#undef ElemType

#undef Add

#define AddInt(x, y) ((x) += (y))

#define RetType long

#define FunName SumInt

#define ElemType int

#define Add AddInt

#include impsum.c …..

Int array[100];

Read(array);

Long sum = SumInt(array, 100);

4. 總結:

第一種方法,易于跟蹤調試,但是效率低下,適用于對可變函數(shù)(函數(shù)指針)的效率要求不高,但程序出錯的可能性較大(復雜),模板函數(shù)(Sum)本身很復雜,模板參數(shù)也比較復雜(add)的場合。

第二種方法,效率高,但很難跟蹤調試,在模板函數(shù)和模板參數(shù)本身都很復雜的時候更是如此。

第三種方法,是我最近幾天才想出的,我認為是最好的,在模板參數(shù)(Add)比較復雜時可以用函數(shù)(第二種也可以如此),簡單時可以用宏,并且,易于調試。在模板函數(shù)本身很復雜,而模板參數(shù)比較簡單時更為優(yōu)越。但是,可能有點繁瑣。

C語言函數(shù)題,求解!

#include?stdio.h

void?inputArray(int?a[][4],??int?n)

{

int?i,j;

for?(i?=?0;?i??n;?++i){

for?(j?=?0;?j??4;?++j){

scanf?("%d",?a[i][j]);

}

}

}

void?findMax(int?a[][4],?int?n)

{

int?i,?j,?maxv?=?a[0][0],?px?=?0,?py?=?0;

for?(i?=?0;?i??n;?++i){

for?(j?=?0;?j??4;?++j){

if?(maxv??a[i][j]){

maxv?=?a[i][j];

px?=?i;

py?=?j;

}

}

}

printf?("max(%d,%d)=%d\n",?px,?py,?maxv);

}

void?findMin(int?a[][4],?int?n)

{

int?i,?j,?minv?=?a[0][0],?px?=?0,?py?=?0;

for?(i?=?0;?i??n;?++i){

for?(j?=?0;?j??4;?++j){

if?(minv??a[i][j]){

minv?=?a[i][j];

px?=?i;

py?=?j;

}

}

}

printf?("min(%d,%d)=%d\n",?px,?py,?minv);

}

int?main(void)

{

int?a[3][4];

inputArray(a,?3);

findMax(a,?3);

findMin(a,?3);

return?0;

}

網(wǎng)頁名稱:C語言函數(shù)題模板 C語言函數(shù)模板
網(wǎng)頁URL:http://chinadenli.net/article0/hijioo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供響應式網(wǎng)站網(wǎng)站導航網(wǎng)站維護軟件開發(fā)網(wǎng)站改版網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設