1.使用函数计算分段函数的值:输入x,计算并输出下列分段函数f(x)的值。要求定义和调用函数sign(x)实现该分段函数。试编写相应程序。 f(x)=1 x>0
=0 x=0
=-1 x<0
#include <stdio.h>
int sign(int x);
int main()
{
int x;
printf("Enter a number:\n");
scanf("%d", &x);
printf("f(%d)=%d", x, sign(x));
return 0;
}
int sign(int x)
{
if (x > 0)
{
return (1);
}
else if (x < 0)
{
return (-1);
}
else
{
return (0);
}
}
2.使用函数求奇数和:输入一批正整数(以零或负数为结束标志),求其中的奇数和。要求定义和调用函数even(n)判断数的奇偶性,当n为偶数时返回1,否则返回0试编写相应程序。
#include <stdio.h>
int jishu(int x);
int main()
{
int n;
int sum=0;
printf("请输入一批正整数(以零或负数为结束标志):\n");
while (1)
{
scanf("%d",&n);
if (n<=0)
{
break;
}
if (jishu(n)==0)
{
sum=sum+n;
}
}
printf("奇数和为:%d\n",sum);
return 0;
}
int jishu(int x)
{
int ret;
if (x%2==0)
{
ret=1;
}
else
{
ret=0;
}
return ret;
}
3.使用函数计算两点间的距离:给定平面任意两点坐标(x1,y1)和(x2,y2),求这两点之间的距离(保留2位小数)。要求定义和调用函数dist(x1,y1,x2,y2)计算两点间的距离。试编写相应程序。
#include <stdio.h>
#include <math.h>
double dist(double x1, double y1, double x2, double y2);
int main()
{
double x1, y1, x2, y2;
double l;
printf("Enter x1,y1,x2,y2:\n");
scanf("%lf %lf %lf %lf", &x1, &y1, &x2, &y2);
printf("两点之间的距离公式为:%.2f", dist(x1, y1, x2, y2));
return 0;
}
double dist(double x1, double y1, double x2, double y2)
{
double l;
l = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
return l;
}
4.利用函数计算素数个数并求和:输入两个正整数m和n(1≤m,n≤500),统计并输出m和n之间的素数的个数以及这些素数的和。要求定义并调用函数
prime(m)判断m是否为素数。试编写相应程序。
#include <stdio.h>
#include <math.h>
int prime( int p );
int PrimeSum( int m, int n );
int main()
{
int m, n, p;
int count=0;
scanf("%d %d", &m, &n);
printf("Sum of ( ");
for( p=m; p<=n; p++ ) {
if( prime(p) != 0 ){
printf("%d ", p);
count++;
}
}
printf(") = %d\n", PrimeSum(m, n));
printf("sushu has %d",count);
return 0;
}
//函数prime当用户传入参数p为素数时返回1,否则返回0
int prime(int p)
{
int isPrime =1;
if(p<=1){
isPrime = 0;
}else{
for(int j=2;j<p;j++){
if(p%j==0){
isPrime = 0;
break;
}
}
}
return isPrime;
}
int PrimeSum( int m, int n )
{
int sum=0;
for(int i=m; i<=n; i++ ) {
if( prime(i) != 0 )
sum+=i;
}
return sum;
}
5.使用函数统计指定数字的个数:读入一个整数,统计并输出该数中“2”的个数。要求定义并调用函数 countdigit( number digit),它的功能是统计整数 number中数字 digit的个数。例如,
countdigit(12292,2的返回值是3。试编写相应程序。
#include <stdio.h>
int countdigit(number,digit);
int main()
{
int number,digit;
printf("Enter number and digit:\n");
scanf("%d %d", &number, &digit);
printf("%d",countdigit(number, digit));
return 0;
}
int countdigit(int number,int digit)
{
int count=0;
if (number<0)
number=-number;
do
{
if(digit==number%10)
count++;
number=number/10;
} while (number);
return count;
}
6.使用函数输出水仙花数:输入两个正整数m和n(1≤m,n≤1000),输出m之间的所有满足各位数字的立方和等于它本身的数。要求定义并调用函数is(number)判断number的各位数字之立方和是否等于它本身。试编写相应程序。
#include <stdio.h>
int function(int n) //自定义函数
{
int i,g,s,b;
b=n/100;
s=(n-b*100)/10;
g=n%10;
return n==g*g*g+b*b*b+s*s*s;//返回n
}
int main()
{
int i,m,n;
printf("Enter m and n:\n");
scanf("%d %d",&m,&n);
if(m>=1&&n<=1000)
{
for(i=m;i<n;i++)//遍历
{
if(function(i))
printf("%d\n",i);
}
}
else
{
printf("Invalid value");
}
return 0;
}
7.使用函数求余弦函数的近似值:输入精度e,用下列公式计算cosx的近似值,精确到最后一项的绝对值小于e。要求定义和调用函数funcos(e,x)求余弦函数的近似值。试编写相应程序。
cos(x)=x0/0!−x2/2!+x4/4!−x6/6!+⋯
#include <stdio.h>
#include <math.h>
double funcos(e,x);
int main()
{
double e, x;
scanf("%lf %lf", &e, &x);
printf("cos(%.2f) = %.6f\n", x, funcos(e, x));
return 0;
}
double funcos(double e,double x)
{
double ans = 1, term = ans;
double xx = 1, down = 1, d = 0;
double f = -1;
while (fabs(term) >= e)
{
xx *= (x * x);
down *= (d + 1) * (d + 2);
term = f * xx / down;
ans += term;
f *= (-1);
d += 2;
}
return ans;
}