zoukankan      html  css  js  c++  java
  • C语言第二次实验报告

    一、目的

    & 掌握二维数组的定义、赋值、使用和输入输出方法 ,掌握字符数组和字符串的使用。

    &  掌握指针的概念,会定义和使用指针变量,正确使用变量、数组、字符串的指针和指向变量的指针变量。

    学习单向链表的创建、删除、  插入(无序、有序)、输出、  排序(选择、插入、冒泡)、反序等等。

    & 熟悉递归函数的基本思想,掌握数值型与非数值型递归函数的编程问题。

    & 掌握结构体变量的定义和使用、掌握结构体数组的定义和使用、了解结构指针的定义和使用。

    二、实验内容与设计思想

    【二维数组】求矩阵各行元素之和

    设计思路:用二维数组模拟出一个矩阵原型,二维数组所对应的两个嵌套for循环对应矩阵的行和列,最后再将行元素分别累加,即可实现最终目的。

    代码如下:

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

    运行结果如图:

    【字符串】字符串字母大小写转换

    设计思路:本题在对数组有一定了解的基础上,需要通过定义一个字符型数组,在通过acsll码实现字符元素的大小写转化。

    代码如下:

    #include <stdio.h>
    
    int main(){
        while(1){
            char x;
            scanf("%c",&x);
            if(x=='#'){
                break;
            }else if(x>='a'&&x<='z'){
                x -= 32;
            }else if(x>='A'&&x<='Z'){
                x += 32;
            }
            printf("%c",x) ;
        }
    
        
        
        
        return 0;
    }

    运行结果如图:

    【数组和指针】13-2 利用指针找最大值

    设计思路:首先定义一个函数findmax( int *px, int *py, int *pmax ),对应形参为指针型,通过findmax函数的比较,找出最大值,并返回对应实参数的地址,得到最大值。

    代码如下:

    #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\n", max);
        return 0;
    } 
    void findmax( int *px, int *py, int *pmax )
    {
        if(*px>*py)
        *pmax=*px;
        else
        *pmax=*py;
    }

    运行结果如图:

    【结构体 指针 字符串】14-8 字符串排序

    设计思路:此题较为简单主要学会对于strcpystrcmp的运用,然后在通过比较的字母循序进行排序。

    代码如下:

    #include<stdio.h>
    #include<string.h>
    int main(void)
    {
        int i,j;
        char a[50][200], t[200];//改大了点,不然字符串太长会超出数组范围
        
        for (i = 0; i < 5; i++)
        {
            scanf("%s",a[i]);
        }
        for (i = 1; i < 5; i++)
        {
            for (j =0; j < 5-i ;j++)
            if (strcmp(a[j], a[j+1]) > 0)
            {
            strcpy(t,a[j]);
            strcpy(a[j], a[j + 1]);
            strcpy(a[j + 1], t);
            }
        }
        printf("After sorted:\n");
        for (i = 0; i < 5; i++)
        puts(a[i]);
        return 0;
    }

    运行结果:

     

    【结构体 链表 递归】15-10 找最长的字符串

    设计思路:定义一个字符结构体,在通过统计字符串的长度并比较最终的结果。

    代码如下:

    #include<stdio.h>
    #include<string.h>
    struct s{
        char name[86];
    };
    int main()
    {
        int n,i,max=0,index;
        scanf("%d",&n);
        struct s longer[n];
        for(i=0;i<n;i++)
            scanf("%s",longer[i].name);
            for(i=0;i<n;i++)
            {
                if(strlen(longer[i].name)>max)
                {
                max=strlen(longer[i].name);
                index=i;
                }
                }
        printf("The longest is: %s",longer[index].name);
        return 0;
    }

    运行结果:

    三、实验使用环境

    本次实验在devc环境下调试

    四、实验小

    1. 对于指针的指向问题有时会比较绕,导致许多问题分析不清、理解不清。
    2. 对于链表几乎不会。
    3. 结构体定义时没有对应清楚元素与数据的关系。
    4. 寒假要好好补缺补漏。
  • 相关阅读:
    Django之Orm的各种操作
    python面试题---收藏的笔记
    jQuery中$.each()方法的使用
    Django 之 路由URL,视图,模板
    高级FTP服务器开发
    选课系统
    ATM
    开发一个简单的python计算器
    学习PYTHON之路, DAY 8
    学习PYTHON之路, DAY 7
  • 原文地址:https://www.cnblogs.com/zhangqingwang/p/8371634.html
Copyright © 2011-2022 走看看