2021-05-02

函数小结(初初级)

1.目前属于大菜鸡阶段,复杂的话不说了

        我们在学函数这一部分的时候,我自己感觉很容易反感。你机会觉得这个东西真那么设计的非常反人类,我明明可以用更简单的方式将它写出来,为什么需要将问题复杂化。因为我目前处于大一,我并不知道我们在学校当中学习的东西在社会中到底能够运用到多少。
         我只能说学函数更多的是学一种思维,学的就是模块化的处理方式。试想一下,你写一个大工程,你难道采用一个函数主体吗?这样会大大降低函数的可维护性和利用性,也会使一个函数运行时间会无线加长。

2.如何利用函数思维来编写程序

    首先我觉得应该需要辩证的去看待问题,我们不能觉得什么问题都应该去采用c语言函数的方法来解决问题。这样会将问题复杂化,我目前遇到的问题是一个函数我只能用一个功能(有可能我是一个菜鸡的缘故),也就是说我目前所写的函数我只能用某一个特定的功能。
    比如我要计算某年某月的天数,我完全不知道如何用函数思维来写。我目前只会改写计算某一个特定的值和判断正确与否这种类型的程序题,像那种多分支语句我目前不知道如何进行改写,所以我就以我会的进行介绍。

3.首先来说我们怎么写程序

#include<stdio.h>
int Narcissistic (int x);//如果将自定义函数写在前面,就需要现在前面加一个函数声明
int main()
{
	int number,t;
	scanf("%d", &number);
	t= Narcissistic(number);//这里便是调用该函数的代码部分
	if (t == 1)
		printf("yes");
	else
		printf("no");
	return 0;
}
int Narcissistic (int x)//这里是函数定义部分
{
	int a,b,c;
	a = x / 100;
	b = x / 10 % 10;
	c = x % 10;
	if (x == a * a * a + b * b * b + c * c * c)
		return 1;
	else
		return 0;
}
    现在写函数这一部分最好还是用这种方法来写,我觉得这样写更加美观。我们老师说是因为我们写的程序都是写完就扔的,还有写的工程都比较小,感受不出来差别。
    反正就是这个意思,说实话我已经不想再接着写下去了,函数部分最核心的东西我已经讲的差不多了,剩下的便是大量的练习。为了凑一点字数,我就再讲一个有关函数的形参和实参的问题。

函数的形参和实参

    函数的形参和实参书上的定义我就不在赘述,这个自行查书了解。如果你很好的看书你就可以知道,所谓的形参也就是不在主函数中使用的参数。凡是不能在主函数中使用的函数都只能在定义函数中使用一次。
    也就是说你只能在主函数的开头定义一个全局变量以供整个程序使用,但这样貌似有一点麻烦。所以常用的方法是利用好**return**语句,我们可以利用return语句来返回主调函数。
#include<stdio.h>
int vowel(char ch);
int main()
{
	int sum = 0, t;
	char ch;
	while (scanf("%c", &ch) && ch != '\n')
	{
		t = vowel(ch);
		if (t == 1)
			sum++;
	}
	printf("%d", sum);
	return 0;
}
int vowel(char ch)
{
	if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u' || ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U')
		return 1;
	else
		return 0;
}
 其实这个例子与上个例子差不多,但是毕竟长得不一样。能多理解就理解一下。其实你看懂这两个例子就可以简单的理解了,其实自定义函数中的参数跟主函数的参数一样在用的时候都分配了一个空间。
 但是自定义函数中改变的值并不会主函数中体现,因为他们根本就不是分配同一个内存单元,所以主函数中的值并不会被影响。其实是有第三种方法去改变这种情况的,但是第三种方法旭阳用到后面所学到的指针,这个我还没学透,就暂时不写了。

递归

 首先说明一下函数递归的定义:调用自身。举个简单的例子。这个例子在网上抄的,一看就不是我代码风格。实在不想写了,凑活看一下吧。
#include<stdio.h>
#include<stdlib.h>

int fun(int n)
{
  if (n == 1 || n == 2)
return 1;
  else
return fun(n - 1) + fun(n - 2);
}
int main()
{
  int n;
  scanf("%d", &n);
  printf("%d", fun(n));
  system("pause");
return 0;
}
    这个我就举个例子,其他的我就不讲了。自己练去吧,你不要不练,我们宿舍由于一哥们,一写代码就说不会,自己都不练神仙也教不会

练习吧,骚年!

   不讲了,拜拜!!!
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值