• C语言第二次实验报告


    集美大学计算机工程学院实验报告

     

    课程名称:高级语言程序设计

    班级:网络1713

    实验成绩

    指导教师:贺冰琰

    姓名:罗俊

     

    实验项目名称

    学号:201721123088

    上机实践日期

     

     

     

     

    一、实验题目、设计思路、实现方法

    1.实验题目

    11-2 求矩阵各行元素之和

    12-3字符串逆序

    13-2 利用指针找最大值

    14-2 删除字符

    15-5 建立学生信息链表

    2.设计思路、实现方法

    11-2:程序中将输入的矩阵存入二维数组a中,按矩阵的形式输出a,然后遍历该数组,通过每行的行下标和列下标两两相加,并输出相加之后的和

    12-3:通过数组初始化,赋值或输入的方法把字符串存入数组,对字符串的草这就是对数组的操作。

    13-2 :指针的值是某个变量的地址,通过指针间接访问那个变量,由取地址运算符&和接访问运算符*完成;将整形变量a的地址赋给整形指针p,使指针p指向变量a,即遍历全部,最后指向最大值,并输出

    14-2 :结构数组的的元素师连续存放的,每个元素都分配足够的存储单元,通过使用数组下标找到所删除的元素,并使用空格代替

    15-5:链表中,每个结点由数据部分和下一个结点的地址部分组成,利用递归定义方法构造出单向链表的数据结构,此题中,程序要求链表结构点式按学生的学号排序,因此,还需通过调用函数InserDoc()来实现

    二、源程序

    11-2 求矩阵各行元素之和:

    #include<stdio.h>
    int main(void)
    {
    int a[6][6],m,n,i,j,sum[6];
    scanf("%d %d",&m,&n);
    for(i=0;i<m;i++){
    sum[i]=0;
    for(j=0;j<n;j++){
    scanf("%d",&a[i][j]);
    sum[i]=sum[i]+a[i][j];
    }
    }
    for(i=0;i<m;i++){
    printf("%d ",sum[i]);
    }
    return 0;
    }

    12-3字符串逆序:

    #include<stdio.h>
    int main(){
    char s[81]={0};
    char c;
    int i=0;
    do{
    scanf("%c",&s[i++]);
    if(c!=' '){
    s[i++]=c;

    }while(s[i-1]!=' ');
    i=i-2;
    while(i>=0){
    printf("%c",s[i--]);
    //i--;
    }
    printf(" ");
    return 0;

    13-2 利用指针找最大值:

    #include <stdio.h>
    
    void findmax( int *px, int *py, int *pmax );
    
    int main()
    {	
        int max, x, y; 
    
        scanf("%d %d", &x, &y);
        findmax( &x, &y, &max );
        printf("%d
    ", max);
    
        return 0;
    } 
    /* 我的将被嵌在这里 */

    void findmax( int *px, int *py, int *pmax )
    {
    if(*px>*py) 
    *pmax=*px;
    else *pmax=*py;
    return *pmax;
    }

    14-2 删除字符:

    #include <stdio.h>
    #define MAXN 20
    
    void delchar( char *str, char c );
    void ReadString( char s[] );
    int main()
    {
        char str[MAXN], c;
    
        scanf("%c
    ", &c);
        ReadString(str);
        delchar(str, c);
        printf("%s
    ", str);
    
        return 0;
    }
    
    /* 我的代码将被嵌在这里 */

    void delchar( char *str, char c )
    {
    char* ret = str; 
    if( str != NULL )

    char* p = str; 
    while( *str )

    if( *str != c )

    *p = *str; 
    p++; 

    str++; 

    *p = *str; 

    return ret;
    }

    15-5 建立学生信息链表:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    struct stud_node {
         int    num;
         char   name[20];
         int    score;
         struct stud_node *next;
    };
    struct stud_node *head, *tail;
    
    void input();
    
    int main()
    {
        struct stud_node *p;
    	
        head = tail = NULL;
        input();
        for ( p = head; p != NULL; p = p->next )
            printf("%d %s %d
    ", p->num, p->name, p->score);
    
        return 0;
    }
    
    /* 我的代码将被嵌在这里 */

    void input()
    {
    struct stud_node *q;
    q=(struct stud_node *)malloc(sizeof(struct stud_node));
    scanf("%d", &q->num);
    while(q->num != 0)
    {
    scanf("%s %d", q->name, &q->score);
    if(head == NULL)
    {
    head = q;
    head->next = NULL;
    }
    if(tail != NULL)
    {
    tail->next = q;
    }
    tail = q;
    tail->next = NULL;
    q=(struct stud_node *)malloc(sizeof(struct stud_node));
    scanf("%d", &q->num);
    }

    }

    二.学习小结

    (1)动态输入多个字符串

        用指针数组操作多个字符串时,都是通过初始化的方式对指针数组赋值,使指针的数组元素指向字符串。

    (2)使用命令行的程序不能在编译中执行,需要将源程序经编译,链接为相应的命令文件,然后回到命令状态,再在该状态下直接输入命令文件名。

    (3)链表定义,使用,指向。

  • 相关阅读:
    laravel 需要用到的命令行
    人生信条
    25岁之前,请记得,爱情通常是假的,或者不是你所想象的那样纯洁和永远。如果你过了25岁,那么你应该懂得这个道理。30岁之前请爱惜自己的身体,前30年你找病,后30年病找你。如果你过了30岁,你自然也会懂得这个道理。
    剑指offer——和为S的两个数字
    剑指offer——和为S的连续正数序列
    剑指offer——将复杂问题分解使其简单化
    剑指offer——二叉树中和为某一值的路径
    递归递归!!!
    芒种喜雨,端午前日
    由KTT展开的一系列知识点
  • 原文地址:https://www.cnblogs.com/lj1507899927/p/8379455.html
Copyright © 2020-2023  润新知