这个作业属于那个课程 |
C语言程序设计II |
这个作业要求在哪里 |
C语言I作业11 |
我在这个课程的目标是 |
学会使用函数,熟练函数类型 |
这个作业在那个具体方面帮助我实现目标 |
在PTA的练习中逐渐熟练语句用法,和对知识的自我总结上 |
参考文献 |
集美大学林丽老师、百度文库、C语言程序设计 |
1.PTA实验作业

1.1 题目名1
统计某类完全平方数
本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
输入样例:105 500
输出样例:cnt = 6
1.1.1数据处理
数据表达:b代表余数;i,j用于循环;a用于判断i是否满足条件,它们都是整型变量;
数据处理:
{
int n1, n2, i, cnt; 定义变量n1,n2,i,cnt的类型
scanf("%d %d", &n1, &n2); 输入n1,n2
cnt = 0; 对cnt对进行赋值
for ( i=n1; i<=n2; i++ ) 进行循环直到n1等于n2为止
{
if ( IsTheNumber(i) ) 当满足函数条件
cnt++; cnt累计
}
printf("cnt = %d\n", cnt); 输出cnt
return 0; 结束
}
int IsTheNumber ( const int N ) 函数头
{
int i,s[10],a,b=0,j; 定义变量i,a,b,i,j,数组s
i=N; 将i赋值给N
a=sqrt(i); a等于根号i
if(a*a==i) 当i等于a的平方
{
while(i>0) 当i>0时
{
s[b]=i%10; 用s[b]来存放i除以10的余数
i=i/10; i等于i除以10
for(j=0;j<b;j++) 进行循环
{
if(s[b]==s[j]) 当s[b]等于s[j]时
return 1; 返回1
}
b++; 累加b
}
}
return 0; 返回0
}
1.1.2实验代码截图

1.1.3 造测试数据
输入数据 |
输出数据 |
说明 |
46 572 |
7 |
46和572之间满足条件的数有7个 |
400 900 |
5 |
400和900之间满足条件的数有5个 |
10 700 |
8 |
10和700之间满足条件的数有10个 |
1.1.4 PTA提交列表及说明

* 编译错误:忘记打分号,通过看错误提示发现错误并改正的;
* 编译错误:忘记打分号,通过看错误提示发现错误并改正的;
1.2题目名2
统计各位数字之和是5的数
本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和。
函数is判断number的各位数字之和是否等于5,是则返回1,否则返回0。
函数count_sum利用函数is统计给定区间[a, b]内有多少个满足上述要求(即令is返回1)的整数,并计算这些整数的和。最后按照格式
输入样例:104 999
输出样例:104 is counted.count = 15, sum = 3720
1.2.1数据处理
*数据表达*:
s用来计算各数字之和是否等于5;t代表余数;n为输入数;count为满足条件的整数个数, sum为这些整数的和;
*数据处理*:
int is( int number );
void count_sum( int a, int b ); 自定义函数
int main()
{
int a, b; 定义a,b变量
scanf("%d %d", &a, &b); 输入a,b
if (is(a)) printf("%d is counted.\n", a); 如果返回值不为0,则输出a is counted.
if (is(b)) printf("%d is counted.\n", b); 如果返回值不为0,则输出b is counted.
count_sum(a, b); 自定义函数
return 0; 结束
}
int is( int n)
{
int s=0,t=0; 定义s,t并对其赋值为0
while(n!=0) 当n不等于0时一直循环
{
t=n%10; t等于n除以10的余数
n/=10; n等于n除以10
s+=t; s等于s加t
}
if(s==5) 如果s等于5
return 1; 返回1
else 否则
return 0; 返回0
}
void count_sum( int a, int b )
{
int sum=0,count=0,i; 定义sum,count,i变量
for(i=a;i<=b;i++) 进行循环,直到i等于b为止
{
if(is(i)) 如果满足函数is(i)
{
count++; count进行累加
sum+=i; sum等于sum加i
}
}
printf("count = %d, sum = %d\n",count,sum); 输出count,sum
}
1.2.2实验代码截图

1.2.3 造测试数据
输入数据 |
输出数据 |
说明 |
66 222 |
count=8 sum=1246 |
在66到222之中count为8,sum为1246 |
77 999 |
count=15 sum=3720 |
在77到999之中count为15,sum为3720 |
221 776 |
221 is counted count=8 sum=2695 |
在221到776之中count为8,sum为2695,221 is counted |
1.2.4 PTA提交列表及说明

*编译错误:把双引号打成中文版,通过调试发现的,并改正;
2.代码互评
自己代码:

同学代码:

* 该同学定义的变量与我的不同;
* 该同学先用i计算余数,再存放到数组中;而我直接用数组存放余数;
* 我在取余后再次使用for循环来判断是否满足条件,该同学用s[i]=2来判断;
自己代码:

同学代码

* 该同学定义的变量与我的不同;
* 该同学用了do-while语句来循环语句,而我用的是while循环语句和for循环语句;
3.学习总结
3.1 学习进度条
周/日期 |
这周所花的时间 |
代码行 |
学到的知识点简介 |
目前比较困惑的问题 |
第六周 |
4天 |
20 |
用 MinGW-w64 来编译C程序,学习编程计算温度的转化 |
无 |
第七周 |
3天 |
99 |
学习用if,else等语句编译程序 |
无 |
第八周 |
2天 |
75 |
学习使用循环语句,用for来编译程序 |
无 |
第九周 |
3天 |
94 |
学习各种使用函数eg:fact(i) |
for循环与while循环的区别 |
第十周 |
2天 |
213 |
学习使用多种分支结构 |
对分支结构中for循环有点迷糊不太能理解 |
第十一周 |
1天 |
135 |
学习使用switch语句 |
无 |
第十二周 |
1天 |
96 |
学习使用while语句 |
无 |
第十三周 |
1天 |
83 |
学习使用循环嵌套,continue语句 |
循环嵌套的顺序 |
第十四周 |
1天 |
115 |
练习循环嵌套与if-else语句的结合 |
循环嵌套的顺序 |
第十五周 |
2天 |
48 |
学习使用不同类型的函数 |
不知道函数应该怎么衔接 |
3.2 累积代码行和博客字数
时间 |
博客字数 |
代码行数 |
第四周 |
651 |
28 |
第六周 |
2041 |
48 |
第七周 |
4337 |
147 |
第八周 |
7005 |
222 |
第九周 |
9723 |
316 |
第十周 |
11911 |
529 |
第十一周 |
13872 |
664 |
第十二周 |
15759 |
760 |
第十三周 |
18111 |
843 |
第十四周 |
20009 |
958 |
第十五周 |
22007 |
1006 |

3.3 学习内容总结和感悟
3.3.1 学习内容总结

3.3.2 学习体会
本周学习了函数的用法,类型,变量的用法及类型。虽然以前就已经学了一次函数,但是这次的学习是更加的深入。可以从PTA的难度中看出,这次的题目好像是突然上了一个档次,让人应接不暇。第一道题目已经让我力不从心,因为它用了数组,然而我并没有学习过,于是代码看的有点懵逼。从此次难度可以得出,在计算机这条路上我们还是太单纯。以后要更努力学习了,不然快跟不上了。
