C语言程序设计作业03:第十周作业
这个作业属于哪个课程 | C语言程序设计II |
---|---|
我在这个课程的目标是 | 熟悉掌握二维数组和字符数组 |
这个作业在那个具体方面帮助我实现目标 | 了接一些字符库函数, 运用二维数组 |
参考文献 | C语言程序设计教程 百度 cpp.com |
1.PTA作业
1.PTA实验作业![在这里插入图片描述](https://img-blog.csdnimg.cn/918079f13fb742cfbe90df95c71ca5ff.png)
1.1找出矩阵中最小值所在的位置
内容:将1个m x n的矩阵存入1个m x n的二维数组中,找出最小值以及它的行下标和列下标,并输出该矩阵。
1.1.1 数据处理
**数据表达:定义i,j,m,n,r,c;和二维数组a[50][50];
其中 i 表示列 j 表示行;
**数据处理:
输入m,n;
表示输入的行列数;
进行一个外循环 i 从0开始步长为1,当 i<n时跳出循环;
再设置一个内循环 j 从0开始步长为1,当 j<n时跳出循环;
再内循环中分别输入矩阵的行和列;
赋值r和c为0;
再内外循环输入矩阵的行和列;
在内循环中判断最小值及其所在位置;
在外循环尾端打印一个换行符;
最后输出最小值及其所在位置;
1.1.2实验代码截图
#include <stdio.h>
int main()
{
int i,j,m,n,min;
int r,c;
int a[50][50];
scanf("%d%d",&m,&n);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
r=c=0;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%4d",a[i][j]);
if(a[i][j]<a[r][c])
{
r=i;
c=j;
}
}
printf("\n");
}
printf("min = a[%d][%d] = %d",r,c,a[r][c]);
return 0;
}
在这里插入代码片
1.1.3造测试数据
输入数据 | 输出数据 |
---|---|
3 2 5 6 9 7 3 8 | 5 6 9 7 3 8 min = a[2][0] = 3 |
3 2 7 9 4 6 1 3 | 7 9 4 6 1 3 min=a[2][0] = 1 |
1.1.4PTA提交列表及说明
提交列表说明:
1.段错误:在定义数组时分配的空间较小;发现后扩大了空间容量;
2.答案编译错误:矩阵没有成型,发现是没有加换行;在外循环后加上换行才解决
3.答案编译错误:输出结果并不是最小值的位置;后面经过调试,定义了r ,c才找到相印的位置;
1.2短号
内容:在某年的校程序设计竞赛中,报名参赛的同学很多都只留了短号,这让通知获奖同学来取获奖证书的H老师很是困扰,因为他没有短号!痛定思痛,H老师也要办短号了。这里约定短号为手机号码的最后六位,但如果取出的最后六位是以0开头的,要改为以9开头。现给出H老师手机号码,请确定他的短号。
**数据表达:
定义 i 和 T;T表示组数;
用long long int 定义str[2]
**数据处理
输入T
设置一个循环为str数组赋值
设置第二个循环输出str数组内所有的数
并使其取模后六位,判断取模后第一位是否为0,若为0,则赋值为9,并与后5位相加
最后输出
每次循环换行一次;
#include <stdio.h>
int main()
{
int i,T;
long long int str[2];
scanf("%d",&T);
for(i=0;i<2;i++)
{
scanf("%lld",&str[i]);
}
for(i=0;i<2;i++)
{
printf("%lld ",str[i]);
str[i]=str[i]%1000000;
if( str[i]/100000==0 )
{
str[i]=900000+str[i]%100000;
printf("%lld",str[i]);
}
else
{
printf("%lld",str[i]);
}
printf("\n");
}
return 0;
}
在这里插入代码片
1.2.3造测试数据
输入数据 | 输出数据 |
---|---|
13110023456 | 13110023456 923456 |
13111123456 | 13111123456 123456 |
1.2.4PTA提交列表及说明
提交列表说明:
1.答案错误:输出是两组数据答案都一样,是没有发生判断;经过调试可以得到,得出是取模问题;已解决。
2.编译错误:用long long int 定义未用%lld输出无法得到答案,通过dev测试解决。
2.代码互评
同学的代码
同学的代码
自己的代码
不同的点:
1.同学数组开辟的空间远远大于我开辟的空间;
2.同学没有多余定义,而我多余定义了一个min;
3.在输出上同学输出到位,细节把控得很好;
3.学习总结
3.1学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第六周 | 50h | 200 | 数据类型 | 补码,反码的与、或运算 |
第七周 | 30h | 150 | 输入输出 | 无太大问题 |
第八周 | 20h | 130 | 选择语句 | 嵌套式逻辑不太清楚 |
第九周 | 20h | 150 | 循环语句 | 循环语句和选择语句的嵌套还是没搞清 |
第十周 | 25h | 180 | 数组 | 数组使用后对其作用不太清除 |