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);
}
实验截图:

task2:
源代码:
#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){
if(n == 0)
return 0;
if(n == 1)
return 1;
if(n > 1)
return 2*func(n-1)+1;
}
实验截图:

task4_迭代
源代码:
#include<stdio.h>
int func(int n,int m);
int fac(int);
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 fac(int n){
int i,p = 1;
for(i = 1;i<=n;++i)
p = p*i;
return p;
}
int func(int n,int m){
return fac(n)/(fac(m)*fac(n-m));
}
实验截图:

task4_递归
源代码:
#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){
if(n < m)
return 0;
if(m == 0)
return 1;
if(m == 1)
return n;
if(m == n)
return 1;
else
return func(n - 1,m) + func(n-1,m-1);
}
实验截图:

task5:
源代码:
#include<stdio.h>
#include<stdlib.h>
int i = 0;
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;
while(scanf("%u",&n)!=EOF){
hanoi(n,'A','B','C');
printf("一共移动了 %d 次\n", i);
i = 0;
}
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);
}
i++;
}
void moveplate(unsigned int n,char from,char to){
printf("%u:%c-->%c\n",n,from,to);
}
实验截图:

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(func(s));
printf("new number is:%ld\n\n",t);
printf("Enter a number:");
}
return 0;
}
long func(long s){
int digits = (int)(log10(s) + 1);
long result = 0;
for (int i = 0; i < digits; i++) {
int digit = (int)(s % 10);
if (digit % 2 == 1) {
result = result * 10 + digit;
}
s /= 10;
}
return result;
}
实验截图:

浙公网安备 33010602011771号