C语言I博客作业11

这个作业属于那个课程 C语言程序设计I
这个作业要求在哪里 C语言I博客作业11
我在这个课程的目标是 复习前面所学的语句和循环,学习有关函数的知识
这个作业在那个具体方面帮助我实现目标 C语言教材书,老师课堂讲的内容,同学的帮助
参考文献 C语言程序设计,百度,《C primer plus》,集美大学灵丽老师

1.PTA实验作业

1.1统计某类完全平方数 (20分)

本题要求实现一个函数,判断任一给定整数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.2.1数据处理:

数据表达:定义了一个数组temp[10],整型变量N,i用于循环,定义了n接受N的平方根乘n的平方根,N是输入的整数,定义一个数组temp,初始化为0,用于统计每个数字出现的次数
数据处理:
int IsTheNumber ( const int N )
{
int n=sqrt(N);
if(n*n==N)
{ //验证是否为平方数
int temp[10]={0}; //初始化数组为0,表示每个数字出现的次数
for(int i=N;i>0;i/=10)
{
if(temp[i%10]!=0) //表示出现重复的数字
return 1;
else
temp[i%10]++;
}
}
return 0;
}

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
105 500 cnt=6 正确
0 100 cnt=1 正确
500 1000 cnt=2 正确

1.1.4 PTA提交列表及说明

Q1:编译错误
A1:数组用的不熟练,在定义的时候出了些问题
Q2:答案正确
A2:看了下资料

1.2统计各位数字之和是5的数 (20分)

本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于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.2.1数据处理:

数据表达:在int is(int number)函数内,定义了两个整型变量item和sum分别代表输入的数的每一位数字和每一位数字加起来的和。在void count_sum( int a, int b )函数内,定义了三个整型变量i,count,sum分别代表[a,b]之间循环输入的数、满足is函数的数和满足is函数的数的个数。
数据处理:int is(int number)
定义整型变量c,d
定义整数变量sum并赋值为0
while(number!=0)/number是否等于0/
c←number%10
sum←sum+c
number←number/10
end while
if(sum==5) /判断各位数之和是否等于0/
返回值为1
else
返回值为0
end if-else
end
void count_sum( int a, int b )
定义整型变量i为控制循环
定义整型count用于记录满足条件数的个数,sum1为满足条件的每一个数累加的和
for(i=a; i<=b; i++) /在区间a-b中循环寻找各位数字之和是5的数/
if(is(i))
count累加
sum1←sum1+i
end if
end for
输出count = , sum =
end

1.2.2实验代码截图

1.2.3造数据测试

输入数据 输出数据 说明
0 103 count = 6, sum = 165 正确
104 999 104 is counted.count = 15, sum = 3720 题目数据
50 100 count =1, sum = 50 正确

1.2.4 PTA提交列表及说明

说明:Q1:部分正确
A1:sum==5,漏了一个=,找了我半天。

同学的题目代码

(num1)

(num2)

我的题目代码

说明比较不同与相同:
我们三人都运用了数组的知识,然后这俩位同学的思路比较一致
而我的代码却和他们差距还是比较大的,明显我的代码要简便的多,主要是因为条件的
判断方向不同所造成的,然后补充一下temp[i%10]++的意思,表示数组temp中第i%10个元素
在执行完本次处理后自动+1,但是要在本次处理没有完成之前是保持原先的值不变的
例如a[0]++也就是数组中第一个值+1再存放到原位

学习总结

3.1 学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
9.16~9.22 5h 16 刚开始了解如何编程 编译的单词和字母数字都有哪一些作用,编译整个过程又是如何运行的
9.23~10.6 28h 32 学会如何运用markdown语法 为什么会这么难
10.7~10.11 40h 211 学会了编程的数学函数,对PTA也更熟练了 好折磨人
第4周/10月10~17 两天半 183 掌握并学会使用for循环语句 还有多种循环语句不了解,循环结构和分支结构谁先编
10.20-10.26 俩天 192 定义和调用函数,以及如何在一个函数中调用另一函数 生成乘方表跟阶乘表这方面的内容还有很多不懂的,觉得完成作业很费力气
10.27~11.2 两天半 220 如何进行语句的嵌套,对运算符的等级高低有所了解,熟悉多分支结构、字符型数据类型和逻辑运算符 do语句和do-whlie语句搞不清
11.4~11.10 俩天 256 学会switch语句 很多地方不明白,一俩句话讲不清楚
11.11~11.17 俩天 273 学会了while循环,并区别do-while和while 学习新的东西,然后对数组有疑惑
11.18~11.24 俩天 286 学会continue的使用,并且熟练,学数组 对数组还有一点点不懂
11.27~11.29 一天半 311 新学会pow,flag用处 继续学习之前没懂的地方
12.2~12.8 一天半 321 数组可以应用了 进行复习,备考期末

3.2 累积代码行和博客字数

3.3 学习内容总结和感悟

3.3.1 学习内容总结

3.3.2 学习体会

每次都有新的收获,新的体会,C语言的感觉越来越难,同时也越来越棒,做出PTA的成就感无与伦比,敲代码的贼得劲,中间会遇到很多问题,也会很烦恼,
但是正确的办法就是勇敢迎接挑战,,这样才能真正的成长起来!!!

posted @ 2019-12-06 19:30  李文威  阅读(369)  评论(1编辑  收藏  举报