一、PTA实验作业
题目1:7-3 倒顺数字串
1. 本题PTA提交列表
2. 设计思路
- 1.定义n表示输入字符串的长度,count表示要输出的数,i来控制循环
- 2.循环2n-1次 for(i=1;i<=2n-1;i++)
- 3.先进行前面递增的部分(i<=n)
- 4.若n==1,printf("%d",count);
- 5.否则输出 printf("%d ",count)
- 6.得到(i>n&&i!=2*n-1) 进行递减输出 count--
- 7.if(i==2*n-1&&i!=1),既输出最后一个数时,printf("%d",count),不用输出空格
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
- 第一个数后面输出有空格,一开始没注意,后来提示答案错误之后又加了一个条件就解决了
题目2:7-6 掉入陷阱的数字
1.本题PTA提交列表
2. 设计思路
- 1.N表示输入的自然数,sum表示下一位新的自然数,n用于置换,i用于循环
- 2.输入N scanf("%d",&N);
- 3.赋N值给n
- 4.进行无条件循环for(;😉
- 5.然后进行while(n!=0){
sum=sum+n%10;//将各位上的数字相加
n=n/10;}
sum=sum*3+1; 计算新的自然数 - 6.输出printf("%d:%d\n",i++,sum);
if(sum==N)便结束循环 - 7.否则n=sum,sum=0.重新开始循环(5)
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
- 这道题在DEV-C那边改好做对了,在PTA就直接对了。运行超时是因为循环括号扩错了,后来修改过了就行了
题目3:7-10 简单计算器
1. 本题PTA提交列表
2. 设计思路
- 1.定义velue1,velue2分别代表运算前后的数,sum表示一次运算后的值
- 2.char ch
- 3.输入 scanf("%d",&velue1);
- 4.(ch=getchar())!='=')进行循环
- 5.输入scanf("%d",&velue2);
- 6.若velue2==0,则表示分母为0,输出ERROR
- 7.否则switch(ch){//判断输入字符进行相应运算
case '+':sum=velue1+velue2;break;//因为本题运算是按从左到右的顺序来的,所以运行一次就结束
case '-':sum=velue1-velue2;break;
case '':sum=velue1velue2;break;
case '/':sum=velue1/velue2;break;
default:printf("ERROR\n");return 0;//若为其他字符,输出ERROR
} - 8.velue1=sum;将sum赋值给velue1,进行下一次运算
- 9.输入字符为=时,结束循环
3.代码截图
{{uploading-image-65509.png(uploading...)}}
4.本题调试过程碰到问题及PTA提交列表情况说明
- 没判断非法字符,一时不会如何判断,然后记起switch语句中还有一个default语句,加上去就可以了。
二、截图本周题目集的PTA最后排名。
三、本周学习总结
1.你学会了什么?
1.1 一维数组如何定义、初始化?
- 类型名 数组名[数组长度]=
1.2 一维数组在内存中结构?可画图说明。数组名表示什么?
- 数组名表示 一个地址常量,存放数组内存空间的首地址
1.3 为什么用数组?
在程序中使用数组,可以让一批相同类型的变量使用同一个数组变量名,用下标来互相区分。它有表达简洁,可读性好,便于使用循环结构的优点
1.4 介绍选择法、冒泡法、直接插入排序如何排序?伪代码展示.
选择法:
- 1.定义变量i,index,n,k,temp
- 2.int a[10]
- 3.给数组赋值
- 4.for(k=0;k<=n-1;i++){
index=k;//index存放最小值所在下标
for(i=k+1;i<n;i++)//寻找最小值所在下标
if(a[i]<a[index]);//最小元素与下标为k的元素互换;
index=i;
temp=a[index];
a[index]=a[k];
a[k]=temp;
} - 5.输出数据
冒泡法(直接写主要部分了)
- 1.int I,j,t;
- 2.for(i=1;i<n;i++)//外部循环
for(j=0;j<n-1;j++)//内部循环
if(a[j]>a[j+1]){//比较两个数大小
t=a[j];a[j]=a[k+1];a[j+1]=t;}//如果前一个元素大,则互换
直接插入排序
直接插入法:
- 1.从第二个数开始比较
- 2.如果比较的数比前一个数小,则插入到前一个位置
- 3.重复第二步循环,直到该数前面没数字或者前面的数比它的数值大
1.5 介绍什么是二分查找法?它和顺序查找法区别?
- 二分查找又称折半查找,它是一种效率较高的查找方法。
- 二分查找的基本思想是:(设R[low..high]是当前的查找区间)
- 区别:二分法效率高,但只能用于有序的数列。顺序查找效率相对慢了点,但可以用于无序的数列
1.6 二维数组如何定义、初始化?
- 类型名 数组名[行长度][列长度]
- 初始化可以按行赋值,也可以按顺序赋值。这两个结果是一样的
- 比如按行a[3][3]={{1,2,3},{4,5,6},{7,8,9}
按顺序a[3][3]=
1.7 矩阵转置怎么实现?方阵中:下三角、上三角、对称矩阵的行标i列标j的关系?请说明。
- 行列下标互换可以实现矩阵转置
- 下三角i<=j 上三角i>=j 对称矩阵i=j
1.8 二维数组一般应用在哪里?
- 一般用于列表,矩阵
2.本周的内容,你还不会什么?
- 经过了一次考试,发现不会的太多了,一些基础的都感觉没弄懂,考试也考得很差。说实话,感觉自己什么都不懂呢,得买个本子把老师讲的知识点都记下来,然后把基础先搞懂。看编程的能力也不强,还有很多很多问题要解决。本周讲了数组,也不敢说自己懂了多少,但是大概已经理解了,剩下的通过PTA巩固吧。好好学习,要把下次考试考好。