返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言函数封装及变量的作用域
  • 908
分享到

C语言函数封装及变量的作用域

2024-04-02 19:04:59 908人浏览 薄情痞子
摘要

目录1. for循环示例2. 模拟实现投票系统。switch3. 计算字符串空格、数字等数据数量4. 字符串转整数。5. 整数转字符串6. 浮点数转字符串7. 字符串转浮点数8. 函

1. for循环示例

#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. 模拟实现投票系统。switch

比如: 有10张票,3个候选人。 进行投票,最终得出票数。

#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表示无效票) 剩余票数(%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("无效票数:%d\n",cnt4);
	return 0;
}

3. 计算字符串空格、数字等数据数量

从键盘上输入一个字符串:

计算字符串里有多少个空格、小写字母、大写字母、数字。

scanf("%s",buff);
	
#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("数字:%d\n",cnt4);
	printf("其他:%d\n",cnt5);
	return 0;
}

4. 字符串转整数。

从键盘上输入一个字符串”12345”,  int data=12345;

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

	while(buff[i]>='0' && buff[i]<='9')  //实现字符串转整数
	{
		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. 整数转字符串

整数转字符串:

#include <stdio.h>
//1234
int main()
{
	char buff[100];
	char str[100];
	unsigned int i=0,val=0,j;
	printf("请输入一个整数:");
	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. 浮点数转字符串

//以下例子代码实现将浮点数分解成两个整数
#include <stdio.h>
//1234
int main()
{
	float data=123.456789;
	int data1,data2;
	data1=data; //得到整数部分
	data2=(data-data1)*1000000;

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

7. 字符串转浮点数

从键盘上输入一个字符串”123.45”,  float data=123.45;

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

8. 函数的特性与用法

C语言是靠函数组成。
函数的特性:

  • 1.函数就相当于封装一个工具
  • 2.函数可以重复调用。
  • 3.函数的功能尽可能的单一。  比如:判断闰年和平年
  • 4.我们自己的写的函数,(除了main函数之外)  子函数。
  • 5.一般情况下,子函数的代码都在main函数的下面。
  • 6.在调用任何子函数之前,都需要声明。

函数的定义:

<函数返回值类型>  函数的名称(形参1,形参2…….)
{
函数的代码……
return <返回值值>;  //如何函数有返回值才需要返回
}

函数的模型:

void func1(void);  //函数声明
int func1(int data1,int data2 );  //函数声明

//函数原型
void func1(void)
{

}

//函数原型
int func1(int data1,int data2 )
{
	return 100;
}

函数示例(计算和):

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

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


int sum(int a,int b)
{
    int c=a+b;
    return c;
}

9. 判断平年和闰年


#include <stdio.h>
int GetYear(int year);  //函数声明
int main()
{
	int i;
	for(i=2001; i<2018; i++)
	{
		if(GetYear(i))printf("%d 是闰年.\n",i);
		else printf("%d 是平年.\n",i);
	}
	return 0;
}



int GetYear(int year)
{
	if((year%4==0&&year%100!=0)||(year%400==0))
	{
		return 1;
	}
	else
	{
		return 0;
	}
}

10. 将数组当做函数的形参

#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. 计算字符串长度

函数示例: 封装函数,计算字符串长度

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

	printf("字符串长度:%d\n",my_strlen(buff));
	return 0;
}

int my_strlen(char buff[])
{
	int len=0;
	while(buff[len]!='\0')
	{
		len++;
	}
	return len;
}

12. 全局变量、静态变量、局部变量、常量

如何声明常量?  
示例:  常量和变量的区别测试

#include <stdio.h>
int main()
{
	int data1=123; //默认声明为变量
	const int data2=456;//声明为常量
	//区别:  变量可以改变数据  常量不可改变数据
	data1=789;
	//data2=789;  错误赋值方式
	return 0;
}

全局变量和局部变量区别:

#include <stdio.h>
void func(void);
int data=123; //全局变量,定义在函数之外的变量。  公用变量
int main(void)
{
    int data=456; //局部变量,私有变量
    printf("data1=%d\n",data); //当全局变量和局部变量重名的时候,优先使用局部变量
    func(); //调用函数
    return 0;
}
void func(void)
{
    printf("data2=%d\n",data); //使用全局
}

局部变量传参数示例:  (分析局部变量)

#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);
}

函数形参传递数组和传递变量的区别:

#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);                    //传递的是数组的首地址

    printf("buff1=%d\n",buff[0]); // 9999 ?
    printf("data=%d\n",data); // 888  ?
    return 0;
}

void func(int buff[],int data)
{
    buff[0]=9999;
    data=9999;

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

全局变量和静态变量的生命周期与main函数一样长。局部变量的声明周期与调用的子函数挂钩,子函数调用完毕,内部所有的局部变量全部释放。什么是静态变量?   局部的全局变量
如何声明?    static 关键字。  

示例:

 static int data;  //表示声明data是静态变量
#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;  //声明静态变量,int data=0 只会执行一次。
	data++;
	return data;
}

13. 字符串进阶练习作业

函数的作业:  

1.时间转换(秒与标准时间的转换) 

(1)函数1:  将秒单位时间转为标准时间。  
        237562867493 -----xxxx年xx月xx日xx时xx分xx秒
(2)函数2:  将标准时间转为秒单位的时间。
       2018年6月1日19点41分23秒----------xxxxxxx秒
  闰年366,平年365。  区分: 每年二月份相差一天

2.将字符串转整数、整数转字符串、浮点数转字符串、字符串转浮点数 封装为函数。

3.封装字符串拼接函数:   函数功能实现将a和b字符串拼接在一起。   
比如: char a[100]=”123”;  char b[]=”456”;    调用函数之后:  a[]=”123456”

4.封装字符串的拷贝函数: 将a字符串拷贝到b字符串。
5.封装字符串的比较函数: 比较a字符串和b字符串是否相等。 通过返回值进行区分。

字符串解析(扩展):

1.分析GPS卫星返回的数据

提取最基本的数据:

  • (1)UTC时间
  • (2)海拔高度
  • (3)经纬度
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语言函数封装及变量的作用域的文章就介绍到这了,更多相关C语言函数封装内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言函数封装及变量的作用域

本文链接: https://lsjlt.com/news/148618.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C语言函数封装及变量的作用域
    目录1. for循环示例2. 模拟实现投票系统。switch3. 计算字符串空格、数字等数据数量4. 字符串转整数。5. 整数转字符串6. 浮点数转字符串7. 字符串转浮点数8. 函...
    99+
    2024-04-02
  • C语言函数封装及变量的作用域实例分析
    这篇“C语言函数封装及变量的作用域实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言函数封装及变量的作用域实例分析...
    99+
    2023-06-30
  • C语言中不定参数 ... 的语法以及函数封装
    目录Intro语法测试依赖库新函数使用测试:遍历并打印不定参数中的值总结 Intro 有一天看C代码看到某个方法有这样的定义:在函数形参列表处,有...的写法,就像Java...
    99+
    2023-01-28
    c语言不定参数函数 c语言不定参数 ... c语言参数
  • 详解Go语言变量作用域
    目录局部变量全局变量形式参数初始化局部和全局变量作用域为已声明标识符所表示的常量、类型、变量、函数或包在源代码中的作用范围。 Go 语言中变量可以在三个地方声明: 函数内定...
    99+
    2022-06-07
    详解go语言 GO go语言 作用域 变量
  • C语言:变量的作用域和生命周期详解
    目录1.全局变量和局部变量2.变量的作用域2-1.声明外部变量的方法3.变量的生命周期4. 局部变量&自动变量总结1.全局变量和局部变量 定义在代码块外部的是全局变量 定义在...
    99+
    2024-04-02
  • go语言变量的作用域是什么
    这篇“go语言变量的作用域是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“go语言变量的作用域是什么”文章吧。go语言变...
    99+
    2023-07-05
  • Python私有函数,私有变量及封装的方法
    这篇“Python私有函数,私有变量及封装的方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python私有函数,私有变量...
    99+
    2023-06-29
  • C语言入门篇--局部全局变量的作用域及生命周期
    目录1.变量的分类1.1 局部变量1.2 全局变量1.3 知识点1.3.1 就近原则1.3.2 访问规则1.3.3 有效范围2.变量的使用3.变量的作用域和生命周期3.1 作用域3....
    99+
    2024-04-02
  • C语言怎么封装函数字符串
    这篇文章主要讲解了“C语言怎么封装函数字符串”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言怎么封装函数字符串”吧!封装函数: 判断闰年和平年该函数判断传入的年份是否是闰年和平年,通过返...
    99+
    2023-06-29
  • Golang函数的变量作用域讲解
    Golang是一种非常流行的编程语言,它以其高效的并发性能和简洁的语法风格在业界备受好评。作为一门强类型语言,Golang也是支持变量的类型声明和作用域控制的。在Golang中,变量作用域是一个非常重要的概念。它决定了在何处可以访问一个变量...
    99+
    2023-05-18
    函数 Golang 变量作用域
  • 解析Golang函数变量的作用域
    Golang函数变量作用域解析,需要具体代码示例Golang是一种开源的静态类型编程语言,注重效率和简洁,其函数变量作用域的解析机制也是开发者需要了解的重要内容之一。本文将介绍Golang中函数变量的作用域以及与其相关的规则,同时提供代码示...
    99+
    2023-12-23
    作用域 解析 Golang函数变量
  • 理解Golang函数变量的作用域
    理解Golang函数变量的作用域,需要具体代码示例在Golang中,函数是一种特殊的变量类型,可以作为参数传递给其他函数,也可以作为返回值返回。而函数变量的作用域则是指函数变量在代码中可见和可访问的范围。函数变量的作用域可以分为全局作用域和...
    99+
    2023-12-23
    变量作用域 Golang函数 理解 Golang
  • 怎么在C语言中引用C++的函数和变量
    本篇内容主要讲解“怎么在C语言中引用C++的函数和变量”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在C语言中引用C++的函数和变量”吧!引用C++语言的头文件需添加extern "...
    99+
    2023-06-17
  • Go语言中变量的作用域是什么
    这篇文章给大家介绍Go语言中变量的作用域是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。作用域为已声明标识符所表示的常量、类型、变量、函数或包在源代码中的作用范围。Go 语言中变量可以在三个地方声明:函数内定义的变...
    99+
    2023-06-08
  • Python函数参数传递以及变量作用域详解
    这篇文章主要介绍“Python函数参数传递以及变量作用域详解”,在日常操作中,相信很多人在Python函数参数传递以及变量作用域详解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python函数参数传递以及变...
    99+
    2023-06-04
  • Golang函数中的变量作用域:局部变量和全局变量
    Golang函数中的局部变量和全局变量,需要具体代码示例 在Golang中,变量的作用域是非常重要的概念。在函数中,我们常常会遇到局部变量和全局变量的情况。这两者在作用域和使用方式上有一些区别,下面我将详细介...
    99+
    2024-01-18
    函数 变量 Golang
  • 函数变量作用域的示例分析
    这篇文章将为大家详细讲解有关函数变量作用域的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。局部变量:在函数中,定义的变量就是局部变量,其作用范围仅限函数的内容;形参也是函数内部的变量,也是局不变量...
    99+
    2023-06-15
  • 详解Golang函数中的变量作用域
    Golang函数中的变量作用域详解 在Golang中,变量的作用域指的是变量的可访问范围。了解变量的作用域对于代码的可读性和维护性非常重要。在本文中,我们将深入探讨Golang函数中的变量作用域,并提供具体的...
    99+
    2024-01-18
    变量 作用域 Golang函数
  • Golang函数中变量作用域的详解
    Golang函数中变量作用域的详解在Golang中,函数是基本的代码块,用于完成某个特定的任务或计算。函数内部定义的变量有其特定的作用域,即变量在哪些代码段中可见和可用。本文将详细讨论Golang函数中变量的作用域,并提供具体的代码示例。局...
    99+
    2023-12-23
    Golang函数中的作用域 变量作用域详解 Golang函数变量的作用范围
  • Golang中函数变量作用域的探讨
    Golang中函数变量作用域的探讨引言:Golang是一种开源的编程语言,其特点之一是支持函数作为一等公民。在Golang中,函数作为一种数据类型可以赋值给变量,并且可以作为参数传递给其他函数。本文将探讨Golang中函数变量的作用域问题,...
    99+
    2023-12-23
    Golang函数变量 Golang作用域 Golang变量探讨
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作