c语言数组作业
一:PTA实验作业
题目1:字符串的冒泡排序
1.提交列表:
2.设计思路:
定义二维数组a作为输入的需要排序的数组,数组m作为交换的中间变量,利用冒泡排序法为二维数组排序。
使用strcpy函数交换两个数组,利用strcmp函数比较两个字符数组的大小。
流程图:

3.本题调试过程碰到问题及PTA提交列表情况说明。

之前不理解题意,以为排序是按字符串中的字符个数排序,一直用strlen比较。
后来想通了,是按照字符串中的英文单词的大小排序,用到strcmp函数。
题目2:组个最小数
1.提交列表:

2.设计思路:
定义数组a,b
a存储输入的0到9的各个数字的数量
b存储数字0到9(重复的),用for循环给b赋值
for(i=0;i<10;i++)一共0到9有10个数字
for(j=0;j<a[i];j++)
b[k++]=i;
此时数组b中按0到9的顺序排列。
再用while(b[0]==0) 交换b[0],b[ i ],i为不为0的值。解决b中首位为0的情况。
输出数组b。
流程图:

3.本题调试过程碰到问题及PTA提交列表情况说明。

输出的时候格式错误,题目要求输出数字之间没有空格,把输出时%d后的空格去掉就行了。
题目3:Left-pad
1.提交列表:

2.设计思路:
定义数组a,整型变量n,字符x,o,p,输入a,n,x,o,p。
scanf("%d%c%c%c",&n,&p,&x,&o);
gets(a); 输入n,p,x,o,输入数组a。
n和x分别为填充结果字符串的长度和用于填充的字符。
p和o用于空格和换行的输入,是为了避免输入的空格变成了x的值,输入的换行变成了数组a的值,导致数组a无法输入。
接下来分三种情况:n>strlen(a),先循环输出字符x,再输出数组a。
n==strlen(a),直接输出数组a。
n<strlen(a),输出数组a的最后n个字符。
流程图:

3.本题调试过程碰到问题及PTA提交列表情况说明。

最大N,长度超过N的字符串运行超时,我猜测是数组a的长度不够,果然增加了数组a的长度之后就过了。
二、同学代码结对互评
我的代码:

互评同学代码:

我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?
我的代码通过调用函数去找局部最大值,在for循环条件里就把边界元素排除掉,if条件是该元素大于周边元素。
彦婵的代码是把所有需要考虑的因素都放在if条件里,循环的次数更多。
我更喜欢我的代码风格,虽然没有彦婵的代码简短,但整体结构清晰。
三、截图本周题目集的PTA最后排名

四、本周学习总结
1.你学会了什么?
1.1数组的定义和引用
定义:一维数组:类型名 数组名 【数组长度】
二维数组:类型名 数组名 【行长度】【列长度】
数组名表示该数组所分配连续内存空间的第一个单元的地址,即首地址。
引用:只能引用单个数组元素,而不能一次性引用。
数组下标从0开始,下标不能越界。
1.2一维数组的初始化
类型名 数组名 【数组长度】 = {初值表};
例如int a[10]={1,2,3,4,5,6,7,8,9,10};
部分初始化后其余元素均为0。
1.3二维数组的初始化
类型名 数组名 【行长度】【列长度】= { {初值表1},{初值表2},.........};
1.4字符串的初始化
char str[6]={'a','b','c','d','e','\0'};
或char str[6]={"abcde"};
或char str[6]="abcde";
1.5字符串的注意点
字符串由有效字符和字符串结束符‘\0'组成。
单个初始化字符串时,结束符不能省略。
字符串输入:1.scanf("%s", ),遇空格终止
2.gets()直接吸收整个字符,遇‘\n’终止
3.用循环输入
字符串输出:1.printf("%s", ),输出一整个字符串。
2.puts()和printf的区别是:输出之后会自动换行。
1.6常用的字符串处理函数
strlen(str):计算一个字符串的有效长度,即'\0'之前的字符个数
strcpy(s1,s2):将字符串2赋值给字符串1,返回s1
strcar(s1,s2):字符串连接函数,将s2连接到s1的后面,返回s1
strcmp(s1,s2):比较两个字符串的大小,返回值为0表示相等,返回值>0即s1>s2,返回值<0即s1<s2。
2.本周的内容,你还不会什么?
对一些稍微复杂的字符串应用不太熟练
对一些pta题目找不到解题思路
部分正确的题目找不到错误原因
浙公网安备 33010602011771号