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

这个程序实现了在控制台窗口上随机位置打印文本 "hi, November~",并在每次打印后暂停1秒。
任务2
#include<stdio.h>;
long long fac(int n);
int main()
{
int i, n;
printf("Entre n:");
scanf_s("%d",&n);
for (i = 1; i <= n; ++i)
printf("%d!=%11d\n",i,fac(i));
return 0;
}
long long fac(int n) {
static long long p = 1;
printf("p=%11d\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;
}

任务3:
#include <stdio.h>
long long func(int n) {
static int i, m = 1, s;
for (i = 1; i <= n; ++i)
{
m = m * 2;
}
s = m - 1;
m = 1;
return s;
}
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;
}

任务4:
迭代法:
#include <stdio.h>
int func(int n, int m)
{
static int i,s=1,k=1,t=1,ans;
for (i = 1; i <= n; ++i) {
s = s * i;
}
for (i = 1; i <= m; ++i) {
k = k * i;
}
for (i = 1; i <= (n - m); ++i) {
t = t * i;
}
ans = s / (k * t);
s = 1, k = 1, t = 1;
return ans;
}
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;
}

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

任务5:
#include <stdio.h>
#include <math.h>
void move(char a, char b)
{
printf("%c --> %c\n", a, b);
}
void hanoi(int n, char A, char B, char C)
{
if (n == 1)
{
move(A, C);
}
else
{
hanoi(n - 1, A, C, B);
move(A, C);
hanoi(n - 1, B, A, C);
}
}
int main()
{
int N;
while (scanf_s("%d", &N) != EOF)
{
int tol;
tol = pow(2, N) - 1;
hanoi(N, 'A', 'B', 'C');
printf("\n");
printf("一共移动了%d次\n", tol);
printf("\n");
}
return 0;
}

任务6
#include <stdio.h>
#include <math.h>
long func(long s);
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 = 1;
int ans = 0;
while (s > 0) {
if ((s % 10) % 2 != 0) {
ans = ans + (s % 10) * i;
i *= 10;
s /= 10;
}
else
s /= 10;
}
return ans;
}
