• SCAUoj实验10 指针与结构体


    断更一年的专栏突然重启,主打的就是一个措不及防


    一、堂前习题

    1091 [填空]交换两数,由大到小输出

    下面程序,交换两数,使两数由大到小输出,请填空

    #include "stdio.h"
    void swap(_______________________)
    {
       int temp;
       temp=*p1;
       *p1=*p2;
       *p2=temp;
    }
    int main()
    { int a,b; int *pa,*pb;
       scanf("%d%d", &a, &b);
       pa=&a; pb=&b;
      if(a<b) swap(_______________________);
      printf("%d %d\n",a,b);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    输入样例 1 2
    输出样例 2 1
    代码如下:

    #include "stdio.h"
    void swap(int* p1,int* p2)
    {
       int temp;
       temp=*p1;
       *p1=*p2;
       *p2=temp;
    }
    int main()
    { int a,b; int *pa,*pb;
       scanf("%d%d", &a, &b);
       pa=&a; pb=&b;
      if(a<b) swap(&a,&b);
      printf("%d %d\n",a,b);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    11128 字符串与指针

    请写出下列程序的运行结果

    #include
    int main( )
    {   char   string[30]="How_are_you" ;
    	char   *p=&string[0],   *p2=string+8;
        printf("%s,%s\n" , p , p2 ) ;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    程序运行结果为:

    #include 
    int main()
    {
        printf("_______________________");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    代码如下:

    #include 
    int main()
    {
        printf("How_are_you,you");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    1125 定义结构体类型

    要求定义一个名为student的结构体类型,其包含如下成员:
    (1)字符数组name,最多可存放10个字符;
    (2)字符变量sex,用于记录性别;
    (3)整数类型变量num,用于记录学号;
    (4)float类型变量score,用于记录成绩;
    并使下列代码完整。

    #include "stdio.h"
    _______________________
    int main()
    {
        struct  student stu;
        gets(stu.name);
        scanf("%c",  &stu.sex);
        scanf("%d",  &stu.num);
        scanf("%f",  &stu.score);
        printf("%s\n", stu.name);
        printf("%c\n", stu.sex);
        printf("%d\n", stu.num);
        printf("%f\n", stu.score);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    代码如下:

    #include "stdio.h"
    struct student
    {
        char name[10];
        char sex;
        int num;
        float score;
    };
    int main()
    {
        struct  student stu;
        gets(stu.name);
        scanf("%c",  &stu.sex);
        scanf("%d",  &stu.num);
        scanf("%f",  &stu.score);
        printf("%s\n", stu.name);
        printf("%c\n", stu.sex);
        printf("%d\n", stu.num);
        printf("%f\n", stu.score);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    二、堂上练习

    1092 [填空]函数实现求字符串长度

    下面程序实现由函数实现求字符串长度,再填空完成

    #include "stdio.h"
    
    /*create function f*/
    _______________________
    
    int main()
    {
        char s[80];
        int i;
        scanf("%s", s);
        i=f(s);
        printf("%d", i);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    输入样例
    Hello!

    输出样例
    6

    代码如下:

    #include "stdio.h"
    int f(char* a)
    {
        int count = 0;
        while(*a != '\0')//是不等于'\0',不是'\n'
        {
            count++;
            a++;
        }
        return count;
    }
    int main()
    {
        char s[80];
        int i;
        scanf("%s", s);
        i=f(s);//传的是字符串首元素的地址
        printf("%d", i);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    1065 数组中的指针

    设有如下数组定义:int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}}; (设数组a的首地址为2000,
    一个int类型数占四个字节)
    (1)a[2][1] (2)a[1] (3)a (4)a+1 (5)*a+1
    (6)*(a+1) (7)a[2]+1(8)*(a+1)+1 (9)*(*(a+2)+2)
    编写一个程序直接输出你的答案,一行一个。
    输出样例
    19
    2016
    ……
    ……
    ……

    提示
    注意:地址则输出地址,变量则输出变量值;输出格式,要求,一行一个答案,不允许多余空格
    测试代码及解释如下:

    #include
    int main()
    {
        int a[3][4] = {{1,3,5,7},{9,11,13,15},{17,19,21,23}};//a是二级地址,一个*升一级
        printf("%d\n",a[2][1]);//19
        printf("%p\n",a[1]);//a[1]+0,*(a+1)+0第1行第0列的一级地址,2016
        printf("%p\n",a);//2000
        printf("%p\n",a+1);//第一行的地址,仍然是二级地址,2016
        printf("%p\n",*a+1);//第0行第1列的地址,2004
        printf("%p\n",*(a+1));//和第二个一样,第一行第0列 2016
        printf("%p\n",a[2]+1);//第2行第一列的地址,2036
        printf("%p\n",*(a+1)+1);//第一行第一列的地址,2020
        printf("%d\n",*(*(a+2)+2));//a[2][2]元素
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    答案如下:

    #include 
    int main()
    {
        printf("19\n2016\n2000\n2016\n2004\n2016\n2036\n2020\n21");
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

  • 相关阅读:
    CSDN每日一练 |『小艺读书』『小Q的鲜榨柠檬汁』『分层遍历二叉树』2023-10-19
    TIDB - 分布式数据库
    CTE(公共表表达式)和视图在查询时的性能影响
    数组指针的使用
    vue中的ref属性
    浅谈Kafka Broker 请求处理流程
    持续集成/持续部署:Git
    如何运用API接口获取淘宝1688京东商品数据:从入门到实践
    Unity Xlua热更新框架(四):热更新
    confluent-kafka-go依赖库编译体验优化
  • 原文地址:https://blog.csdn.net/callmeggyh/article/details/134543459