实验三

任务1

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

任务2.1

#include <stdio.h> 
long long fac(int n);
int main() {
    int i, n;
    printf("Enter n: "); 
    scanf_s("%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; 
}

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

任务3

#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 int result = 0;
    if (n == 1)
        result = 1;
    else
        result = 2 * func(n - 1) + 1;
    return result;
}

 

任务4

#include <stdio.h> 
int func(int n, int m);
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 func(int n, int m) {
    int ans = 1;
    if (n < m) { ans = 0; }
    else if (m == 0 || m == n) { ans = 1; }
    else ans = func(n - 1, m) + func(n - 1, m - 1);
    return ans;
}

 

任务5

#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 mid = 0, ans = 0;
    if (n < m) { mid = n, n = m, m = mid; }
    if (m == 1) { ans = n; }
    if (m != 0 && n != 0) {
        ans = n + mul(n, m - 1);
    }
    else return 0;
    return ans;

}

任务6

#include< stdio.h>
#include<stdlib.h>
#include<math.h>
void hanoi(unsigned int n, char from, char temp, char to);
void moveplate(unsigned int n, char from, char to);
int main()
{
    unsigned int n;
    int m;
    while (scanf_s(" %u", &n) != EOF) {
        hanoi(n, 'A', 'B', 'C');
        m = pow(2, n) - 1;
        printf("一共移动了%d次.\n", m);
        system("pause");
    }
    return 0;
}
void hanoi(unsigned int 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);
    }
}
void moveplate(unsigned int n, char from, char to)
{
    printf(" %u: %c-->%c\n", n, from, to);
}

任务7

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int isprime(int n);
int main() {
    int a, b, c;
    printf("请输入一个20以内的偶数:\n");
    while (scanf_s("%d", &a)<=20) {
        for (b = 2; b <= a; b++) {
            c = a - b;
            if (isprime(b) && isprime(c) && (b + c) == a)
                printf("%d=%d+%d\n", a, b, c);
        }
    }
    return 0;
}
int isprime(int n) {
    if (n == 1)
        return 0;
    int k;
    for (k = 2; k <= sqrt(1.0 * n); k++)
        if (n % k == 0)
            return 0;
    return 1;
}

 

任务8

#include<stdio.h>
#include<math.h>
long fun(long s);
int main() {
    long s, t;
    printf("Enter a number:");
    while (scanf_s("%ld", &s) != EOF) {
        t = fun(s);
        printf("new number is:%d\n\n", t);
        printf("Enter a number:");
    }
    return 0;
}
long fun(long s) {
    int a = 0, b = 0;
    while (s > 0) {
        if (s % 2 == 0)
            s = s / 10;
        else {
            a = a + pow(10, b) * (s % 10);
            s = s / 10;
            b++;
        }
    }
    return a;
}

 

posted @ 2022-11-08 23:47  15468483  阅读(24)  评论(0)    收藏  举报