实验三
#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到n的阶乘*//
#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!=%11d\n", i, fac(i));
return 0;
}
long long fac(int n) { //*函数的定义*//
static long long p = 1;//*定义p为一个静态变量*//
p = p * n;
return p;
}
局部变量static是为了让p保存上一次运算

实验任务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=%d\n", n, f);
}
return 0;
}
long long func(int n) {//*函数定义*//
int f;
if (n == 1)
f = 1;
else
f = 2 * func(n - 1) + 1;
return f;
}

实验任务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 f;
if (n < m)
return 0;
if (n == m || m == 0)
return 1;
else
f = func(n - 1, m) + func(n - 1, m - 1);
return f;
}

实验任务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 M;
if(m==0||n==0)
M = 0;
else
M = n + mul(n, m - 1);
return M;
}

实验任务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,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;
}


浙公网安备 33010602011771号