當前位置:首頁 » 編程語言 » C語言宏統計參數個數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

C語言宏統計參數個數

發布時間: 2023-01-14 06:38:48

① 關於標准c語言參數個數的問題

標准C不像C++一樣支持可變形參數量?
那printf算什麼?

是四個參數,要是加逗號不可能通過編譯。
宏不就是替代嗎?
c++的話,就是
CvMat cvMat( int rows, int cols, int type, void* data =NULL)//預設參數
{
}
c的話,沒有默認參數,所以調用時最後一個參數必須的
CvMat cvMat( int rows, int cols, int type, void* data)
{
}

② 請問c語言當中,如何統計數字各自出現的次數

實現代碼:

#include <stdio.h>

int main() {

int num = 0, i = 0;

printf("請輸入一個整數:");

scanf("%d", &num);

int array[10] = {};

while(num) {

array[num % 10]++; //讓數組下標代表所判斷的數字

num /= 10;

}

for (i = 0; i < 10; i++) {

if (array[i] != 0)

printf ("%d有%d個 ", i, array[i]);

return 0;

}

(2)C語言宏統計參數個數擴展閱讀:

printf用法:

printf()函數的調用格式為:printf("&lt;格式化字元串&gt;",&lt;參量表&gt;)。

其中格式化字元串包括兩部分內容:一部分是正常字元,這些字元將按原樣輸出;另一部分是格式化規定字元,以"%"開始,後跟一個或幾個規定字元,用來確定輸出內容格式。

參量表是需要輸出的一系列參數,其個數必須與格式化字元串所說明的輸出參數個數一樣多,各參數之間用","分開,且順序一一對應,否則將會出現意想不到的錯誤。

比如:

inta=1234;

printf("a=%d\n",a);

輸出結果為a=1234。

③ c語言輸入一行字元串,如何統計其中的字母和數字的個數

要統計英文字母,空格,數字和其他字元的個數,代碼如下:

#include&lt;stdio.h&gt;

#include&lt;stdlib.h&gt;

int main()

{

char c;

int letters=0;

int space=0;

int digit=0;

int other=0;

printf("請輸入一行字元:&gt;");

while((c=getchar())!=' ')

{

if((c&gt;='a'&&c&lt;='z')||(c&gt;='A'&&c&lt;='Z'))

{

letters++;

}

else if(''==c)

{

space++;

}

else if(c&gt;='0'&&c&lt;='9')

{

digit++;

}

else

{

other++;

}

}

printf("字母的個數:&gt;%d 空格的個數:&gt;%d

數字的個數:&gt;%d 其他字元的個數:&gt;%d ",

letters,space,digit,other);

system("pause");

return 0;

}

(3)C語言宏統計參數個數擴展閱讀:

include用法:

#include命令預處理命令的一種,預處理命令可以將別的源代碼內容插入到所指定的位置;可以標識出只有在特定條件下才會被編譯的某一段程序代碼;可以定義類似標識符功能的宏,在編譯時,預處理器會用別的文本取代該宏。

插入頭文件的內容

#include命令告訴預處理器將指定頭文件的內容插入到預處理器命令的相應位置。有兩種方式可以指定插入頭文件:

1、#include&lt;文件名&gt;

2、#include"文件名"

如果需要包含標准庫頭文件或者實現版本所提供的頭文件,應該使用第一種格式。如下例所示:

#include&lt;math.h&gt;//一些數學函數的原型,以及相關的類型和宏

如果需要包含針對程序所開發的源文件,則應該使用第二種格式。

採用#include命令所插入的文件,通常文件擴展名是.h,文件包括函數原型、宏定義和類型定義。只要使用#include命令,這些定義就可被任何源文件使用。如下例所示:

#include"myproject.h"//用在當前項目中的函數原型、類型定義和宏

你可以在#include命令中使用宏。如果使用宏,該宏的取代結果必須確保生成正確的#include命令。例1展示了這樣的#include命令。

【例1】在#include命令中的宏

#ifdef _DEBUG_

#define MY_HEADER"myProject_dbg.h"

#else

#define MY_HEADER"myProject.h"

#endif

#include MY_HEADER

當上述程序代碼進入預處理時,如果_DEBUG_宏已被定義,那麼預處理器會插入myProject_dbg.h的內容;如果還沒定義,則插入myProject.h的內容。

④ C語言:指針實現從鍵盤輸入若干數據整數(零表示結束),統計出數據個數,以及最大值、最小值和平均值

#include <stdio.h>
int Input(int s[])
{
int n=0;
scanf("%d",s);
while(*s!=0)
{
n++;s++;
scanf("%d",s);
}
return n;
}
void statistics(int n, int s[], int *max, int *min, float *avg)
{
*max=*min=*s;
*avg=0.0;
for(;*s!=0;s++)
{
if(*s>*max) *max=*s;
else if(*s<*min) *min=*s;
*avg+=*s;
}
*avg/=n;
}
int main(int argc, char *argv[])
{
int s[200],Num,Max,Min,n;
float Avg;
Num=Input(s);
statistics(Num,s,&Max,&Min,&Avg);
printf("Num=%d\nMax=%d\nMin=%d\nAvg=%.3f\n",Num,Max,Min,Avg);
return 0;
}

⑤ C語言編程:編寫函數,統計字元串中字母、數字、空格和其他字元的個數。

#include&lt;stdio.h&gt;

void TongJi(char s[])

{

int ZiMu=0,KongGe=0,ShuZi=0,QiTa=0,i;

for(i=0;s&lt;i&gt;!='';i++)

{

if(s&lt;i&gt;==32)KongGe++;

else if((s&lt;i&gt;&gt;=48)&&(s&lt;i&gt;&lt;=57))ShuZi++;

else if(((s&lt;i&gt;&gt;=97)&&(s&lt;i&gt;&lt;=122))||((s&lt;i&gt;&gt;=65)&&(s&lt;i&gt;&lt;=90)))ZiMu++;

else QiTa++;

}

printf("空格:%d;數字:%d;字母:%d;其他:%d。 ",KongGe,ShuZi,ZiMu,QiTa);

}

int main()

{

char s[100];

printf("請輸入:");

gets(s);

TongJi(s);

return 0;

}

(5)C語言宏統計參數個數擴展閱讀:

return用法

C++的關鍵字,它提供了終止函數執行的一種方式。當return語句提供了一個值時,這個值就成為函數的返回值.

說到return,有必要提及主函數的定義,下面是從網路上找到的資料,好好消化吧,對了解主函數中返回值的理解有很大的幫助.

很多人甚至市面上的一些書籍,都使用了void main(),其實這是錯誤的。C/C++中從來沒有定義過void main()。

C++之父Bjarne Stroustrup在他的主頁上的FAQ中明確地寫著The definition void main(){/*...*/}is not and never has been C++,

nor has it even been C.(void main()從來就不存在於C++或者C)。下面我分別說一下C和C++標准中對main函數的定義。

1.C

在C89中,main()是可以接受的。Brian W.Kernighan和Dennis M.Ritchie的經典巨著The C programming Language 2e(《C程序設計語言第二版》)用的就是main()。不過在最新的C99標准中,只有以下兩種定義方式是正確的:

int main(void)

int main(int argc,char*argv[])

(參考資料:ISO/IEC 9899:1999(E)Programming languages—C 5.1.2.2.1 Program startup)

當然,我們也可以做一點小小的改動。例如:char*argv[]可以寫成char**argv;argv和argc可以改成別的變數名(如intval和charval),不過一定要符合變數的命名規則。

如果不需要從命令行中獲取參數,請用int main(void);否則請用int main(int argc,char*argv[])。

main函數的返回值類型必須是int,這樣返回值才能傳遞給程序的激活者(如操作系統)。

如果main函數的最後沒有寫return語句的話,C99規定編譯器要自動在生成的目標文件中(如exe文件)加入return 0;,表示程序正常退出。不過,我還是建議你最好在main函數的最後加上return語句,雖然沒有這個必要,但這是一個好的習慣。

注意,vc6不會在目標文件中加入return 0;,大概是因為vc6是98年的產品,所以才不支持這個特性。現在明白我為什麼建議你最好加上return語句了吧!不過,gcc3.2(Linux下的C編譯器)會在生成的目標文件中加入return 0;。

⑥ C語言獲取函數參數的數組的元素個數

C語言中,定義數組後可以用sizeof命令獲得數組的長度(可容納元素個數),通過數組占內存總空間/單個元素占內存空間大小,即可得到數組的元素個數
例如

但是,通過將數組作為函數參數傳遞到函數中,以獲得數組長度是不可行的
例如

原因:數組arr是函數參數,在函數中,arr只是一個指針(地址,系統在本函數運行時,是不知道arr所表示的地址有多大的數據存儲空間,這里只是告訴函數:一個數據存儲空間首地址),所以,sizoef(arr)的結果是指針變數arr占內存的大小,一般在32位機上是4個位元組。arr[0]是int類型,sizeof(arr[0])也是4個位元組,所以,結果永遠是1。

如果想要在被調用的函數中,得知原數組的大小,可以再給函數添加一個參數,用於指定數組的大小,讓外界調用函數前就講數組的大小傳遞進來

⑦ 對於C語言,一個函數可以有多少個參數

內存角度來看,函數的參數是要入棧的,棧區大小決定了參數的個數。一般C語言程序運行時默認1M的棧空間,以int類型的參數來看,1M=1024KB=1024*1024位元組,32位系統中int類型佔4個位元組,所以理論上一個函數最多有262144個int類型的參數。實際中要遠遠小於這個數,因為應用程序中的局部變數都需要佔用棧空間。

⑧ C語言編程題,若函數形參為一維數組作函數參數編寫函數,統計某一維數組中非0元素的個數

#include <stdio.h>

int func(int a[],int n)

{

int i,cnt;

for(cnt=0,i=0;i<n;++i)

if(a[i])

cnt++;

return cnt;

}

int main()

{

int a[10]={0,1,2,3,4,5,6,7,8,9};

printf("%d ",func(a,10));

return 0;

}

⑨ C語言中如何獲取函數可變參數的個數

這個看你是怎麼調用的

一般都是約定個數 或者根據第一個參數,決定個數。

你這個寫法,看起來是兩個參數調用,然後都是char* 如果是這樣

要改成

#include<stdio.h>
#include<stdarg.h>
voidprint(char*value,...)
{
char*t;
printf(value);
va_listval;
va_start(val,value);
t=va_arg(val,char*);//獲取下一個參數需要賦值的。
printf(t);
va_end(val);
}

⑩ C語言編寫:輸入任意一串字元串,統計該字元串中出現的字元a的個數,並輸出共統計的個數。

代碼如下:

/*編程從鍵盤輸入一個字元串,統計該字元串中從'a'到'z'共26個小寫字母各自出現的次數,

將結果存入數組中,並輸出*/

#include<stdio.h>

#include<string.h>

#define N 100

main()

{ int i,j=0,c[26]={0};

char str[N];

printf("請輸入一個字元串:");

gets(str);

for(i=0;i<strlen(str);i++)/*外循環掃描/遍歷字元數組*/

for(j=0;j<26;j++)

if(str[i]=='a'+j)

{ c[j]++;

break;

}

for(i=0;i<26;i++)

printf("%c-%d ",'a'+i,c[i]);/*輸出字母a-z及其出現的次數*/

}

(10)C語言宏統計參數個數擴展閱讀

字元串常量與字元數組的區別

1)字元串常量是一個字元數組,但是內容和長度在初始化時就已經固定了,不可更改;可以通過一個指向字元串常量第一個元素的指針來訪問該字元串常量;

2)字元數組是一個用於存放字元的數組,字元數組的值是可以更改的。

常用字元串函數:

1、復制字元串

C 語言中使用庫函數 strcpy 來進行字元串復制操作:

char *strcpy(char *dst , char const *src);

函數 strcpy 接收兩個字元串參數,並將參數 src 字元串復制到 dst 參數。使用 strcpy 函數時需要注意的是,必須保證目標字元數組 dst 的長度足夠存放源字元數組 src 的內容。

如果 src 比 dst 長,則 src 剩餘部分的字元仍會被復制,而且它們會覆蓋 dst 後面的內存空間的值,如果這除內存空間原本就存放有值,則會導致原本的數據丟失,這樣會造成很嚴重的後果。為了解決這個問題, C 語言中提供了一種更為安全的方式來進行字元串復制操作——strncpy 函數:

char *strncpy(char *dst , char const *src , size_t len);

2、連接字元串

C 語言中使用庫函數 strcat 來連接兩個字元串:

char *strcat(char *dst,char const *src);

函數 strcat 將參數 src 字元串連接到參數 dst 字元串的後面。與 strcpy 函數一個同樣的問題是,必須保證 dst 的剩餘空間足夠存放下 src 整個字元串。C 語言中提供了 strncat 函數來解決這個問題:

char *strncat(char *dst , char const *src , size_t len);

strncat 函數從 src 中最多復制 len 個字元到目標數組 dst 後面,並且,strncat 總是在結果字元串後面添加一個 NUL 位元組,而且不會像 strncpy 函數那樣對 dst 剩餘的空間用 NUL 進行填充。