实验4

1、形参为变量,返回值类型与定义函数时变量类型一致。

   不能返回。

#include <stdio.h>
#include <math.h>

void solve(double a,double b,double c);

int main(){
    double a,b,c;

    printf("Enter a,b,c: ");
    while(scanf("%lf%lf%lf",&a,&b,&c)!=EOF){
         solve(a,b,c);
         printf("Enter a,b,c: ");
         }
         return 0;
         }

void solve(double a,double b,double c){
       double x1,x2;
       double delta,real,imag;

       if(a==0)
          printf("not quadratic equation.\n");
       else{
           delta = b*b - 4*a*c;

           if(delta>=0){
                   x1=(-b+sqrt(delta))/(2*a);
                   x2=(-b-sqrt(delta))/(2*a);
                   printf("x1 = %f,x2 = %f\n",x1,x2);
                   }

            else{
             real = -b/(2*a);
             imag = sqrt(-delta)/(2*a);
             printf("x1 = %f + %fi,x2 = %f - %fi\n",real,imag,real,imag);
             }
            }
        }

#include <stdio.h>
long long fac(int n);

int main(){
    int i,n;

    printf("Enter n: ");
    scanf("%d",&n);

    for(i=1;i<=n;++i)
     printf("%d! = %lld\n",i,fac(i));

     return 0;
}
long long fac(int n){
     static long long p=1;
     printf("p = %lld\n",p);
           p = p*n;
           return p;
        }

// 练习:局部static变量特性
#include<stdio.h>
int func(int, int);
int main() {
int k=4,m=1,p1,p2;
p1 = func(k,m) ;
p2 = func(k,m) ;
printf("%d,%d\n",p1,p2) ;
return 0;
}
int func(int a,int b) {
static int m=0,i=2;
i += m+1;
m = i+a+b;
return (m);
}

static变量赋初值再进入函数时保留上次结果

//寻找两个整数之间的所有素数(包括这两个整数),把结果保存在数组bb中,函数返回素数的个数。
// 例如,输入6和21,则输出为:7 11 13 17 19。
#include <stdio.h>
#define N 1000
int fun(int n,int m,int bb[N]) {
int i,j,k=0,flag;
for(j=n;j<=m;j++) {
flag=1;
for(i=2;i<j;i++)
if(j % i == 0) {
flag=0;
break;
}
if(flag!=0)
bb[k++]=j;
}
return k;
}
int main(){
int n=0,m=0,i,k,bb[N];
scanf("%d",&n);
scanf("%d",&m);
for(i=0;i<m-n;i++)
bb[i]=0;
k=fun(n,m,bb);
for(i=0;i<k;i++)
printf("%4d",bb[i]);
return 0;
}

#include <stdio.h>
long long fun(int n); // 函数声明
int main() {
int n;
long long f;
while(scanf("%d", &n) != EOF) {
f = fun(n); // 函数调用
printf("n = %d, f = %lld\n", n, f);
}
return 0;
}
long long fun(int n){

long long i;
if(n==0)
   {i=0;}
if(n==1)
   {i=1;}
if(n>=2)
    {i=2*fun(n-1)+1;}
   return i;
}

#include <stdio.h>
void draw(int n, char symbol); // 函数声明
#include <stdio.h>
int main() {
int n, symbol;
while(scanf("%d %c", &n, &symbol) != EOF) {
draw(n, symbol); // 函数调用
printf("\n");
}
return 0;
}
void draw(int n, char symbol){
int i,m,j;
for(i=1;i<=n;i++)
{for(m=1;m<n-i;m++)
{printf(" ");}
for(j=1;j<=2*i-1;j++)
{printf("%c",symbol);}
printf("\n");
}
}

posted @ 2020-12-05 22:22  yanwen0820  阅读(85)  评论(4)    收藏  举报