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> 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; }
#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){ int result; if (n==1) {result=1;} else if(n>1) {result=2*func(n-1)+1;} return result; }
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) { int up=1,down=1,i,a=n; for(i=1;i<=m;++i) {up*=a; a--; down*=i;} return up/down; }
递归
#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 result; if(n<m) {result=0;} else if(m==0||n==1&&m==1) {result=1;} else { result=func(n-1,m)+func(n-1,m-1); } return result; }
task5
#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,i,step; scanf("%u",&n); hanoi(n,'A','B','C'); step=pow(2,n)-1; printf("一共移动了%d次",step); } 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); }
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 n,i=0,result=0; while(s!= 0) { n=s%10; s=s/10; if(n%2!=0) { result = n * pow(10,i) + result; ++i;} } return result; }