实验3
实验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, April~"; 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中字符串 }

实验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; }

总结fun是算阶乘用的stastic就可以累加不用重复算。
实验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);
}
return 0;
}
long long func(int n)
{long long k;
if(n==0)
k=0;
else
k=(func(n-1)+1)*2-1;
return k;
}

实验4
代码
#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 || n < 0 || m < 0) return 0;
if (m == 0 || m == n) return 1;
return func(n-1, m) + func(n-1, m-1);
}

实验5.1
#include <stdio.h>
#include<stdlib.h>
#include<math.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);
}
system ("pause");
return 0;
}
double mypow(int x,int y)
{
double ans=1.0;
double t;
int i=0;
for(i=0;i<abs(y);i++)
{if(y>=0)
ans*=x;
else {t=x;
ans*=1/t;}
}
return ans;
}

#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);
}
system ("pause");
return 0;
}
double mypow(int x,int y)
{
double ans=1.0;
double t;
int i=0;
if(y==0)
ans=1;
else if(y>0)
ans=mypow(x,y-1)*x;
else ans=1/mypow(x,-y);
return ans;

实验6
#include <stdio.h>
#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 tot;
int main() {
unsigned int n;
while (scanf("%u", &n) != EOF) {
tot = 0;
hanoi(n, 'A', 'B', 'C');
printf("一共移动了%d次\n", tot);}
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) {
tot ++;
printf("%u:%c-->%c\n", n, from, to);
}

实验7
#include<stdio.h>
int is_prime(int x);
int main() {
int i, n;
while (scanf("%d", &n) != EOF) {
for (i = 2; i <= n; i++) {
if (!is_prime(i) || !is_prime(n - i))continue;
printf("%d = %d + %d\n", n, i, n - i);
break;
}
}
return 0;
}
int is_prime(int x) {
int i;
for (i = 2; i *i<= x; i++) {
if (x % i == 0) {
return 0;}
else {
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) {
long t = 0, t1 = 0;
while (s > 0) {
int tmp = s % 10;
s /= 10;
if (tmp % 2 == 1)t1 = t1 * 10 + tmp;
}
while (t1 > 0) {
t = t * 10 + (t1 % 10);
t1 /= 10;
}
return t;
}


浙公网安备 33010602011771号