#C语言作业11
这个作业属于那个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | ![作业](https://edu.cnblogs.com/campus/zswxy/SE2019-1/homework/10128) |
我在这个课程的目标是 | 熟练掌握C语言程序设计,编程代码,学习新知识。 |
这个作业在那个具体方面帮助我实现目标 | 训练编程题,巩固新知识。完成作业。 |
参考文献 | 《C语言程序设计ll》 |
PTA作业
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)数据处理
数据表达:
用了整形变量x,m;
用m来找完全平方数的范围内的整数
使用了数组
数据处理:伪代码
开始
int IsTheNumber ( const int N );//N是用户传入的参数。如果N满足条件,则该函数必须返回1,否则返回0
int main()
{
int n1, n2, i, cnt;//定义整形变量n1,n2, i, cnt
scanf("%d %d", &n1, &n2);
cnt = 0;//cnt初始化为0
for ( i=n1; i<=n2; i++ ) {//循环n1到n2次
if ( IsTheNumber(i) )//自定义函数IsTheNumber(i)
cnt++;//cnt累加
}
printf("cnt = %d\n", cnt);//输出cnt
return 0;//返回值为0
}
#include <stdio.h>
int IsTheNumber ( const int N )
{
int x,m;//定义x,m
x=(int)sqrt(N);//x定义为整形的根号N
m = x*x;
if (m == N)//如果m=N
{
int num[10]={0};//定义了一个int型的大小为10的数组nums,同时该数组所有的元素均被初始化为0
int i;
while(m>0)//当m>0时
{
for(i = 0;i<=9;i++)//循环9次
{
if (m%10 == i)//如果m除以10的余数=i
{
num[i]=num[i]+1;//
if (num[i]==2)//如果数组i=2
{
return 1;//返回值为1
}
}
}
m=m/10;//m等价于m/10
}
}
return 0;//返回值为0
}
1.1.1实验代码截图
1.1,2作业提交
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
144 225 | cnt=2 | 有两个完全平方数 |
105 500 | cnt=6 | 有六个完全平方数 |
提交说明 | ||
A1:编译错误:有地方少打一个冒号 | ||
2.编译错误:变量打错了。 | ||
3.答案正确:修正whlie。好了 |
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 <stdio.h>
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)数据处理
数据表达:用了整型变量t, s = 0
运用了自定义函数,for循环结构和if结构
用sum表示和,count表示符合的个数
数据表达:伪代码
开始
int is( int number );//is自定义函数
void count_sum( int a, int b );//定义整形变量a,b来接收主函数传入的值
int main()
{
int a, b;//整形变量a,b
scanf("%d %d", &a, &b);
if (is(a)) printf("%d is counted.\n", a);//如果自定义函数is(a)返回来的值不为0
if (is(b)) printf("%d is counted.\n", b);//输出b
count_sum(a, b);
return 0;//返回值为0
}
int is(int number)//is自定义函数
{
int t, s = 0;//整形变量t,s
while (number != 0)//当数值不等于0时
{
t = number % 10;//t的值为数值除以10取余
number = number / 10;//数值等于原数值除以10的商
s = s + t;//s的值为s和t的和
}
if (s == 5)//如果s等于5
{
return 1;//返回值为1
}
return 0;//返回值为0
}
void count_sum(int a, int b)//自定义函数void count_sum(定义整形变量a,b来接收主函数传入的值)
{
int n,count = 0, sum = 0;//定义整形变量n,count=0,sum=0
scanf("%d%d", &a, &b);
for (n = a; n <= b; n++)//循环a到b次
{
if (is(n))//自定义函数is(定义整形变量n来接收主函数传入的值)
{
count++;//累加
sum = sum + n;//sum的值为sum和n的和
}
}
printf("count = %d, sum = %d\n", count, sum);//输出count,sum
}
(2)实验代码截图
1.2.3造测数据
数据 | 输出数据 | 说明 |
---|---|---|
104 203 | 104 is counted.203 is counted. count = 6, sum = 813 | 符合条件整数有6个整数和为813 |
104 104 | 104 is counted. count = 1, sum = 104 | 符合条件的整数有1个,整数和为104 |
1.2.3PTA说明 | ||
编译错误:第10行中写成了= | ||
2.编译错误:第12行中也写成了return 0 | ||
3.答案正确:第10行写成==,第12行写成return 1 |
2.代码互评
一,
ta
me
Q1:该同学用了嵌套语句用break跳出循环,而我只用了while语句
2.而且这同学用了两个if嵌在while里面,我只用了1个if,我的更为简洁明了。
3.学习总结
3.1学习进度条
周 | 这周所花时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第七周 | 19小时 | 286行 | 分支结构 | 无 |
第八周 | 15小时 | 338行 | 函数的定义和调用 | 暂无 |
第九周 | 18小时 | 422行 | if-slse语句 | 无 |
第十周 | 20 小时 | 488行 | switch | no |
第十一周 | 20小时 | 520行 | while和do-while结构 | 对有些语句结构还有些陌生 |
第十二周 | 16小时 | 130行 | 熟悉使用while和do-while结构解决问题 | 目前还不太熟练 |
第十三周 | 15小时 | 120行 | 熟悉使用for结构,了解并掌握了break语句和continue语句 | 目前还不太熟练continue语句 |
第十四周 | 15小时 | 180行 | 熟悉使用循环结构 | 目前还不太熟练 |
第十五周 | 14小时 | 260行 | 熟悉函数,学会使用自定义函数 | 对数组不太了解,对函数不太熟练 |
3.2累积代码行和博客字数
时间 | 代码行 | 博客字数 |
---|---|---|
第七周 | 556 | 1050 |
第八周 | 750 | 1390 |
第九周 | 980 | 1670 |
第十周 | 1050 | 1890 |
第十一周 | 1200 | 2200 |
第十二周 | 2094 | 2656 |
第十三周 | 2379 | 3170 |
第十四周 | 2879 | 3778 |
第十五周 | 3147 | 4156 |
3.3学习内容总结和感悟 | ||
3.3.1学习内容总结
学习的函数类型很多,还需多多巩固,加强锻炼。提高质量。
2.保持一颗求学的心。持之以恒。让自己做到更好。
3.巩固do-while语句运用,continue语句,调用函数的运用
作业越来越难,但我们还是坚持下来。
还是这句话,凡是不能杀死我的都能使我更加强大。