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,April~";
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);
}
功能:连续每隔1s随机打印10次行在[0,25)列在[0,80)之间的一串hi,april字符
task2
程序源码
#include <stdio.h>
#include<stdlib.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));
system("pause");
return 0;
}
long long fac(int n){
static long long p = 1;
printf("p = %lld\n",&p);
p=p*n;
return p;
实验截图

task2.2
程序源码
#include<stdio.h>
#include<stdlib.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);
system("pause");
return 0;
}
int func(int a,int b){
static int m = 0, i=2;
i+=m+1;
m=i+a+b;
return m;
实验截图

task3
程序源码
int main(){
int n;
long long f;
while (scanf("%d",&n)!=EOF){
f= func(n);
printf("n=%d,f=%lld\n",n,f);
}
system("pause");
return 0;
}
long long func(int n){
int ans;
if(n==1)
ans=1;
else
ans=func(n-1)*2+1;
return ans;
}
实验截图

task4
程序源码
#include<stdio.h>
#include<stdlib.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 ans;
if(m>n)
ans=0;
else
{
if(n==1||m==0)
ans=1;
else
ans=func((n-1),m)+func((n-1),(m-1));
}
return ans;
}
实验截图

task5.1
程序源码
#include<stdio.h>
#include<stdlib.h>
double mypow(int x,int y);
int main(){
int x,y;
double ans;
while(scanf("%d%d",&x,&y)!=EOF){
ans=mypow(x,y);
printf("%d的%d次方:%g\n\n",x,y,ans);
}
return 0;
}
double mypow(int x,int y){
double ans=1;
if(y>0)
{for(ans;y>=1;y--)
{ans=x*ans;}}
else
{for(ans;y<=-1;y++)
{ans=ans/((double)x);}}
return ans;
}
实验截图

task5.2
程序源码
#include<stdio.h>
#include<stdlib.h>
double mypow(int x,int y);
int main(){
int x,y;
double ans;
while(scanf("%d%d",&x,&y)!=EOF){
ans=mypow(x,y);
printf("%d的%d次方:%g\n\n",x,y,ans);
}
return 0;
}
double mypow(int x,int y){
double ans=1;
if(y==0)
ans=1;
else
{
if(y>0)
ans=x*mypow(x,y-1);
else
ans=mypow(x,y+1)/(double)x;}
return ans;
}
实验截图

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

task7
程序源码
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int is_prime(int n);
int main(){
int z=0,k=1,i=2,p=0,n,flag,flag2;
while(scanf("%d",&n)!=EOF){
for(i=2;i<=n;++i){
flag=is_prime(i);
if(flag==1)
{z=n-i;
flag2=is_prime(z);
if(flag==1&&flag2==1)
break;}}
printf("%d=%d+%d\n",n,i,z);}
system("pause");
return 0;
}
int is_prime(int n)
{
int i=2,a=0;
for(i;i<n;i++){
if(n%i==0)
{
a++;
}}
if(a==0)
return 1;
else
return 0;
}
实验截图

task8
程序源码
#include <stdio.h>
#include<stdlib.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: ");
}
system("pause");
return 0;
}
long func(long s)
{
int s1 = 1,d;
long w = 0;
while (s > 0)
{
d = s % 10;
if (d % 2 != 0)
{
w=s1 * d + w;
s1*= 10;
}
s /= 10;
}
return w;
}
实验截图
