zoukankan      html  css  js  c++  java
  • C语言博客作业04--数组

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

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

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

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

    1.1 学习内容总结

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

    1.一维数组的定义和初始化
    2.二维数组的定义和初始化
    3.字符数组的定义和初始化

    数组中如何查找数据,有哪些做法

    1.直接挨个查找
    2.排列后用二分法查找

    数组中如何插入数据,怎么做,可以写个伪代码或动态图展示方法

    for(i=0;i<=n-1;i++),if(选择插入位置)得到loc,loc后依次向后移一位

    数组中如何删除数据,这个有多种做法,请一一展示。

    1.删去位置后数值依次向前移一位
    2.除该数值以外,其他数值移往另一数组

    数组中目前学到排序方法,主要思路?

    1.选择排序法:依次选择数组中最大或最小的数与第一个数字交换
    2.冒泡排序法:从头开始对相邻数字相比较,根据要求判断是否交换,直到结尾。然后依次从下一位开始重复上述过程。

    数组做枚举用法,有哪些案例?

    数组赋值
    int array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

    哈希数组用法,目前学过哪些案例,举例展示。

    1.有重复的数据I (10分)

    在一大堆数据中找出重复的是一件经常要做的事情。现在,我们要处理许多整数,在这些整数中,可能存在重复的数据。
    你要写一个程序来做这件事情,读入数据,检查是否有重复的数据。如果有,输出“YES”这三个字母;如果没有,则输出“NO”。

    #include<stdio.h>
    int main()
    {
    	int n, i;
    	static int a[100000], b[100001],x,flag=1;
    	scanf("%d", &n);
    	for (i = 0;i <= n - 1;i++)scanf("%d", &a[i]);
    	for (i = 0;i <= n - 1;i++)
    	{
    		b[a[i]]++;//对对应数字计数
    		if (b[a[i]] >= 2)//即重复时
    		{
    			flag = 0;
    			break;
    		}
    	}
    	if (flag == 0)printf("YES");
    	else printf("NO");
    }
    

    2.调查电视节目受欢迎程度 (15分)

    某电视台要调查观众对该台8个栏目(设相应栏目编号为1~8)的受欢迎情况,共调查了n位观众(1≤n≤1000),现要求编写程序,输入每一位观众的投票情况(每位观众只能选择一个最喜欢的栏目投票),统计输出各栏目的得票情况。

    #include<stdio.h>
    int main()
    {
    	int a[999],n,i,j;
    	static int b[9];//哈希数组
    	scanf("%d", &n);
    	for (i = 0;i <= n - 1;i++)scanf("%d", &a[i]);
    	for (i = 0;i <= n - 1;i++)
    	{
    		for (j = 1;j <= 8;j++)
    		{
    			if (a[i] == j)
    			{
    				b[j]++;//对应数值计数
    			}
    		}
    	}
    	for (i = 1;i <= 8;i++)printf("   %d%4d
    ",i, b[i]);
    }
    

    字符数组、字符串特点及编程注意事项。

    输入

    1.scanf("%s",str)注意不加地址符&
    2.fgets(str,100,stdin)注意若数组内未满''前会多一个' '
    3.

    while((str[i]=getchar())!='')i++;
    str[i]='';//注意结束符号
    

    特点

    1.由''结尾,所以定义数组时范围必须比字符所需空间大1
    2.结束标志用''判断

    注意''的存在和fgets' '的存在

    2.PTA实验作业(7分)

    2.1 题目名1(3分)

    选择一题一维数组相关题目。请认真写伪代码整理解题思路。自己代码和同学代码比较,说明各自代码特点。
    调查电视节目受欢迎程度

    2.1.1 伪代码

    include<stdio.h>

    int main()
    {
    int a[999],n,i,j;
    static int b[9];
    scanf("%d", &n);
    for (i = 0;i <= n - 1;i++)scanf("%d", &a[i]);
    for (i = 0;i <= n - 1;i++)
    {
    for (j = 1;j <= 8;j++)
    {
    if (a[i] == j)
    {
    b[j]++;
    }
    }
    }
    for (i = 1;i <= 8;i++)printf(" %d%4d ",i, b[i]);
    }

    2.1.2 代码截图

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

    同学代码:
    输入方法不同:我数组输入,同学挨个输入依次判断,对于这题来说,直接判断更加精简

    2.2 题目名2(2分)

    选择阅览室或鞍点这2题介绍二维数组。并说明和超星视频做法区别。

    2.2.1 伪代码

        定义 a[6][6],n
        输入n 
        定义i,j;  
        for i=0 to n-1  
            for j=0 to n-1 
            {
                输入a[i][j]
            }  
        定义 k=0,y=0,flag=1,p=0;  
        if(n==1)  
            then打印("0 0");
        else  
        {  
            for j=0 to n-1 
            {  
                y=i;  
                for p=0 to n-1 
                {  
                    if(a[i][k]<=a[i][p]) 
                    {  
                        then k=p;  
                    }  
                }  
                for j=0 to n-1 
                {  
                    if(a[y][k]>a[j][k]) 
                    {  
                        then y=j;  
                        break;  
                    }  
                }  
                if(i==y)
                {  
                    then flag=0;  
                    break;  
                }  
            }  
            if(flag==0)  
               打印i,k  
            else 
    	    打印("NONE");  
        }  
        end
    }
    

    2.2.2 代码截图


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

    超星视频命令了个函数思路清晰,但总体差别不大

    2.3 题目名3(2分)

    选择切分表达式这题介绍
    字符数组。并说明和超星视频做法区别。

    2.3.1 伪代码

    #include <stdio.h>
    int main()
    {
    	定义 str[40];
    	定义 i;
    	输入str;
    	for (i = 0;str[i];i++)
    	{
    		if (i == 0 && (str[i] == '+'||str[i]=='-'))then打印("%c",str[i]);
    		else if (str[i] >= '0' && str[i] <= '9')
    		{
    			for (i;(str[i] >= '0' && str[i] <= '9')||str[i]=='.';i++)
    			{
    				打印("%c", str[i]);
    			}
    			i--;
    			打印("
    ");
    		}
    		else if ((i >= 1)&&(str[i] == '-') && (str[i + 1] >= '0' && str[i + 1] <= '9') && (str[i - 1] == '('))打印str[i];
    		else 打印("%c
    ", str[i]);
    
    	}
    }
    

    2.3.2 代码截图

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

    差别不大

  • 相关阅读:
    java 语言里 遍历 collection 的方式
    struts2启动报错com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1
    mysql 查看表的类型
    memcached—向memcached中保存Java实体需注意的问题
    一个关于 UIPickerView 的 bug
    Wireshark数据抓包教程之安装Wireshark
    Mysql第四天 数据库设计
    产品经理怎样才干把一件事做出色
    Tokyo Tyrant(TTServer)系列(三)-Memcache协议
    Unity3D
  • 原文地址:https://www.cnblogs.com/denghong88/p/14128943.html
Copyright © 2011-2022 走看看