C语言函数 (习题)

C语言是面向过程(以模块(函数)为单位)

函数:就是一个功能模块(完成某个功能的过程:完成排序)

        1、函数分类:自定义函数   系统函数

        2、系统函数:就是由系统提供的功能(模块)  printf

        3、自定义函数:

              返回值 函数名(形参)

              {
                  函数体;//模块的过程
                  return 返回值表达式;
              }

                3.1调用函数:执行“一次”函数的过程
               函数名(); 注:函数必须定义    *函数表达式  
               结果:
               注:1函数必须存在  2形参必须匹配

               1、无返回值  无形参
               void 函数名(void)
               {
                       return ;    //返回一个空语句,并函数结束
                }
              2、有返回值(结果:数据)  无形参
             返回值类型 函数名(void)
               {
               函数体;
               return;
                }
               3、有返回值   有形参
                返回值  函数名(形参1,形参2,形参3)
               {
               函数体;
                }
               形参变量:就是在函数形参列表中定义的变量    
               实参:调用函数时传递的值
      形参:
            1、变量作形参:
                 整型:

            1、主函数:系统开始运行时程序的入口函数。
             变量:****
            1、定义变量:类型 变量名;   (分配空间)
            2、引用变量:引用变量内容

           作用域:能被引用的范围(全局,局部)
            1、全局: 在函数外定义的变量
          作用域:从定义开始,到本文件结束。
           2、局部:在函数内定义的变量(形参变量,函数内定义变量)
           作用域:只在函数内
           注:在同一作用域内不允许出现同名现象;
  
       生存周期:空间从分配开始,到运行结束。
           1、“栈”区(动态区):当函数运行开始,空间被申请,当函数运行结束,空间被释放。
            定义变量: [auto] [有无符号] 类型 变量名; (只能在函数内)    ; 形参变量
           2、静态区:程序运行开始时空间被申请,程序运行结束时,空间被释放。
           全局变量。 静态局部变量 ; static 类型 变量名
           3、堆区(程序员区)

        函数的调用:

#include<stdio.h>
/*
 * 函数:求整形形参之间的和
 * 返回值:和
 */
int add(int a,int b)
{
	int sum=a+b;
	return sum;
}
/*
 * 函数名:show
 * 功能:打印数组内容
 * 返回值:无
 */
void show(int num[100],int ilen)	//ilen元素的个数 s代表数组
{
	int i=0;
	for(i=0;i<ilen;i++)
	{
		printf("%d\n",num[i]);
	}
}

void main()
{
//调用函数:
	int result = add(1,2);
	printf("%d\n",result);
//定义数组:
	int buf[100] = {1,2,3,4,5,6};
	show(buf,6);
}

        动态变量与静态变量:

#include<stdio.h>
#include<unistd.h>
/*
int* fun()
{
	int a = 200;
	return &a;
}
*/
//统计人数:每访问时,就调用一次calc函数
int num= 0 ;
void calc()
{
	//auto int num = 0;	//空间被释放频繁
	static int num = 0;
	num++;
	printf("当前人数为:%d\n",num);
}

void main()
{
//生命周期:从空间被申请,空间被释放
/*	auto int a = 100;	//动态变量:
	int* result = fun();	

	sleep(2);
	printf("%d\n",*result);
*/
//访问:
	calc();
	calc();
	//num = 0;	//不希望外界访问
	calc();
}

习题:

       定义一个函数:求某数字(3位数)是否是水仙花(每一位数的立方=本身)

       153=1^3+5^3+3^3

#include<stdio.h>
void fun(int x)
{
	int i=0,a,b=0;
	int c = x;
	for(i=0;i<3;i++)
	{
		a = x%10;
		b = b + a*a*a;
		x = x/10;
	}
	if(b==c)
	{
		printf("是水仙花数!");
	}
	else
	{
		printf("不是水仙花数!");
	}
}

void main()
{
	fun(153);
}

习题:

        定义一个函数:判定某个整型数组中是否存在某个值

        int findKey(int buf[100],int ilen,int key)//buf数组源,ilen元素个数,key查找关键值

        {         }

#include<stdio.h>

void findKey(int buf[100],int ilen,int key)
{
	int i =0,a,j;
	for(i=0;i<ilen;i++)
	{
		if(buf[i]==key)
		{
			printf("存在%d",key);
			j = 1;
			break;
		}
	}
	if(j!=1)
	{
		printf("不存在%d",key);
	}
}

void main()
{
	int buf[100] = {1,4,3,7,6,5,2,8,9};
	findKey(buf,9,1);
}

习题:

         定义一个函数:求输入的“字符串”是否是回文  "abcdcba"

#include<stdio.h>
void fun(char buf[10])
{
	int i=0,j=0;
	while(buf[i]!='\0')
		i++;
	for(;j<=i/2;j++)
	{
		if(buf[j]==buf[i-j-1])
		{
			if(j==(i-1)/2)
			{
				printf("yes\n");
				return;
			}
		}
		else
		{
			printf("no\n");
			return;
		}
	}
}

void main()
{
	char buf[10] = "abcdcba";
	fun(buf);
}

习题:

        定义一个函数:求某年/月/日是否是星期几?

        功能:求星期

        返回值:[0-6]  0-周日  1周一 2周二 ...

        函数名:int weekday(int year,int month,int day); 

        算法:(基姆拉尔森)Weekday=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7

#include<stdio.h>

int weekday(int y,int m,int d)
{
	int w = (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
	return w+1;
}

void main()
{
	int y=2018,m=7,d=15;
	printf("这天是星期:%d\n",weekday(y,m,d));
}

 习题:

        定义一个函数:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

#include<stdio.h>

void main()
{
	double sn = 100;
	double hn = sn/2; 
	int i = 0;
	for (i = 2;i<=10;i++){
		sn = sn + hn * 2; 
		hn = hn / 2;
		}
	printf("第%d次落地经过%f米",i-1,sn);
}

猜你喜欢

转载自blog.csdn.net/superman___007/article/details/81103373
今日推荐