zoukankan      html  css  js  c++  java
  • 数组

    这个作业属于哪个班级 C语言--网络2011/2012
    这个作业的地址 C博客作业04--数组
    这个作业的目标 学习数组相关内容
    姓名 陈垚嘉

    0.展示PTA总分(0----2)


    展示2张关于“数组题目集”分数截图。

    1.本章学习总结(3分)

    1.1 学习内容总结

    整理数组这章学习主要知识点,必须包含内容有:

    • 数组中如何查找数据,有哪些做法
    	for (i = 0; i <= n; i++)
            {
    		if (a[i] == number)
    		{
    			printf("%d", i);
                    }
            }
    
    • 数组中如何插入数据,怎么做,可以写个伪代码或动态图展示方法
    输入数组
    输入插入数字
    for(i=0;i<n;i++)
    {
    if(a[i]<数字)i++
    else
    a[i+1]=a[i+2]
    a[i]=数字
    }
    
    
    • 数组中如何删除数据,这个有多种做法,请一一展示。
    输入数组a[i]
    输入要删的数字,该数字的下标为j
    for(m=j;m<n——一共多少数字;m++)
    {
    a[m-1]=a[m]
    }
    n-1//若要删多个数字则将在程序外套一个循环
    
    
    • 数组中目前学到排序方法,主要思路?
      冒泡法从小到大
    for(j=0;j<k;j++)//k为从新比较的次数,次数越多,答案准确率越高
    for(i=0;i<n;i++)
    {
      if(a[i]>a[i+1]
      {
       a[i]=temp
       a[i]=a[i+1]
       a[i+1]=temp
      }
    }
    

    选择排序法从小到大

    输入数组
    比较数组中的数将该数组的最小数与a[0]交换
    数组从a[1]开始,比较数组中的数将该数组的最小数与a[1]交换
    数组从a[2]开始,比较数组中的数将该数组的最小数与a[2]交换,以此类推
    
    • 数组做枚举用法,有哪些案例?
    • 哈希数组用法,目前学过哪些案例,举例展示。
    
    #include<stdio.h>
    int main()
    {
    	char a[82];
    	int i;
    	int static b[256];
    	fgets(a, 81, stdin);
    	for (i = 0; a[i]!='
    '; i++)
    	{
    		if (a[i] != '
    ')
    		{
    			b[a[i]] = 1;
    		}
    	}
    	for (i = 1; i < 256; i++)
    	{
    		if (b[i] == 1)
    			printf("%c", i);
    	}
    	return 0;
    
    }
    
    • 字符数组、字符串特点及编程注意事项。
      1.数组数字是从0开始数的,因此要格外注意
      2.字符串要考虑结尾有没有,因为这是他的结束标志
    scanf("%s",a)//当输入回车和空格时,结束输入,并自动在结尾加上''
    

    2.PTA实验作业(7分)

    2.1 题目名1(3分)

    调查电视节目受欢迎程度

    2.1.1 伪代码

    我的

    输入数组a[i]
    for(i=0;i<n;i++)
    for(j=1;j<=8;j++)
    if(a[i]==j) c[j-1]++
    for(i=1;i<=8;i++)
    printf("%4d%4d",i,c[i-1])
    

    2.1.2 代码截图

    2.1.3 找一份同学代码(尽量找思路和自己差距较大同学代码)比较,说明各自代码特点。

    同学

    #include<stdio.h>
    int main()
    {
    	int a[8] = { 1,2,3,4,5,6,7,8 };
    	int b[8] = { 0,0,0,0,0,0,0,0 };
    	int n;
    	int number;
    	int i;
    	scanf("%d", &n);
    	for (i = 1; i <= n; i++)
    	{
    		scanf("%d", &number);
    		switch (number)
    		{
    		case 1:b[0]++; break;
    		case 2:b[1]++; break;
    		case 3:b[2]++; break;
    		case 4:b[3]++; break;
    		case 5:b[4]++; break;
    		case 6:b[5]++; break;
    		case 7:b[6]++; break;
    		case 8:b[7]++; break;
    		}
    
    	}
    	for (i = 0; i < 8; i++)
    	{
    		printf("%4d%4d
    ", a[i], b[i]);
    	}
    	return 0;
    }
    

    他用switch语法,我用数组,他的代码多而简单,我的代码少

    2.2 题目名2(2分)

    找鞍点

    2.2.1 伪代码

    输入数组
    for(i=0; i<n; i++)//先挑出行的最大值
            {
                y=i;
                for(p=0; p<n; p++) 
                {
                    if(a[i][k]<=a[i][p])
                    {
                        k=p;
                    }
                }
                for(j=0; j<n; j++)//再比较该行最大是不是列最小值
                {
                    if(a[y][k]>a[j][k])
                    {
                        y=j;
                        break;不是则跳出
                    }
                }
                if(i==y)
                {
                    flag=0;是的话用flag变量来表示
                    break;
                }
            }
    
    

    2.2.2 代码截图

    2.2.3 请说明和超星视频做法区别,各自优缺点。

    我的和超星视频的思路差不多,不同的是他用函数来表示

    2.3 题目名3(2分)

    切分表达式

    2.3.1 伪代码

    输入字符
    如果下标为0,字符为‘-’或‘+’
    printf("%c",s[i]);
    下标不为0时,如果字符s[i]为‘-’当s[i-1]不为数字printf("%c
    ",s[i]),else printf("%c",s[i])
    当字符为数字或‘.’时,如果s[i+1]不为数字或‘.’printf("%c
    ",s[i]),else printf("%c",s[i])
    当字符不为数字,‘.’,'+','-'时printf("%c
    ",s[i])
    

    2.3.2 代码截图


    2.3.3 请说明和超星视频做法区别,各自优缺点。

    我的思路和超星视频的思路差不多,不同的是他发现了i!=0时,‘-’前如果是负数则会有‘(’,

  • 相关阅读:
    高性能网站优化-确保异步加载脚本时保持执行顺序
    sublime安装和汉化
    解决IE6下a标签的onclick事件里的超链接不跳转问题
    C++大数据处理
    HDRtools-OpenExr
    Effective C++学习进阶版
    我的算法学习之路
    一个应届计算机毕业生的2012求职之路
    存储器管理
    程序员的自我修养——操作系统篇
  • 原文地址:https://www.cnblogs.com/chenyaojia/p/14130858.html
Copyright © 2011-2022 走看看