4-1函数

4-1函数

    • 4-1.函数
      • 1.计算球的体积
      • 2.求m到n之和
      • 3.素数判断函数编写
      • 4.回文数判断函数
      • 5.区间内素数计数
      • 6.输出区间内所有的闰年
      • 7.输出三位数中所有的水仙花数
      • 8.复数运算(全局变量)
      • 9.求平面坐标中某线段的中点坐标(全局变量)
      • 10.回文素数

由于编者水平有限,有错误欢迎提出指正

4-1.函数

1.计算球的体积

描述
定义一个计算球体积的函数volumnOfBall(),形参为半径(半径可以是小数值),返回球的体积。在主函数main()中从键盘输入半径r,调用自定义函数volumnOfBall()求球的体积并输出。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

pi取值为3.1415,输出保留三位小数
球体积计算公式:在这里插入图片描述

#include 
#define PI 3.1415
//注意r可能是小数
//用float或者double
//对应占位符应用%f / % lf
float volumnOfBall(float r)     //球体积只需要一个参数 r--半径
{float v;v = (4.0/3)*PI*r*r*r;       //注意整数除法问题return v;                   //返回结果
}
int main(void){//在此定义主函数代码float r;                //变量作用域问题float v;                //可以与上面的函数同名scanf("%f",&r);         //不要漏了去地址符&v = volumnOfBall(r);printf("%.3f",v);       //保留三位小数;return 0;
}

2.求m到n之和

编写一个函数,要求实现一个计算m~n(m 函数接口定义:
int sum( int m, int n );‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

其中m和n是用户传入的参数,保证有m

#include int sum(int m, int n);int main()
{    int m, n;scanf("%d %d", &m, &n);printf("sum = %d\n", sum(m, n));return 0;
}int sum(int m,int n)
{int i;              //循环控制int sum = 0;        //求和一般初始化为0,积初始化为1for(i=m;i<=n;i++)   //从m到n的一般写法{sum+=i;         //加和}return sum;			//返回结果
}

3.素数判断函数编写

请根据编程模板,编写一个函数,该函数的功能是判断一个数是否是素数。如果是素数,则返回1,否则返回0。

#include
int prime(int n)					//因为返回0,1返回值int
{int i;if(n<2)							//素数从2开始!{return 0;}for (i = 2; i <= n - 1; i++)	//循环从2到n-1{								//如果为2不会进入循环,返回值也是1if (n % i == 0){return 0;				//只要有一个就不是素数,返回0}}return 1;						
}int main()
{int n;scanf("%d", &n);if (prime(n))printf("%d是素数。", n);elseprintf("%d不是素数。", n);return 0;
}

4.回文数判断函数

根据模板,编写一个函数,完成回文数判断的功能。如果是回文数,则返回1,如果不是回文数,则返回0。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

回文数首先是自然数,是指正序读取与逆序读取,都是同一个数,例如,12321是回文数,而12312就不是回文数。

注意:题目并没说是几位数!

#includeint reversedNum(int n)//判断是否是回文数,是返回1,否则返回0
{
int t=0,m=n;
while(m)	//如果m不等于0,执行下面循环,否则跳出循环 (求这个数各位上数字反向排列的数 )
{
t*=10;		//一步一步来,我也迷糊
t+=m%10;	//整除十是取前n-1位,对10取余是取最后一位
m/=10;		//我百度来的,妙啊!
}
return t==n;//如果这个数各位数字反向排列所得数依然等于该数,该数就是回文数//t==n是逻辑表达式,值为0或者1
}int main()
{int n;scanf("%d",&n);if(reversedNum(n))printf("%d是回文数。",n);elseprintf("%d不是回文数。",n);return 0;
}

5.区间内素数计数

编写程序,接受两个整数作为一个区间的边界。判断该区间内有多少个素数。将素数的个数输出,不要输出任何其他多余字符。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

请编写一个函数,实现判断一个数是否是素数的功能。如果是素数,则返回1,否则返回0。 ‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

输入示例1:2 1000‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

输出示例1:168‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

输入示例2:1000 2(思考应如何处理?)‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

输出示例2:168

#include
int prime(int n);				//写在main后面的函数要先声明
int main()
{int a, b,t,count=0;scanf("%d%d", &a, &b);if (a > b)					//如果a>b则a,b交换{t = a; a = b; b = t;}for (t = a; t <= b; t++)	//是素数则count++{if (prime(t)){count++;}}printf("%d", count);return 0;
}
int prime(int n)
{int i;						for (i = 2; i < n; i++)		//从2~n-1判断是否能整除{if (n % i == 0){return 0;			//只要有一个就返回0}}return 1;
}

6.输出区间内所有的闰年

描述
定义一个判断润年的函数isLeapYear(),形参为年份,如果是润年返回1,否则返回0。在主函数main()中从键盘输入起始年份和终止年份,用逗号分隔,然后调用自定义函数isLeapYear(),将所有的润年年份输出,每个年份占6位宽度。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

闰年的判断条件:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

能被4整除但不能被100整除,或者能被400整除。

#include 
int isLeapYear(int year) 
{if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)	//注意判断闰年条件是3个{return 1;		//闰年返回1}else{return 0;}
}
int main(void) 
{int y1, y2, i;scanf("%d,%d", &y1, &y2);for (i = y1; i <= y2; i++){if (isLeapYear(i)){printf("%6d", i);		//题目要求占6个宽度}}return 0;
}

7.输出三位数中所有的水仙花数

描述
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

自定义一个判断水仙花数的函数isFlower(),形参为正整数,如果是水仙花数,返回1,否则返回0。在主函数main()中调用自定义函数isFlower()输出所有的水仙花数。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

#include 
#include 
int isFlower(int num) 
{int gw, sw, bw, result;				//百位bw拼音。。bw = num / 100;sw = (num - bw * 100) / 10;gw = num % 10;result = pow(bw, 3) + pow(sw, 3) + pow(gw, 3);if (result == num) {return 1;}else{return 0;}
}
int main(void) 
{int num;for (num = 100; num <= 999; num++){if (isFlower(num)){printf("%d\n", num);}}return 0;
}

8.复数运算(全局变量)

描述
我们把形如z=a+bi(a,b均为实数)的数称为复数,其中a称为实部,b称为虚部,i称为虚数单位。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

复数的加法:
设z1=a+bi,z2=c+di是任意两个复数,则它们的和是 (a+bi)+(c+di)=(a+c)+(b+d)i
定义2个全局变量result_real和result_image,设计一个自定义函数complex_add(),在主函数main()中调用complex_add(),将用户输入的2个复数的实部和虚部传给自定义函数,在自定义函数中完成两个复数和的计算并存入全局变量中,最后在主函数main()中输出计算结果。
提示:将模板代码补全,不要更改程序结构。

PS:比较简单就不写注释了

#include  
float result_real, result_image;
void complex_add(float a,float b,float c,float d)
{result_real = a + c;result_image = b + d;
}int main(void) {float a, b, c, d;scanf("%f%f%f%f", &a, &b, &c, &d);complex_add(a, b, c, d);printf("%.2f+%.2fi\n",result_real,result_image);return 0;
}

9.求平面坐标中某线段的中点坐标(全局变量)

描述
定义2个全局变量cx和cy,分别用于存放线段中点的x和y坐标值;设计一个自定义函数center(),在主函数main()中调用center(),将用户输入的线段2个端点的坐标值传给自定义函数,在自定义函数中计算中点坐标,在主函数main()中输出结果。
提示:将模板代码补全,不要更改程序结构。

#include  
int cx, cy;
void center(int x1,int y1,int x2,int y2) 
{cx = (int)((1.0 / 2)*(x1 + x2));		//注意整数除法和括号,int可不写,也会被截断cy = (int)((1.0 / 2)*(y1 + y2));		//不影响答案
}int main(void) {int x1, y1, x2, y2;scanf("%d%d%d%d", &x1, &y1, &x2, &y2);center(x1,y1,x2,y2);printf("%d,%d\n", cx, cy);return 0;
}

10.回文素数

151既是素数又是个回文。现在想要你找出 a 跟b 之间所有的回文素数。(5 <= a < b <= 100,000,000);
可将前面的回文函数和素数函数copy过来

#includeint reversedNum(int n)//判断是否是回文数,是返回1,否则返回0
{int t = 0, m = n;while (m)//如果m不等于0,执行下面循环,否则跳出循环 (求这个数各位上数字反向排列的数 ){t *= 10;t += m % 10;m /= 10;}return t == n;//如果这个数各位数字反向排列所得数依然等于该数,该数就是回文数
}
int prime(int n)
{int i;for (i = 2; i < n; i++)		//除了2外,其余从2~n-1判断是否能整除{if (n % i == 0){return 0;			//只要有一个就返回0}}return 1;
}
int main()
{int a,b,i;scanf("%d%d", &a,&b);i = a;while(i<=b){if (reversedNum(i) && prime(i))		//同时满足才为真{printf("%d\n", i);}i++;}return 0;
}

点赞点赞!!!


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部