实验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);
    }
    system("pause");
    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-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;
  p = p * n;
  return p;
}

  

task2-1-2

#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变量可以保存变量被修改后的值,使得变量不会在每一次的循环重复时被初始化

 task3

#include <stdio.h>
long long func(int n); 
int main() {
  int n;
  long long f;
  while (scanf_s("%d", &n) != EOF) {
    f = func(n); 
    printf("n = %d, f = %lld\n", n, f);
 }
  return 0;
  }
   
  long long func(int n)
  {
  long long m;
  if(n==0)
    m=0;
  else
    m=2*func(n-1)+1;
     
    return m;
}

  

task4

#include<stdio.h>
int func(int n, int m);
int fac(int);
int main()
{
	int n, m;

	while (scanf_s("%d%d", &n, &m) != EOF)
		printf("n=%d,m=%d,ans=%d\n", n, m, func(n, m));
	return 0;
}
int fac(int n) {
	int i, p = 1;
	for (i = 1; i <= n; i++)
		p = p * i;
	return p;
}
int func(int n, int m)
{
	if (n < m)
		return 0;
	else if (m == 0)
		return 1;
	else
		return fac(n) / (fac(m) * fac(n - m));
}

  

task5

#include <stdio.h>
int mul(int n, int m);
int main() {
  int n, m;
  while(scanf_s("%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||n=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>
#include<math.h>
int is_prime(int n);
int main() {
    int n = 0;
    int m = 0;
    int a;
    for (n = 4; n <= 20; n += 2)
    {
        for (a = 2; a <= n / 2; a++) {
            if (is_prime(a) && is_prime(n - a))
            {
                printf("%d=%d+%d", n, a, n - a);
                printf("\n");
            }
        }
    }


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

  

task 8

#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-06 11:30  梁坤123  阅读(17)  评论(0编辑  收藏  举报