20050109dfe

导航

实验三

#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); // 暂停1000ms
}
return 0;

} // 打印n个空格

void print_spaces(int n) {
int i;

for(i = 1; i <= n; ++i)
printf(" ");
}

 // 打印n行空白行
void print_blank_lines(int n) {
int i;
for(i = 1; i <= n; ++i)
printf("\n");
}

// 在第line行第col列打印一段文本
void print_text(int line, int col, char text[]) {
print_blank_lines(line-1); // 打印(line-1)行空行
print_spaces(col-1); // 打印(col-1)列空格
printf("%s", text); // 在第line行、col列输出text中字符串
}

功能:每隔一秒在下面随机行,随机列打印字符串

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

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

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 f;
    if(n==1)
    f=1;
    else
    f=(func(n-1)+1)*2-1;
    return f;


}

task4-1

#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 i,j,a=1,b=1;
    if(n<m)
    return 0;
    if(n==m||m==0)
    return 1;
    for(i=1;i<=m;i++)
        a*=i;
    for(j=n;j>=n-m+1;j--)
        b*=j;
    return b/a;
}

task5

#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 s;
    if(n<m)
    s=0;
    else if(n==m||m==0)
    s=1;
    else
    s= func(n-1, m)+ func(n-1, m-1);
    return s;
}

task6

#include <stdio.h>
#include <math.h>
long func(long s); // 函数声明

int main()
{
    long s, t;
    printf("Enter a number: ");
    while (scanf("%ld", &s) != EOF)
    {
        t = func(s); // 函数调用
        printf("new number is: %ld\n\n", t);
        printf("Enter a number: ");
    }
    return 0;
}

long func(long s)
{
    int i,k,d=1,sum=0;
    int a[10];
    int b[10];
    for(i = 0,k = 0;i<10;i++)
    {
        a[i] = s%10;
        if(a[i]%2 != 0)
        {
            b[k]=a[i];
            k++;
        }
        s /= 10;
    }
    for(i=0;i<k;i++)
    {
        sum+=b[i]*d;
        d *= 10;
    }
    return sum;
}

 

posted on 2023-11-04 20:47  戴菲不想跑步伐  阅读(8)  评论(0编辑  收藏  举报