函数类型 函数名(参数表);
double cylinder (double r, double h);
void pyramid (int n);
函数必须先定义后调用,将主调函数放在被调函数的后面,就像变量先定义后使用一样。
如果自定义函数在主调函数的后面,就需要在函数调用前,加上函数原型声明。
函数声明:说明函数的类型和参数的情况,以保证程序编译时能判断对该函数的调用是否正确。
上周我学了你int与double对函数进行定义,这周来see see void类型
比如说我们想造一座这样的“金字塔”
我们可以这样讲
#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。
它适用把一些确定的、相对独立的程序功能包装成函数。
主函数通过调用不同的函数,体现算法步骤
各步骤的实现由相应函数完成
简化主函数结构,以体现结构化程序设计思想。
不过这个金字塔有升级版
我们可以这样来
#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循环的升级版🤔
然后就是这道题把我骗得云里雾里
又是考虑合并后总字符数的,又是搞第一个字符空格的,乱七八糟
(话说不是用函数做的,但他值得我搬上来吐槽吐槽)
#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