最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言函數(shù)封裝及變量的作用域

 更新時間:2022年05月12日 11:38:54   作者:DS小龍哥  
這篇文章主要介紹了C語言函數(shù)封裝及變量的作用域,以及分享一些字符串的相關實戰(zhàn)練習,字符串轉整數(shù)、整數(shù)轉字符串、浮點數(shù)轉字符串、字符串轉浮點數(shù)、判斷平年閏年、技術字符串長度等等。下文詳細內容需要的小伙伴可以參考一下

1. for循環(huán)示例

#include <stdio.h>
int main()
{
	int i,j;
	int len=4;
	for(i=len; i>=1; i--)
	{
		for(j=len; j>i; j--)printf(" "); //打印空格
		for(j=1; j<=i; j++)printf("%d",j); //打印前半部分
		for(j=i-1; j>=1; j--)printf("%d",j); //打印后半部分
		printf("\n");
	}
	return 0;
}

2. 模擬實現(xiàn)投票系統(tǒng)。switch

比如: 有10張票,3個候選人。 進行投票,最終得出票數(shù)。

#include <stdio.h>
int main()
{
	int i;
	int val; //獲取鍵盤上輸入的值
	int cnt1=0,cnt2=0,cnt3=0,cnt4=0;
	for(i=1; i<=10; i++)
	{
		printf("請輸入投票的編號(1~3,4表示無效票) 剩余票數(shù)(%d) :",10-i);
		scanf("%d",&val);
		switch(val)
		{
		case 1:
			cnt1++;
			break;
		case 2:
			cnt2++;
			break;
		case 3:
			cnt3++;
			break;
		default:
			cnt4++;
			break;
		}
	}
	printf("1號選手:%d\n",cnt1);
	printf("2號選手:%d\n",cnt2);
	printf("3號選手:%d\n",cnt3);
	printf("無效票數(shù):%d\n",cnt4);
	return 0;
}

3. 計算字符串空格、數(shù)字等數(shù)據(jù)數(shù)量

從鍵盤上輸入一個字符串:

計算字符串里有多少個空格、小寫字母、大寫字母、數(shù)字。

scanf("%s",buff);
	/*
	scanf 函數(shù)依靠  \n和空格代表結束符號
	*/
#include <stdio.h>
int main()
{
	char buff[100];
	int i=0;
	int cnt1=0,cnt2=0,cnt3=0,cnt4=0,cnt5=0;
	printf("請輸入字符串:");
	gets(buff);

	while(buff[i]!='\0')
	{
		if(buff[i]==' ')
		{
			cnt1++;
		}
		else if(buff[i]>='a'&& buff[i]<='z')
		{
			cnt2++;
		}
		else if(buff[i]>='A'&& buff[i]<='Z')
		{
			cnt3++;
		}
		else if(buff[i]>='0'&& buff[i]<='9')
		{
			cnt4++;
		}
		else
		{
			cnt5++;
		}
		i++;
	}
	printf("空格:%d\n",cnt1);
	printf("小寫:%d\n",cnt2);
	printf("大寫:%d\n",cnt3);
	printf("數(shù)字:%d\n",cnt4);
	printf("其他:%d\n",cnt5);
	return 0;
}

4. 字符串轉整數(shù)。

從鍵盤上輸入一個字符串”12345”,  int data=12345;

#include <stdio.h>
//"1234"
int main()
{
	char buff[100];
	int i=0,value=0;
	printf("輸入數(shù)字字符串(0~9):");
	scanf("%s",buff);

	while(buff[i]>='0' && buff[i]<='9')  //實現(xiàn)字符串轉整數(shù)
	{
		value=value*10; //0 10 120 1230
		value=value+(buff[i]-'0'); //1 12 123  1234
		i++;
	}

	if(buff[i]!='\0') //轉換失敗
	{
		printf("警告:轉換不完整。 得到的值:%d\n",value);
	}
	else
	{
		printf("轉換成功! 正確值=%d\n",value);
	}
	return 0;
}

5. 整數(shù)轉字符串

整數(shù)轉字符串:

#include <stdio.h>
//1234
int main()
{
	char buff[100];
	char str[100];
	unsigned int i=0,val=0,j;
	printf("請輸入一個整數(shù):");
	scanf("%d",&val);
	
	while(val)
	{
		buff[i]=val%10+'0'; //"4321"
		val=val/10;
		i++;
	}
	for(j=0; j<i; j++)
	{
		str[j]=buff[i-j-1]; //倒序
	}
	str[j]='\0';

	printf("轉換之后字符串: %s\n",str);
	return 0;
}

6. 浮點數(shù)轉字符串

//以下例子代碼實現(xiàn)將浮點數(shù)分解成兩個整數(shù)
#include <stdio.h>
//1234
int main()
{
	float data=123.456789;
	int data1,data2;
	data1=data; //得到整數(shù)部分
	data2=(data-data1)*1000000;

	printf("%d.%d\n",data1,data2);
	return 0;
}

7. 字符串轉浮點數(shù)

從鍵盤上輸入一個字符串”123.45”,  float data=123.45;

printf("%d\n",0);   //0
printf("%d\n",'0'); //48

8. 函數(shù)的特性與用法

C語言是靠函數(shù)組成。
函數(shù)的特性:

  • 1.函數(shù)就相當于封裝一個工具。
  • 2.函數(shù)可以重復調用。
  • 3.函數(shù)的功能盡可能的單一。  比如:判斷閏年和平年
  • 4.我們自己的寫的函數(shù),(除了main函數(shù)之外)  子函數(shù)。
  • 5.一般情況下,子函數(shù)的代碼都在main函數(shù)的下面。
  • 6.在調用任何子函數(shù)之前,都需要聲明。

函數(shù)的定義:

<函數(shù)返回值類型>  函數(shù)的名稱(形參1,形參2…….)
{
函數(shù)的代碼……
return <返回值值>;  //如何函數(shù)有返回值才需要返回
}

函數(shù)的模型:

void func1(void);  //函數(shù)聲明
int func1(int data1,int data2 /*,......*/);  //函數(shù)聲明

//函數(shù)原型
void func1(void)
{

}

//函數(shù)原型
int func1(int data1,int data2 /*,......*/)
{
	return 100;
}

函數(shù)示例(計算和):

#include <stdio.h>
int sum(int a,int b); ?//函數(shù)聲明
int main()
{
?? ?int data;
?? ?data=sum(100,200); ///調用sum函數(shù),并且接收返回值
?? ?printf("data=%d\n",data);

?? ?data=sum(300,500); ///調用sum函數(shù),并且接收返回值
?? ?printf("data=%d\n",data);
?? ?return 0;
}

/*
函數(shù)功能: 計算a+b之和
*/
int sum(int a,int b)
{
?? ?int c=a+b;
?? ?return c;
}

9. 判斷平年和閏年

/*判斷平年和閏年*/
#include <stdio.h>
int GetYear(int year);  //函數(shù)聲明
int main()
{
	int i;
	for(i=2001; i<2018; i++)
	{
		if(GetYear(i))printf("%d 是閏年.\n",i);
		else printf("%d 是平年.\n",i);
	}
	return 0;
}


/*
函數(shù)功能  : 判斷平年和閏年
函數(shù)返回值:  0表示平年 1表示閏年
*/
int GetYear(int year)
{
	if((year%4==0&&year%100!=0)||(year%400==0))
	{
		return 1;
	}
	else
	{
		return 0;
	}
}

10. 將數(shù)組當做函數(shù)的形參

#include <stdio.h>
void print(char buff[]);

int main()
{
	char buff[]="34534r4gyhtrvfvfdvdf";
	print(buff);
	print(buff);
	print(buff);
	print(buff);
	return 0;
}

void print(char buff[])
{
	printf("buff=%s\n",buff);
}

11. 計算字符串長度

函數(shù)示例: 封裝函數(shù),計算字符串長度

#include <stdio.h>
int my_strlen(char buff[]);
int main()
{
	char buff[100];
	scanf("%s",buff);

	printf("字符串長度:%d\n",my_strlen(buff));
	return 0;
}
/*
函數(shù)功能: 計算字符串長度
返回值  : 字符串的長度
*/
int my_strlen(char buff[])
{
	int len=0;
	while(buff[len]!='\0')
	{
		len++;
	}
	return len;
}

12. 全局變量、靜態(tài)變量、局部變量、常量

如何聲明常量?  
示例:  常量和變量的區(qū)別測試

#include <stdio.h>
int main()
{
	int data1=123; //默認聲明為變量
	const int data2=456;//聲明為常量
	//區(qū)別:  變量可以改變數(shù)據(jù)  常量不可改變數(shù)據(jù)
	data1=789;
	//data2=789;  錯誤賦值方式
	return 0;
}

全局變量和局部變量區(qū)別:

#include <stdio.h>
void func(void);
int data=123; //全局變量,定義在函數(shù)之外的變量。 ?公用變量
int main(void)
{
?? ?int data=456; //局部變量,私有變量
?? ?printf("data1=%d\n",data); //當全局變量和局部變量重名的時候,優(yōu)先使用局部變量
?? ?func(); //調用函數(shù)
?? ?return 0;
}
void func(void)
{
?? ?printf("data2=%d\n",data); //使用全局
}

局部變量傳參數(shù)示例:  (分析局部變量)

#include <stdio.h>
void func(int data);

int main(void)
{
?? ?int data=456; //局部變量,私有變量
?? ?func(data);
?? ?printf("data1=%d\n",data);
?? ?return 0;
}
void func(int data)
{
?? ?data=9999;
?? ?printf("data2=%d\n",data);
}

函數(shù)形參傳遞數(shù)組和傳遞變量的區(qū)別:

#include <stdio.h>
void func(int buff[],int data);
int main(void)
{
?? ?int buff[10]={456,123,789}; //局部變量,私有變量
?? ?int data=888;

?? ?printf("data1的地址=0x%X\n",&data);
?? ?printf("buff1的地址=0x%X\n",buff);
?? ?func(buff,data);?? ??? ??? ??? ??? ?//傳遞的是數(shù)組的首地址

?? ?printf("buff1=%d\n",buff[0]); // 9999 ?
?? ?printf("data=%d\n",data); // 888 ??
?? ?return 0;
}
/*
函數(shù)形參傳遞數(shù)組表示是傳遞地址
函數(shù)形參傳遞變量表示是傳遞數(shù)據(jù)
*/
void func(int buff[],int data)
{
?? ?buff[0]=9999;
?? ?data=9999;

?? ?printf("data2的地址=0x%X\n",&data);
?? ?printf("buff2的地址=0x%X\n",buff);
}

全局變量和靜態(tài)變量的生命周期與main函數(shù)一樣長。局部變量的聲明周期與調用的子函數(shù)掛鉤,子函數(shù)調用完畢,內部所有的局部變量全部釋放。什么是靜態(tài)變量?   局部的全局變量
如何聲明?    static 關鍵字。  

示例:

?static int data; ?//表示聲明data是靜態(tài)變量
#include <stdio.h>
int func(void);
int main(void)
{
	int i;
	int sum=0;
	for(i=0; i<5; i++)
	{
		sum+=func(); //累加
	}
	printf("%d\n",sum);  //  ?
	return 0;
}
int func(void)
{
	static int data=0;  //聲明靜態(tài)變量,int data=0 只會執(zhí)行一次。
	data++;
	return data;
}

13. 字符串進階練習作業(yè)

函數(shù)的作業(yè):  

1.時間轉換(秒與標準時間的轉換) 

(1)函數(shù)1:  將秒單位時間轉為標準時間。  
        237562867493 -----xxxx年xx月xx日xx時xx分xx秒
(2)函數(shù)2:  將標準時間轉為秒單位的時間。
       2018年6月1日19點41分23秒----------xxxxxxx秒
  閏年366,平年365。  區(qū)分: 每年二月份相差一天

2.將字符串轉整數(shù)、整數(shù)轉字符串、浮點數(shù)轉字符串、字符串轉浮點數(shù) 封裝為函數(shù)。

3.封裝字符串拼接函數(shù):   函數(shù)功能實現(xiàn)將a和b字符串拼接在一起。   
比如: char a[100]=”123”;  char b[]=”456”;    調用函數(shù)之后:  a[]=”123456”

4.封裝字符串的拷貝函數(shù): 將a字符串拷貝到b字符串。
5.封裝字符串的比較函數(shù): 比較a字符串和b字符串是否相等。 通過返回值進行區(qū)分。

字符串解析(擴展):

1.分析GPS衛(wèi)星返回的數(shù)據(jù)

提取最基本的數(shù)據(jù):

  • (1)UTC時間
  • (2)海拔高度
  • (3)經(jīng)緯度
char gps_data[]=
{
	"$GNGGA,114955.000,2842.4158,N,11549.5439,E,1,05,3.8,54.8,M,0.0,M,,*4F \
	$GNGLL,2842.4158,N,11549.5439,E,114955.000,A,A*4D \
	$GPGSA,A,3,10,31,18,,,,,,,,,,5.7,3.8,4.2*37 \
	$BDGSA,A,3,07,10,,,,,,,,,,,5.7,3.8,4.2*2A \
	$GPGSV,3,1,10,10,49,184,42,12,16,039,,14,54,341,,18,22,165,23*7B \
	$GPGSV,3,2,10,22,11,318,,25,51,055,,26,24,205,,29,13,110,*7C \
	$GPGSV,3,3,10,31,50,287,36,32,66,018,*7F \
	$BDGSV,1,1,04,03,,,07,05,,,29,07,79,246,33,10,52,232,19*62 \
	$GNRMC,114955.000,A,2842.4158,N,11549.5439,E,0.00,44.25,061117,,,A*4D \
	$GNVTG,44.25,T,,M,0.00,N,0.00,K,A*14 \
	$GNZDA,114955.000,06,11,2017,00,00*47 \
	$GPTXT,01,01,01,ANTENNA OK*35"
};

到此這篇關于C語言函數(shù)封裝及變量的作用域的文章就介紹到這了,更多相關C語言函數(shù)封裝內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C語言基礎知識點指針的使用

    C語言基礎知識點指針的使用

    這篇文章主要介紹了C語言基礎知識點指針的使用,下面文章將讓我們掌握指針的概念和用法、指針與數(shù)組之間的關系、指針指向的指針、如何使用指針變量做函數(shù)參數(shù)等更多相關內容,需要的小伙伴可以參考一下
    2022-03-03
  • 詳解C++編程中的文件流與字符串流

    詳解C++編程中的文件流與字符串流

    這篇文章主要介紹了C++編程中的文件流與字符串流,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2015-09-09
  • 淺談do {...} while (0) 在宏定義中的作用

    淺談do {...} while (0) 在宏定義中的作用

    下面小編就為大家?guī)硪黄獪\談do {...} while (0) 在宏定義中的作用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • c++中引用和指針的區(qū)別和聯(lián)系

    c++中引用和指針的區(qū)別和聯(lián)系

    許多人對于引用和指針的區(qū)別與聯(lián)系很糾結(包括我在內O(∩_∩)O哈哈~),最近看到一篇關于引用和指針區(qū)別和聯(lián)系的文章,感覺茅塞頓開,在這里和大家分享下
    2014-04-04
  • C++中利用cout和fstream采用非科學計數(shù)法輸出

    C++中利用cout和fstream采用非科學計數(shù)法輸出

    這篇文章主要介紹了C++中利用cout和fstream采用非科學計數(shù)法輸出方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Qt連接數(shù)據(jù)庫并實現(xiàn)增刪改查操作

    Qt連接數(shù)據(jù)庫并實現(xiàn)增刪改查操作

    這篇文章主要為大家詳細介紹了Qt如何連接數(shù)據(jù)庫并實現(xiàn)增刪改查等基本操作,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-09-09
  • 關于STL中l(wèi)ist容器的一些總結

    關于STL中l(wèi)ist容器的一些總結

    list就是數(shù)據(jù)結構中的雙向鏈表(根據(jù)sgi stl源代碼),因此它的內存空間是不連續(xù)的,通過指針來進行數(shù)據(jù)的訪問,這個特點使得它的隨即存取變的非常沒有效率,因此它沒有提供[]操作符的重載
    2013-09-09
  • C語言鏈表實現(xiàn)貪吃蛇游戲

    C語言鏈表實現(xiàn)貪吃蛇游戲

    這篇文章主要為大家詳細介紹了C語言鏈表實現(xiàn)貪吃蛇游戲源碼,適合C語言入門者學習閱讀,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • C++數(shù)據(jù)結構之搜索二叉樹的實現(xiàn)

    C++數(shù)據(jù)結構之搜索二叉樹的實現(xiàn)

    了解搜索二叉樹是為了STL中的map和set做鋪墊,我們所熟知的AVL樹和平衡搜索二叉樹也需要搜索二叉樹的基礎。本文將詳解如何利用C++實現(xiàn)搜索二叉樹,需要的可以參考一下
    2022-05-05
  • 使用C++遞歸求解跳臺階問題

    使用C++遞歸求解跳臺階問題

    這篇文章主要介紹了使用C++求解跳臺階問題的方法,通過遞歸算法來解決,不算難,文中給出了計算思路,需要的朋友可以參考下
    2016-02-02

最新評論

萨迦县| 宜宾县| 林西县| 南阳市| 左云县| 山阳县| 南阳市| 都安| 丰镇市| 疏附县| 定结县| 循化| 兴化市| 大理市| 龙川县| 五台县| 大理市| 湄潭县| 青神县| 灌云县| 平利县| 桃江县| 江山市| 云龙县| 宁陵县| 日照市| 陆川县| 阳新县| 含山县| 静海县| 茂名市| 五指山市| 红安县| 枣阳市| 青神县| 于都县| 广河县| 大竹县| 巨鹿县| 祁东县| 宜城市|