• 第二次作业 预备实验


    C语言的函数数组指针结构体知识

    这个作业属于哪个课程 [https://edu.cnblogs.com/campus/qdu/DS2020]
    这个作业的要求在哪里 [http://edu.cnblogs.com/campus/qdu/DS2020/homework/11213]
    这个作业的目标 C语言的函数数组指针结构体知识

    实验目的

      1、复习C语言中函数、数组、指针、结构体与共用体等的概念。
      2、熟悉利用C语言进行程序设计的一般方法。
    

    实验预习

      说明以下C语言中的概念
      - 函数:函数是一段可以重复使用的代码,用来独立地完成某个功能。
      - 数组:数组(Array)就是一些列具有相同类型的数据的集合,这些数据在内存中依次挨着存放,彼此之间没有缝隙。
      - 指针:所谓指针,也就是内存的地址;所谓指针变量,也就是保存了内存地址的变量。
      - 结构体:一种自定义的数据类型,只不过这种数据类型比较复杂,是由 int、char、float 等基本类型组成的。你可以认为结构体是一种聚合类型。
      - 共用体:共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。
    

    实验内容和要求

      1、调试程序:输出100以内所有的素数
      ~~~
      #include<stdio.h>
      
      /*判断一个数是否是素数*/
      int isprime(int n)
      {
            int m;
            for(m=2;m*m <= n; m++)
            {
                  if(n%m==0) return 0;
            }
            
            return 1;
      }
    
      //输出100以内的素数
      int main()
      {
            int i;
            print("
    ");
            for(i=2;i<100;i++)
            {
                  if(isprime(i)==1)printf("%4d",i);
            }
            return 0;
      }
      ~~~
    
      输出结果:   2   3   5   7  11  13  17  19  23  29  31  37  41  43  47  53  59  61  67  71  73  79  83  89  97
      
    
      2、调试程序: 对一维数组中的元素进行逆向排序.
      ~~~
      #include<stdio.h>
      
      #define N 10
      int main(){
            int a[N]={0,1,2,3,4,5,6,7,8,9},i,temp;
            printf("
    the original Array is:
    ");
            for(i = 0;i<N;i++)
                  printf("%4d",a[i]);
            for(i = 0;i < N/2; i++)
                  temp = a[i];
                  a[i] = a[N-i-1];
                  a[N-i-1] = temp;
            printf("
    the changed Array is:
    ");
    
            for(i = 0; i < N; i++)
                  printf("%4d",a[i]);
            return 0;
      }
      ~~~
      
      输出结果:
      the original Array is:
         0   1   2   3   4   5   6   7   8   9
      the changed Array is:
         9   8   7   6   5   4   3   2   1   0
    
    
      3、 调试程序:在二维数组中,若某一位置上的元素在该行中最大,而在该列中最小,则该元素即为该二维数组的一个鞍点。要求从键盘上输入一个二维数组,当鞍点存在时,把鞍点找出来
      ~~~
      #include <stdio.h>
    
      #define M 3
      #define N 4
      int main(){
    
          int a[M][N],i,j,k;
    
          printf("
    请输入二维数组的数据:
    ");
    
          for(i = 0 ; i < M;i++)
    
                for(j = 0 ; j <N; j++)
    
                  scanf("%d",&a[i][j]);
    
                      //输出矩阵
          for (i = 0; i < M; i++)
          {
              for (j = 0; j < N; j++)
    
                  printf("%4d",a[i][j]);
    
              printf("
    ");    
          }
          for ( i = 0; i < M; i++)
          {
              k = 0;
    
              for ( j = 1; j < N; j++)
    
              if(a[i][j] > a[i][k]) k=j;
    
                    for ( j = 0; j < M;j++)
                        if (a[j][k]<a[i][k])break;
              if(j == M)
                  printf("%d,%d,%d
    ",a[i][k],i,k);        
          }
          return 0;
      }
         ~~~
      输出结果:
      
      请输入二维数组的数据:
      4 3 21 1
      1 2 3 1
      4 5 6 7
         4   3  21   1
         1   2   3   1
         4   5   6   7
    
      3,1,2
    
      4、 调试程序:利用指针输出二维数组的元素。
      ~~~
      #include<stdio.h>
      int main(){
            int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
            int *p;
            for(p=a[0];p<a[0]+12;p++){
                 if((p-a[0])%4==0)printf("
    ");
                  printf("%4d",*p);
            }
            return 0;
      }
      ~~~
    
      输出结果:
         1   3   5   7
         9  11  13  15
        17  19  21  23      
    
      5、 调试程序:设有一个教师与学生通用的表格,教师的数据有姓名、年龄、职业、教研室四项,学生有姓名、年龄、专业、班级四项,编程输入人员的数据,再以表格输出。
    
      ~~~
      #include <stdio.h>
    
      #define N 10
    
      struct student{
          char name[8]; //姓名
          int age; //年龄
          char job; //职业或专业,用s或t表示学生或教师
          union{
              int class; //班级
              char office[10]; //教研室
          }depa;
      }stu[N];
      int main(){
          int i;int n;
          printf("
    请输入人员数(<10);
    ");
          scanf("%d",&n);
          for(i=0;i<n;i++){
              printf("
    请输入第%d人员的信息:(name age job class/office)
    ",i+1);
    
              scanf("%s %d %c",stu[i].name,&stu[i].age,&stu[i].job);
              if(stu[i].job=='s')
                  scanf("%d",&stu[i].depa.class);        
              else
                  scanf("%s",stu[i].depa.office);
          }
          printf("name age job class/office
    ");
    
          for(i=0;i<n;i++){
    
              if(stu[i].job=='s')
                  printf("%s %3d %3c %d
    ",stu[i].name,stu[i].age,stu[i].job,stu[i].depa.class);
              else
                  printf("%s %3d %3c %s
    ",stu[i].name,stu[i].age,stu[i].job,stu[i].depa.office);            
          }
      }
      ~~~
    
      输出结果
      请输入人员数(<10);
      2
    
      请输入第1人员的信息:(name age job class/office)
      Wang 19 s 99061
    
      请输入第2人员的信息:(name age job class/office)
      Li 36 t computer
      
      name age job class/office
      Wang  19   s 99061
      Li  36   t computer
  • 相关阅读:
    WebApi-JSON序列化循环引用
    Android ImageSwitcher
    Android Gallery
    理解URI
    WebApi入门
    URL的组成
    Http协议
    python __new__和__init__的区别
    11.6
    win7 32位用pyinstaller打包Python和相关html文件 成exe
  • 原文地址:https://www.cnblogs.com/corvus/p/13712849.html
Copyright © 2020-2023  润新知