数组
这个作业属于哪个班级 | 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]!='\n'; i++)
{
if (a[i] != '\n')
{
b[a[i]] = 1;
}
}
for (i = 1; i < 256; i++)
{
if (b[i] == 1)
printf("%c", i);
}
return 0;
}
- 字符数组、字符串特点及编程注意事项。
1.数组数字是从0开始数的,因此要格外注意
2.字符串要考虑结尾有没有\0,因为这是他的结束标志
scanf("%s",a)//当输入回车和空格时,结束输入,并自动在结尾加上'\0'
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\n", 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\n",s[i]),else printf("%c",s[i])
当字符为数字或‘.’时,如果s[i+1]不为数字或‘.’printf("%c\n",s[i]),else printf("%c",s[i])
当字符不为数字,‘.’,'+','-'时printf("%c\n",s[i])
2.3.2 代码截图
2.3.3 请说明和超星视频做法区别,各自优缺点。
我的思路和超星视频的思路差不多,不同的是他发现了i!=0时,‘-’前如果是负数则会有‘(’,