C语言I作业11
| 这个作业属于那个课程 | C语言程序设计I |
|---|---|
| 这个作业要求在哪里 | C语言I作业11 |
| 我在这个课程的目标是 | 学会编写小程序 |
| 这个作业在那个具体方面帮助我实现目标 | 掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型 |
| 参考文献 | C语言程序设计、百度百科 |
1.PTA实验作业

1.1 统计某类完全平方数
题目内容:
本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
函数接口定义:
int IsTheNumber ( const int N );
其中N是用户传入的参数。如果N满足条件,则该函数必须返回1,否则返回0。
裁判测试程序样例:
#include <stdio.h>
#include <math.h>
int IsTheNumber ( const int N );
int main()
{
int n1, n2, i, cnt;
scanf("%d %d", &n1, &n2);
cnt = 0;
for ( i=n1; i<=n2; i++ ) {
if ( IsTheNumber(i) )
cnt++;
}
printf("cnt = %d\n", cnt);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
105 500
输出样例:
cnt = 6
1.1.1数据处理
数据表达:题目变量为n,b,m,题目运用了if条件语句,while循环语句,for循环语句,运用数组对函数进行简便的编写
数据处理:
定义 n=N;
定义 b;
定义 p[10]={0};
定义 m=sqrt(n);
if(m*m==n)//判断条件完全平方数
{
while(n)
{
b=n%10;
p[b]++;//判断是否是三位数
n/=10;
}
for(定义 i=0;i<=9;i++)//进入for循环
{
if(p[i]>1)
return 1;
}
}
return 0;
}
1.1.2实验代码截图

1.1.3 造测试数据
| 输入数据 | 输出数据 |
|---|---|
| 105 500 | ![]() |
| 120 300 | ![]() |
| 220 700 | ![]() |
1.1.4 PTA提交列表及说明

编译错误:在输入嵌入代码时,将函数接口定义全部复制进去了如int IsTheNumber ( const int N );,结果运行时因为多了一个分号导致编译错误。
部分正确:输出时判断条件与题目不相符,导致输出结果错误,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同。
1.2 统计各位数字之和是5的数
题目内容:
本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和。
函数接口定义:
int is( int number ); void count_sum( int a, int b );
函数is判断number的各位数字之和是否等于5,是则返回1,否则返回0。
函数count_sum利用函数is统计给定区间[a, b]内有多少个满足上述要求(即令is返回1)的整数,并计算这些整数的和。最后按照格式
count = 满足条件的整数个数, sum = 这些整数的和
进行输出。题目保证0<a≤b≤10000。
裁判测试程序样例:
#include int is( int number ); void count_sum( int a, int b ); int main() { int a, b; scanf("%d %d", &a, &b); if (is(a)) printf("%d is counted.\n", a); if (is(b)) printf("%d is counted.\n", b); count_sum(a, b); return 0; } /* 你的代码将被嵌在这里 */
输入样例:
104 999
输出样例:
104 is counted. count = 15, sum = 3720
1.2.1 数据处理
数据表达:变量为t,s,number,count,sum题目运用了while循环结构,if条件语句,for循环结构
数据处理:
定义 t, s = 0;
while (number != 0)//当number不等于0时进入循环
{
t = number % 10;//取余数
number = number / 10;取商
s = s + t;
}
if (s == 5)//判断给定正整数的各位数字之和是否等于5
{
return 1;
}
return 0;
}
void count_sum(int a, int b)
{
int n,count = 0, sum = 0;
//scanf("%d%d", &a, &b);
for (n = a; n <= b; n++)
{
if (is(n))//满足上述要求的整数
{
count++;//计算这些整数的和
sum = sum + n;
//return 1;
}
}
printf("count = %d, sum = %d\n", count, sum);
}
1.2.2 实验代码截图


1.2.3 造测试数据
| 输入数据 | 输出数据 |
|---|---|
| 104 999 | ![]() |
| 120 657 | ![]() |
| 250 520 | ![]() |
1.2.4 PTA提交列表及说明

编译错误:返回值错误,与题目不符合,本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和。这个要求没有完全符合这个题目要求,接口函数定义两个都写了上去。
2.代码互评
同学的代码:


我的代码:


1.同学的代码比我的要清楚,相对容易理解,我的代码是通过上百度查找过来的,但还是没有完全理解。同学的代码就很好理解。
2.通过上网查找了解了数组的用法,定义和实例讲解,提前预习了新的知识,但是具体怎么用数组来解决问题还是不清楚,还要继续学习。
3.学习总结
3.1 学习进度条
| 时间 | 所花时间 | 代码行 | 学到的知识点简介 | 目前感到迷惑的地方 |
|---|---|---|---|---|
| 第一次 | 9h | 55 | 打出Hellow World | 输出比较困难 |
| 第二次 | 12h | 120 | 学习提问的智慧 | 安装编译软件 |
| 第三次 | 两天半 | 190 | 关系运算、if-else语句、格式化输入语句scanf(),以及常用的数学库函数 | scanf函数不知道怎么用 |
| 第四次 | 18h | 220 | 使用for循环语句实现指定次数的循环程序设计 | 整型函数还不是很清楚 |
| 第五次 | 8h | 350 | 生成乘方表与阶乘表 | 读代码还不清楚 |
| 第六次 | 7h | 195 | 熟悉多分支结构、字符型数据类型和逻辑运算符。 | 数据类型不是很清楚 |
| 第七次 | 33h | 240 | 熟悉多分支结构switch语句的使用 | switch多分支结构的条件怎么写 |
| 第八次 | 10h | 260 | 使用while和do-while结构解决问题 | 做PTA时不知道从什么地方下手 |
| 第九次 | 13h | 275 | break、continue的使用、熟悉使用循环的嵌套解决问题 | 怎么运用循环嵌套 |
| 第十次 | 15h | 320 | 能够根据实际情况,选择合适的算法、合理的循环结构,熟练的编写程序 | 选择算法 |
| 第十一次 | 20h | 410 | 掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型 | 函数的调用、函数变量的运算 |
3.2 累积代码行和博客字数

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

3.3.2 学习体会
1.这次作业难度大,选择题还好,函数题和编程题目比较难,虽然是数学学过的知识,但是用代码来解决问题就比较难了,不知道怎么编写代码。
2.临近期末,但还是感觉这个学期学的东西还没有完全消化,还有很多知识点还是不清楚,比如做PTA,有时根本不知道写。
3.还是要继续努力,把基础打扎实。






浙公网安备 33010602011771号