实验3_c语言函数应用编程
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,November~"; srand(time(0)); for (i = 1; i <= 10; i++) { line = rand() % 25; col = rand() % 80; print_text(line, col, text); Sleep(1000);/*S大写*/ 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); print_spaces(col - 1); printf("%s", text); } /*功能:随机在某行某列打印一个hi,November~*/
功能:利用时间种子在随机行随机列打印“你好,十一月~”
task2
#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; }
#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;/*p1ʱ3 p2ʱ12*/ m = i + a + b;/*p1ʱ8 p2ʱ17*/ return m; }
运行结果与预期一致
task3
#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 s=1; if (n == 0) s=0; else if (n == 1) s=1; else if (n > 1) s = 2 * func(n - 1)+1; return s; }
task4
#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 sum1 = 1; int sum2 = 1; int sum3 = 1; int s = n - m; if (s < 0) { return 0; } for (n; n > 0; n--) { sum1 *= n; } for (m; m > 0; m--) { sum2 *= m; } for (s; s > 0; s--) { sum3 *= s; } int sum = sum1 / (sum2 * sum3); return sum; }
#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; } int sum; if (m == 0) { return 1; } if (n == 1 && m == 1) { sum = 1; } else if (m == 1) { sum = n; } else { sum = func(n - 1, m) + func(n - 1, m - 1); } return sum; }
task5
#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 main() { unsigned int n; int step = 0; while (scanf("%u", &n) != EOF) { hanoi(n, 'A', 'B', 'C'); for (; n > 0; n--) step = step * 2 + 1; printf("\n一共移动了%d次\n",step); } 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) { printf("%u:%c-->%c\n", n, from, to); }
task6
#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); t = func(t); printf("new number is:%ld\n\n", t); printf("Enter a number:"); } return 0; } long func(long s) { int t, result=0; while (s > 0) { t = s % 10; if (t % 2 != 0) { result = result*10 + t; } s = s / 10; } return result; }