实验任务一
task1.c
#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);
}
程序功能:在屏幕上输出“hi,November~”做出动画效果
实验任务二
task2_1.c
#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> 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; }
task2_2.c
#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变量在函数内作定义说明,作用仅限于函数内部,保存变量被修改后的值,且变量不会在下一次的循环中被初始化
实验任务三
task3.c
#include <stdio.h> long long func(int n); int main() { int n; long long f; while (scanf_s("%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 == 0) return 0; else return 2 * func(n - 1) + 1; }
实验任务四
#include <stdio.h> int func(int n, int m); int main() { int n, m; while (scanf_s("%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; if (n == m || n == 1 || m == 0)return 1; else return func(n - 1, m) + func(n - 1, m - 1); }
实验任务五
#include <stdio.h> int mul(int n, int m); int main() { int n, m; while (scanf_s("%d%d", &n, &m) != EOF) printf("%d*%d=%d\n", n, m, mul(n, m)); return 0; } int mul(int n, int m) { if (m==0||n==0)return 0; else return m+mul(n -1, m); }
实验任务六
#include <stdio.h> #include<stdlib.h> void hanoi(unsigned int n, char ftom, char temp, char to); void moveplate(unsigned int n, char from, char to); int count = 0; int main() { unsigned int n; while (scanf_s("%d", &n) != EOF) { hanoi(n, 'A', 'B', 'C'); printf("一共移动了%d次\n", count); count=0; } 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); count++; }
实验任务七
#include <stdio.h> int is_prime(int n); int main() { int num, f; int stop = 0; int i = 2; while (i < 20) { i += 2; for (int k = 2; k < i;k++) { num = i - k; f = is_prime(num); if (f) {printf("%d = %d + %d\n", i, k, num); stop = 1;} if (stop) break; } stop = 0;} return 0; } int is_prime(int n) {if (n == 1) return 0; for (int i = 2;i < n;i++) { int stop = 0; if (n % i == 0) {return 0; stop = 1; } if (n == 2 || (n % i != 0 && i == n - 1)) return 1; if (stop) break;} }
实验任务八
#include <stdio.h> #include <math.h> long fun(long s); int main() { long s, t; printf("Enter a number: "); while (scanf("%ld", &s) != EOF) { t = fun(s); printf("new number is: %ld\n\n", t); printf("Enter a number: "); } return 0; } long fun(long s) { int n; int i = 0; int count = 0; while (s != 0) { n = s % 10; if (n % 2 != 0) { i = n * pow(10, count) + i; count++; } s = s / 10; } return i; }
原文地址:http://www.cnblogs.com/u3004105/p/16852924.html