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

代码功能

以系统时间为随机种子在随机行输出“hi november”10次

task2

源代码

#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;
    printf("%lld\n", p);
    p = p * n;
    return p;
}
#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;
}

截图

局部静态变量特点

(1)该变量在全局数据区分配内存;
(2)静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化;
(3)静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为 0;
(4)它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束。(1)该变量在全局数据区分配内存;

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

截图

task4

源代码

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

截图

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


截图

 

 

task6

源代码

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

截图

task7

源代码

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int is_prime(unsigned int n);

int main()
{
    int i,p, q, p_flag, q_flag;
    unsigned int n;
    while (scanf_s("%d", &n) != EOF)
    {
        if (n % 2 == 1 || n < 4)
        {
            printf("数据输入错误");
            return 0;
        }
        p = 1;
        do
        {
            p = p + 1;
            q = n - p;
            p_flag = is_prime(p);
            q_flag = is_prime(q);
        } while (p_flag* q_flag ==0);
        printf("%d=%d+%d\n", n, p, q);
    }
    return 0;
}
int is_prime(unsigned int n)
{
    int i, m;
    m = sqrt(1.0 * n);
    for (i = 2; i <= m; i++)
        if (n % i == 0)break;
    if (i > m && n != 1)
        return 1;
    else
        return 0;
}

截图

task8

源代码

#include<stdio.h>
#include<math.h>
long func(long s);
int digit[100];
int digit_[100];
int main()
{
    long s, t;

    printf("Enter a number:");
    while (scanf_s("%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=0,t,m=0,n,x=0;
    do
    {
        digit[i] = s % 10;
        s = (s - digit[i])/10;
        i++;
    } while (s - digit[i] != 0);
    for (t = 0; t <= i; t++)
    {
        if (digit[t] % 2 == 1)
        {
            digit_[m] = digit[t];
            m++;
        }
    }
        for (n = 0; n <= m; n++)
            x = x + digit_[n] * pow(10, n);
    return x;
}

截图

 

原文地址:http://www.cnblogs.com/lzq0306/p/lzqprogramtask3.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性