实验三 函数

实验一:

#include <stdio.h> #include <stdlib.h> #include <time.h> #include <windows.h> #define N 80 void printText(int line, int col, char text[]); void printSpaces(int n); void printBlankLines(int n); int main() { int line, col, i; char text[N] = "hi, May~"; srand(time(0)); /*以当前系统时间作为随机种子*/ for(i=1; i<=10; ++i) { line = rand()%25; col = rand()%80; printText(line, col, text); Sleep(1000); /*暂停1000ms*/ } return 0; } /* 打印n个空格*/ void printSpaces(int n) { int i; for(i=1; i<=n; ++i) printf(" "); } /*打印n行空白行*/ void printBlankLines(int n) { int i; for(i=1; i<=n; ++i) printf("\n"); } /*在第line行第col列打印一段文本*/ void printText(int line, int col, char text[]) { printBlankLines(line-1); /*打印n-1行空行*/ printSpaces(col-1); /* 打印n-1列空格*/ printf("%s", text); }

程序的功能:以弹幕的方式随机弹出:“hi,May~”

 

实验二:

 tesk2-1


//利用局部static变量的特性,计算阶乘

#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;
}

 

 

 

task2-2

 

//练习:局部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;
}

task 3:

#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)
{
    int i;
    long long a=0,p=1;
    
    if(n==0) a=1;
    else 
    {
        for(i=1;i<=n;i++)
        {
            p=p*2;
        }
        a=p-1;
    }
    return a;
}

task4:

#include <stdio.h>
void hanoi(unsigned n, char from, char temp, char to);  
void moveplate(unsigned n, char from ,char to); 
int sum(int n);

int main() 
{
    unsigned n; 
    
    while (scanf("%u", &n) != EOF)
    {
        hanoi(n, 'A', 'B', 'C');
        printf("一共移动盘子的次数:%ld\n",sum(n));
    }    
    
    0;
}


// 功能描述:把n个盘子,从from →to, 借助temp
void hanoi(unsigned n, char from, char temp, char to) 
{
    if(n==1)
        moveplate(n, from, to);
    else 
    {
        hanoi(n-1, from , to, temp);
        moveplate(n, from, to);
        hanoi(n-1, temp, from, to); 
    }
}


// 功能描述:把第n个盘子,从from →to
void moveplate(unsigned n, char from, char to) 
{
    printf("第%u个盘子: %c --> %c\n", n, from, to);
}


// 功能描述:记录移动次数 
int sum(int n)
{
    int m;
    
    if(n==1)
      m=1;
    else
      m=2*sum(n-1)+1;
    
    return m;
    
}

task5:

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define N 20
int is_prime(int x);

int main()
{
    int i, j, m, n;
    int fm, fn, fi;
    for(i=4; i<=N; i+=2)
    {
        for(m=2; m<=i; m++)
        {
            n=i-m;
            fm=is_prime(m);
            fn=is_prime(n);
            if(fm==1&&fn==1)
              {
                  printf("%d =%d + %d\n", i, m, n);
                  break;
              }
        }
    }
}

int is_prime(int a)
{
    int b, k, Flag=1;
    k=sqrt(a);
    
    if(a==2)
       return Flag=1;
    else
       for(b=2;b<=k;b++)
      {
        if((a%b)==0) 
          {
          Flag=0;
          break;
          }
        
      }
     return Flag;
 }

task6:

#include<stdio.h>
long fun(long s);
int main()
{ 
    long s, t;
    printf("enter a number: ");
    while (scanf("%ld", &s) != EOF)
    {
        t = fun(s); // 函数调用
        printf("new number is: %ld\n\n", t);
        printf("Enter a number: "); }
        
        return 0; 
    }

long fun(long s)
{
    long m,k,g,w,z;
    k=0;
    z=0;
    m=s;
    while(m)
    {
        g=m%10;
        m=m/10;
        
        if(g%2)
        k=k*10+g;
    }

while(k)
{
    w=k%10;
    k=k/10;
    z=z*10+w;
}

    return z;
}

 

posted @ 2022-04-24 18:13  hezroy  阅读(35)  评论(0)    收藏  举报