实验3

 task1


#include<stdio.h> #include<stdlib.h> #include<time.h> #include<Windows.h> #define N 80 void print_text(int line, int col, char text[]); void print_spaces(int n); void print_blank_lines(int n); int main() { int line, col, i; char text[N] = "hi,November~"; srand(time(0)); for (i = 1;i <= 10;i++) { line = rand() % 25; col = rand() % 80; print_text(line, col, text); Sleep(1000); } return 0; } void print_spaces(int n) { int i; for (i = 1;i <= n;++i) printf(" "); } void print_blank_lines(int n) { int i; for (i = 1;i <= n;++i) printf("\n"); } void print_text(int line, int col, char text[]) { print_blank_lines(line - 1); print_spaces(col - 1); printf("%s", text); }

task2.1


#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


#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保持变量的内容持久,在函数调用过程中,变量不变。

task3


#include <stdio.h> long long func(int n); // 函数声明 int main() { int n; long long f; while (scanf("%d", &n) != EOF) { f = func(n); // 函数调用 printf("n = %d, f = %lld\n", n, f); } return 0; } long long func(int n) { long long result; if(n==0) result=0; else result=2*func(n-1)+1; return result; }

  

task4

#include <stdio.h>
int func(int n, int m);
int main() {
  int n, m;
  while(scanf("%d%d", &n, &m) != EOF)
    printf("n = %d, m = %d, ans = %d\n", n, m, func(n, m));
 
  return 0;
}

int func(int n, int m)
{
    int result;
    if(m>n)
    result=0;
    else if(m==0)
    result=1;
    else
    result=func(n-1,m-1)+func(n-1,m);
    return result;
}

task5

#include <stdio.h>
int mul(int n, int m);
int main() {
  int n, m;
  while(scanf("%d%d", &n, &m) != EOF)
     printf("%d * %d = %d\n", n, m, mul(n, m));

  return 0;
}

int mul(int n, int m)
{
    int result;
    if(m==0)
        result=0;
    else
        result=mul(m,n-1)+m;
    return result;
}

task6

#include<stdio.h>
#include<stdlib.h>
void hanoi(unsigned int n,char from,char temp,char to);
void move(unsigned int n,char from,char to);
int count=0;
int main()
{
    unsigned int n;
    while(scanf("%u",&n) != EOF)
    {
    hanoi(n,'A','B','C');
    printf("一共移动了%d次\n", count);
    count=0;
    }
    return 0;
}

void hanoi(unsigned int n,char from,char temp,char to)
{
    if(n==1)
     move(n,from,to);
    else
    {
        hanoi(n-1,from,to,temp);
        move(n,from,to);
        hanoi(n-1,temp,from,to);
    }
}

void move(unsigned int n,char from,char to)
{
    printf("%u:%c-->%c\n",n,from,to);
    count++;
}

 task7

#include<stdio.h>
int is_prime(int n);
int main()
{
    int m,j;
    while(scanf("%d",&m)!=EOF)
    {
     for(j=2;j<m;j++)
     {
        if(is_prime(j)+is_prime(m-j)==2)
        {
            printf("%d=%d+%d\n",m,j,m-j);
            break;
        }
     }
    }
    return 0;
}

int is_prime(int n)
{
    int i,result=1;
    for(i=2;i<n;i++)
    {
        if(n%i==0)
        {
        result=0;
        break;
        }
    }
    return result;
}

 

task8

#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)
{
    int r=0,d;
    int m,n=0;
    while(s>0)
    {
        d=s%10;
        s/=10;
        if(d%2==1)
        r=r*10+d;
    }
    while(r>0)
    {
        m=r%10;
        n=n*10+m;
        r/=10;
    }
    return n;
}

 

posted @ 2022-11-03 15:25  王兰花泽类  阅读(44)  评论(0)    收藏  举报