实验三

Task 1
#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); 
    }
    return 0;
}
void printSpaces(int n)
{
    int i; for (i = 1; i <= n; ++i) printf(" ");
}
void printBlankLines(int n)
{
    int i; for (i = 1; i <= n; ++i) printf("\n");
} 
void printText(int line, int col, char text[])
{
    printBlankLines(line - 1); // 
    printSpaces(col - 1); 
    printf("%s", text);
}

功能:随机输出十个hi,May~

Task 2

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

 

2_2

 

#include <stdio.h>
int fun(int, int);
int main()
{
    int k = 4, m = 1, p1, p2;
    p1 = fun(k, m);
    p2 = fun(k, m);
    printf("%d,%d\n", p1, p2);
    return 0;
}

int fun(int a, int b)
{
    static int m = 0, i = 2;
    i += m + 1;
    m = i + a + b;
    return m;
}

结果不变,static只初始化一次。

 

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

 

Task 4

#include<stdio.h>

void move(int n,char a,char c) 
{
    printf("第%d个盘子%c--->%c\n",n,a,c); 
}

void Hanoi(int n,char a,char b,char c)
{
    if(n==1) move(n,a,c);   
    else{
        Hanoi(n-1,a,c,b);
        move(n,a,c);            
        Hanoi(n-1,b,a,c);
    }
}
int main()
{
    int num;
    while (scanf("%d", &num) != EOF)
    {
    Hanoi(num,'A','B','C');
    }
    return 0;
}

Task 5

#include<stdio.h>
#include<math.h>
#include "stdio.h"
int is_prime(int a) 
{
    int j;
    for (j = 2;j < a;j++)
        if (a % j == 0)
            return 0;
        else
            return 1;
}
int prime(int number)
{
    int a = sqrt(number);
    for (int i = 2;i <= a;i++) {
        if (number % i == 0)
            return 0;
    }
    return 1;
}
int main()
{
    int count = 0, flag;
    for (int i = 2;i <= 20;i++) {
        flag = 0;
        for (int j = 2;j < i;j++) {
            for (int k = 2;k < i;k++) {
                if (i % 2 == 0 && prime(j) == 1 && prime(k) == 1 && i == j + k) {
                    printf("%d=%d+%d", i, j, k);
                    count++;
                    flag = 1;
                    break;
                }
            }
            if (flag == 1)
                break;
        }
        printf("\n");
    }
    return 0;
}

 

Task 6

#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 a = 0, b = 0, n = 1, i, c = 1;

    while (s != 0)
    {
        a = s % 10;
        if (a % 2 != 0)
        {
            b = a;
            s = s / 10;
            break;
        }
        s = s / 10;
    }



    while (s != 0)
    {
        a = s % 10;
        if (a % 2 != 0)
        {
            for (i = 1;i <= n;i++)
            {
                a = a * 10;
            }
            b = b + a;
            n++;
        }

        s = s / 10;
    }
    return b;

}

 

 

posted @ 2022-04-26 10:47  某不知名椭圆  阅读(32)  评论(0)    收藏  举报