任务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);//暂停1000ms } return 0; } //打印n个空格 void print_spaces(int n) { int i; for(i=1;i<=n;++i) printf(" "); } //打印n行空白行 void print_blank_lines(int n) { int i; for(i=1;i<=n;i++) printf("\n"); } //在第line行第col列打印一段文本 void print_text(int line,int col,char text[]){ print_blank_lines(line-1);//打印line-1行空格 print_spaces(col-1);//打印col-1列空格 printf("%s",text);//在第line行、col列输出text中字符串 }
作用:在频幕上随机打印hi,November~
任务2
//利用局部static变量的特性,计算阶乘 #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; printf("p=%lld\n",p); p = p*n; return p; }
任务2.2
//练习:局部static变量特性 #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; }
static特性:使用static时,调用完函数后,函数用用static修饰的变量内存不会释放,即变量的值一值存储,不会消失,下一次可以直接再变量已有的值的基础上进行运算
任务3
#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-1); } return 0; } long long func(int n) { long long m; if(n==0) m=1; else m = 2*func(n-1); return m; }
任务4.1
#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 a=1,b=1,c=1; int k; int i; for(i=1;i<=n;i++) a*=i; for(i=1;i<=m;i++) b*=i; for(i=1;i<=n-m;i++) c*=i; int sum; sum = a/(b*c); return sum; }
任务4.2
#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; else if(n==m||m==0) return 1; else return func(n-1,m) + func(n-1,m-1); }
任务5
#include<stdio.h> void hanoi(unsigned int n,char from,char temp,char to); void moveplate(unsigned int n,char from,char to); int a; int main() { unsigned int n; while(scanf("%u",&n)!=EOF) { a=0; hanoi(n,'A','B','C'); printf("一共移动了%d次\n",a); } 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); a+=1; }
任务6
#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 m=0; int k; k = s; while(k!=0) { if((k%10)%2==1) { m = m*10+k%10; k/=10; } else { k/=10; } } int n; while(m!=0) { n = n*10+m%10; m/=10; } return n; }
任务7
#include<stdio.h> int main(){ int n; int x; int y; int arr1[10]; int arr2[6]; int i,j,k; int t; for(n=45;n<100;++n){ x=n*n; y=n*n*n; for(i=0;i<4;++i) { arr1[i]=x%10; x/=10; } for(j=0;j<6;++j) { arr2[j]=y%10; y/=10; } for(i=4;i<10;++i) arr1[i]=arr2[i-4]; for(j=0;j<9;++j) { for(i=0;i<9-j;++i) { if(arr1[i]>arr1[i+1]) { t=arr1[i]; arr1[i]=arr1[i+1]; arr1[i+1]=t; } } } k=0; for(i=0;i<10;i++){ if(arr1[i]!=i) break; k++; } if(k==10) printf("%d\n",n); } return 0; }
标签:第三次,int,long,char,实验,func,printf,include From: https://www.cnblogs.com/hychychyc/p/17809576.html