• 实验四


    ex1

     1 //
     2 //  main.c
     3 //  ex1
     4 //
     5 //  Created by 薛定饿了么 on 2020/11/26.
     6 //
     7 
     8 #include <stdio.h>
     9 #include <math.h>
    10 
    11 void solve(double a,double b,double c);
    12 
    13 
    14 int main(int argc, const char * argv[]) {
    15     // insert code here...
    16     double a,b,c;
    17     
    18     printf("Enter a,b,c:");
    19     
    20     while(scanf("%lf%lf%lf",&a,&b,&c)!=EOF){
    21         
    22         solve(a,b,c);
    23         printf("Enter a,b,c:");
    24     }
    25     
    26     return 0;
    27 }
    28 
    29 void solve(double a,double b,double c){
    30     double x1, x2;
    31     double delta, real, imag;
    32     if(a == 0)
    33         printf("not quadratic equation.
    ");
    34     else {
    35         delta = b*b - 4*a*c;
    36         if(delta >= 0) {
    37             x1 = (-b + sqrt(delta)) / (2*a);
    38             x2 = (-b - sqrt(delta)) / (2*a);
    39             printf("x1 = %f, x2 = %f
    ", x1, x2);
    40         }
    41         else {
    42             real = -b/(2*a);
    43             imag = sqrt(-delta) / (2*a);
    44             printf("x1 = %f + %fi, x2 = %f - %fi
    ", real, imag, real,
    45                    imag);
    46         }
    47     }
    48 }
    49 /*
    50  *问题:这个应用中,一元二次方程的根,能否设计成以函数返回值的方式返回给主调函数?
    51  *思考:不行。因为返回值只能返回一个值。
    52  * #不过如果用数组的话,那值得一试。
    53  */

    (思考见代码)

    ex2_1

     1 #include <stdio.h>
     2 long long fac(int n); // 函数声明
     3 int main() {
     4     int i,n;
     5     printf("Enter n: ");
     6     scanf("%d", &n);
     7     for(i=1; i<=n; ++i)
     8     printf("%d! = %lld
    ", i, fac(i));
     9     return 0;
    10 }
    11 // 函数定义
    12 long long fac(int n) {
    13     static long long p = 1;
    14 
    15     p = p*n;
    16     return p;
    17 }

    ex2_2

     1 // 练习:局部static变量特性
     2 #include<stdio.h>
     3 int func(int, int);
     4 int main() {
     5     int k=4,m=1,p1,p2;
     6     p1 = func(k,m) ;
     7     p2 = func(k,m) ;
     8     printf("%d,%d
    ",p1,p2) ;
     9     return 0;
    10 }
    11 int func(int a,int b) {
    12     static int m=0,i=2;
    13     i += m+1;
    14     m = i+a+b;
    15     return (m);
    16 }
    17 
    18 /*问:理论分析结果实验运行结果是否一致。
    19 *答:第一次理论分析结果与实验不符,纠正后符合了。
    20 *
    21 *问:基于上述测试截图,总结局部static变量的特性。
    22 *答:1.继承性
    23 *   2.不可被重定义
    24 *   3.不同函数中可以有同名的局部static变量,他妈互不干涉。
    25 */

    (分析见代码)

    ex3

     1 //寻找两个整数之间的所有素数(包括这两个整数),把结果保存在数组bb中,函数返回素数的个数。
     2 // 例如,输入6和21,则输出为:7 11 13 17 19。
     3 #include <stdio.h>
     4 #define N 1000
     5 int fun(int n,int m,int bb[N]) {
     6     int i,j,k=0,flag;
     7     for(j=n;j<=m;j++) {
     8     flag = 1;if(j<2)continue;
     9         for(i=2;i<j;i++)
    10         if(j%i==0){
    11             flag=0;
    12             break;
    13         }
    14         if(flag!=0)
    15             bb[k++]=j;
    16     }
    17     return k;
    18 }
    19 
    20 int main(){
    21     int n=0,m=0,i,k,bb[N];
    22     scanf("%d",&n);
    23     scanf("%d",&m);
    24     for(i=0;i<m-n;i++)
    25     bb[i]=0;
    26     k=fun(n,m,bb);
    27     for(i=0;i<k;i++)
    28     printf("%4d",bb[i]);
    29     return 0;
    30 }

    ex4

     1 #include <stdio.h>
     2 long long fun(int n); // 函数声明
     3 int main() {
     4     int n;
     5     long long f;
     6     while(scanf("%d", &n) != EOF) {
     7         f = fun(n); // 函数调用
     8         printf("n = %d, f = %lld
    ", n, f);
     9     }
    10     return 0;
    11 }
    12 // 函数定义
    13 // 补足。。。
    14 
    15 
    16 long long fun(int n){
    17     long int round=0;
    18     if (n==1)
    19         return 1;
    20     if (n>1){
    21         round+=2*fun(n-1);
    22         round++;
    23     }
    24     return round;
    25 }

    ex5

     1 #include <stdio.h>
     2 void draw(int n, char symbol); // 函数声明
     3 int main() {
     4     int n, symbol;
     5     while(scanf("%d %c", &n, &symbol) != EOF) {
     6         draw(n, symbol); // 函数调用
     7         printf("
    ");
     8     }
     9     return 0;
    10 }
    11 
    12 void draw(int n, char symbol){
    13     for(int j=1;j<=n;j++){
    14         
    15         for(int i=1;i<=n-j;i++)printf(" ");
    16         for(int i=1;i<=2*j-1;i++)printf("%c",symbol);
    17         for(int i=1;i<=n-j;i++)printf(" ");
    18         printf("
    ");
    19         
    20     }
    21     
    22 }

  • 相关阅读:
    Oracle分页查询
    Oracle表空间
    Oracle中DBA常用操作
    数据库的约束
    数据库设计的三范式
    数据类型的比较 有四种情况
    github快速上手
    3D正方体做法
    animation-声明关键帧
    轮播图样式
  • 原文地址:https://www.cnblogs.com/HighHand-LadyKiller/p/14044875.html
Copyright © 2020-2023  润新知