第四次实验
ex1只能返回一个返回值,或用指针返回,(sprintf可以吗???)
1 #include<stdio.h> 2 long long fac(int n); 3 4 int main02() { 5 int i, n; 6 7 printf("Enter n: "); 8 9 scanf_s("%d", &n); 10 for (i = 1; i <= n; i++) 11 printf("%d!=%-11d\n", i, fac(i)); 12 13 return 0; 14 } 15 16 long long fac(int n) { 17 static long long p=1; 18 19 printf("%d\n", p); 20 p = p * n; 21 22 return p; 23 }

1 #include<stdio.h> 2 int fun(int, int); 3 4 int main22() { 5 int k = 4, m = 1, p1, p2; 6 7 p1 = fun(k, m); 8 p2 = fun(k, m); 9 printf("%d,%d\n", p1, p2); 10 11 return 0; 12 } 13 14 int fun(int a, int b) { 15 static int m = 0, i = 2; 16 i += m + 1; 17 m = i + a + b; 18 return m; 19 20 }

static 赋值在编译时进行,运行时变量具有继承性
1 //寻找两个整数之间的所有素数(包括这两个整数),把结果保存在数组bb中,函数返回素数的个数。 2 // 例如,输入6和21,则输出为:7 11 13 17 19。 3 4 #include <stdio.h> 5 6 #define N 1000 7 int fun(int n,int m,int bb[N]) { 8 int i,j,k=0,flag; 9 10 for(j=n;j<=m;j++) { 11 flag = 1; 12 for(i=2;i<j;i++) 13 if(j%i==0) { 14 flag=0; 15 break; 16 } 17 if(flag) 18 bb[k++]=j; 19 } 20 return k; 21 } 22 23 int main03(){ 24 int n=0,m=0,i,k,bb[N]; 25 26 scanf_s("%d",&n); 27 scanf_s("%d",&m); 28 29 for(i=0;i<m-n;i++) 30 bb[i]=0; 31 32 k=fun(n,m,bb); 33 34 for(i=0;i<k;i++) 35 printf("%-4d",bb[i]); 36 37 return 0; 38 }

1 #include<stdio.h> 2 long long fun1(int n); 3 4 int main04() { 5 int n; 6 7 while (scanf_s("%d", &n) != EOF) 8 printf("%d,%lld\n", n, fun1(n)); 9 10 return 0; 11 } 12 13 long long fun1(int n) { 14 if (n == 1) return 1; 15 else return fun1(n - 1) * 2+1; 16 }

1 #include<stdio.h> 2 void fun02(int n); 3 //大整数运算 4 int main44() { 5 int n; 6 7 while (scanf_s("%d", &n) != EOF) 8 fun02(n); 9 10 return 0; 11 } 12 13 void fun02(int n) { 14 15 int arr[1000] = { 1,0 }, flag = 999; //定义数组来存放每一个位的数(0~9) 16 17 for (int i = n; i > 0; i--) { 18 for (int k = 0; k <= 999; k++) //先算2~n :分开算,*一次2,就对arr每一个元素都乘2, 19 arr[k] *= 2; 20 21 for (int j = 0; j <= 999; j++) { //由于一个数每个位数上是由0~9构成, 22 if (arr[j] > 9) { //且逢十进一,低位求余,高位进一 23 arr[j] %= 10; 24 arr[j + 1]++; 25 } 26 } 27 } 28 29 for (int i = 999; i >= 0; i--) { //把最高位前的0都去掉 30 if (arr[i] == 0)flag--; 31 else break; 32 } 33 34 for (int i = flag; i > 0; i--) //逆序输出,高位在后面 35 printf("%d", arr[i]); 36 37 printf("%d\n", arr[0] - 1); //个位-1 38 }

1 #include<stdio.h> 2 void draw(int n, char symbol); 3 int main05() { 4 int n; 5 char symbol; 6 while (scanf_s("%d %c", &n, &symbol) != EOF) { 7 draw(n, symbol); 8 printf("\n"); 9 } 10 11 return 0; 12 } 13 14 void draw(int n, char symbol) { 15 for (int i = 1; i<=n ; i++) 16 { 17 for (int j =n-i ; j > 0; j--) 18 printf(" "); 19 20 for (int k = 1; k <2*i ; k++) 21 printf("%c", symbol); 22 23 printf("\n"); 24 } 25 26 }

实验中注意函数名不要重复
注意代码的简洁性
注意输出的对齐格式
浙公网安备 33010602011771号