实验3
实验1
功能:在屏幕上随机位置打印 hi ,April~
// hi april~
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
# define N 80
void print_text(int line,int col,char test[]);
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; //25=(24-0+1)+0 0~24
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
#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;//n 就是 i
return p;
}


实验2-2
#include<stdio.h>
int func(int a ,int b);
int main() {
int k=4,m=1,p1,p2;
p1 = func(k,m);
p2 = func(k,m);
printf("%d, %d\n",p1,p2);
}
int func(int a,int b)
{
static int m = 0,i = 2;
i +=m+1;
m = i+ a +b;
return m;
}

static: 1.赋值只赋一次
2.使数值不会被外部函数使用
3.使数据存储方式为静态存储
实验3-1
#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){
long long f=1;
int i;
for( i = 1;i<=n;i++)
f = 2*f;
f = f-1;
return f;
}

实验4
#include <stdio.h>
int func(int m,int n);
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> 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",x,y,ans); } return 0; } double mypow(int x,int y) { int i; double sum = 1.0; if(y == 0) sum = 1.0; else if(y>0) { for( i = y;i>0;i--) { sum = sum*x; } } else for( i = y;i<0;i++) { sum = 1.0/x*sum; } return sum; }

#include<stdio.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)
{
if(y == 0)
return 1;
else if(y>0)
return x*pow(x,y-1);
else
return 1.0 / x * mypow(x, y + 1);
}

实验6
#include<stdio.h>
void hanoi(int n,char a,char b,char c);
void moveplate(int n,char a,char c);
int i;//整个源文件都可以用
int main(){
char a = 'A',b = 'B',c = 'C';
int n;
while(scanf("%d",&n) != EOF)
{
i =0;
hanoi(n,a,b,c);
printf("一共移动了%d次\n",i);
}
return 0;
}
void hanoi(int n,char a,char b,char c){
if(n == 1)
moveplate(1,a,c);
else
{
hanoi(n-1,a,c,b);
moveplate(n,a,c);
hanoi(n-1,b,a,c);}
}
void moveplate(int n,char a,char c)
{
printf("%d:%c ---> %c\n",n,a,c);
i++;
}

实验7
#include<stdio.h>
int is_prime(int i) ;
int main(){
int n,j;
for(n=4;n<=20;n++)
{
if(n%2 == 0)
{
for(j=2;j<=(n-j);j++)
{
if(is_prime(j)&&is_prime(n-j) ==0)
continue;
printf("%d = %d + %d\n",n,j,n-j);
break;
}
}
}
return 0;
}
int is_prime(int i){
int count = 2;
for(count=2;count<=i/2;count++)
{
if (i%count == 0)
return 0;
break;
}
return 1;
}
实验8
#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 part,t=0;
do{
part=s%10;
s/=10;
if(part%2)
{
t = t*10 +part;
}
}while(s!=0);
int m,n=0;
while(t!=0)
{
m=t%10;
n = n*10+m;
t=t/10;
}
return n;
}

总结1,scanf(.........,&x)别少了&
2. int x 为全局变量时可以,可以用于计算自定义函数运行次数
3.
if(is_prime(j)&&is_prime(n-j) ==0)
continue;
printf("%d = %d + %d\n",n,j,n-j);
break;
浙公网安备 33010602011771号