学习笔记-函数(2)

函数类型 函数名(参数表);
double cylinder (double r, double h);
void pyramid (int n);
函数必须先定义后调用,将主调函数放在被调函数的后面,就像变量先定义后使用一样。
如果自定义函数在主调函数的后面,就需要在函数调用前,加上函数原型声明。
函数声明:说明函数的类型和参数的情况,以保证程序编译时能判断对该函数的调用是否正确。

上周我学了你int与double对函数进行定义,这周来see see void类型

155c02400796442eae2e89facee39ca1.png

比如说我们想造一座这样的“金字塔”07d1e6e6fd9a43a68eea3492359282ee.png 

我们可以这样讲

 #include <stdio.h>
void pyramid (int n);        /* 函数声明 */
int main (void)
{   
    pyramid(5);            
    return 0;
}

void pyramid (int n)                   
{        
    int i, j;
    for (i = 1; i <= n; i++){        
        for (j = 1; j <= n-i; j++)     
        printf(" ");            
        for (j = 1; j <= i; j++)       
        printf("%d ", i);                   
        putchar ('\n');                
    }
}


与int很大不同的就是不用在函数里进行return操作

由于函数没有返回结果,函数调用不可能出现在表达式中,通常以独立的调用语句方式;
不返回结果的函数,在定义、调用、参数传递、函数声明上,思路完全与以前相同,只是函数类型变为void。
它适用把一些确定的、相对独立的程序功能包装成函数。
主函数通过调用不同的函数,体现算法步骤
各步骤的实现由相应函数完成
简化主函数结构,以体现结构化程序设计思想。


不过这个金字塔有升级版facf48f4681a424fad539117b81cdda4.png

我们可以这样来

 #include<stdio.h>
void hollow_pyramid(int n);
int main(void)
{
    int n;
    scanf("%d",&n);
    hollow_pyramid(n);
    return 0;
}
void hollow_pyramid(int n)
{
    for(int i=1;i<n;i++)
    printf(" ");
    printf("1\n");
    for(int i=j+1;i<n;j++)
    {
        for(int i=j+1;i<n;i++)
        printf(" ");
        for(int k=1;k<=2*j-1;k++)
        {
            if(j+1!=n)
            printf(" ");
        }
        if(j+1==n)
        break;
        printf("%d\n",j+1);
    }
    for(int i=1;i<=2*n-1;i++)
    {
        printf("%d",n);
    }
}


不知道还记不记得这样一道题好久久之前的了

源程序

double funpi (double e) 
{     int denominator, flag; 
      double item, sum;
        flag = 1; 
        denominator = 1;
       item = 1.0; 
        sum = 0; 
      while (fabs (item) >= e){   
          sum = sum + item;
          flag = -flag; 
         denominator = denominator + 2; 
         item = flag * 1.0 / denominator;
       }
       sum = sum + item;
         return sum * 4;
}


也就是for循环的升级版🤔

然后就是这道题把我骗得云里雾里a9743de9fbd4465086ec83380792fea1.png

又是考虑合并后总字符数的,又是搞第一个字符空格的,乱七八糟

(话说不是用函数做的,但他值得我搬上来吐槽吐槽)

 #include<stdio.h>
int main(void)
{
  int n;
  scanf("%d",&n);
  int count,i;
  count=0;
  char ch;
  getchar();
  for(i=1; ;i++)
  {
    if(count==n)
      break;
    scanf("%c",&ch);
    {
      
      if(ch>='A'&&ch<='Z')
      {
        if(count==0)
        {
          count++;
          printf("%c",ch);
        }
        else
        {
          count+=2;
          printf(" %c",ch);
        }
      }
      if(ch>='a'&&ch<='z')
      {
        count++;
        printf("%c",ch);
      }
    }
    if(ch=='#')
      break;
  }
  return 0;
}


Last 

c87c45ae0f5346bcb53a9de3aec907e4.png

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ryan-%

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值