C语言I博客作业11

问题 答案
这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-4/homework/10129
我在这个课程的目标是 精通c语言,深入了解C语言的编程,学会自己编写程序
这个作业在那个具体方面帮助我实现目标 进一步的的认识函数,学习函数的定义、调用和申明,并学习变量的作用域、生存周期和存储类型
参考文献 C语言程序设计Ⅰ

1.PTA实验作业

1.1 统计各位数字之和是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;
}
/* 你的代码将被嵌在这里 */

1.1.1数据处理

数据表达:定义了整形变量sum,n;并把sum初始化为0;

数据处理:
is()函数:
int sum=0,n;//定义变量
while number!=0 
do n←number%10;
sum←sum+n;
number←number/10;
if(sum==5)then[返回1]
else 返回0           
end

count_sum()函数:
int i,count=0,sum=0;//定义变量
for i ←a to b;
do if(is(i))
then[count++;sum←sum+i;] 
end

1.1.2实验代码截图


1.1.3造测试数据

输入数据 输出数据 说明
104 999 从104到999之间各位数字之和是5的数的个数有15个
1 999 从1到999之间各位数字之和是5的数的个数有21个

1.1.4PTA提交列表及说明

提交列表说明
* 1.运行超时:做题目是把number=number/10写成了n=number/10.
* 2.编译错误:这个是很低级的错误,我把number写成了numble。

1.2统计某类完全平方数

本题要求实现一个函数,判断任一给定整数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;
}
/* 你的代码将被嵌在这里 */

1.2.1数据处理

数据表达:定义了整形变量d,n,x,j,a[10]={0}
数据处理:

int d,n,x,j,a[10]={0};//定义变量
d←N;
n←sqrt(d);
if(n*n==d)
then[while(d!=0) x←d%10;a[x]++;d←d/10;do]
for j 1 to n;
flag←1;
sum←pow(2,i)-1;
for j 0 to 9;
if(a[j]>1)
then[返回1]
end
if(flag==1)
then[输出sum;count++;]
end

1.2.2实验代码截图

1.2.3造测试数据

输入数据 输出数据 说明
105 500 cnt = 6 有6个完全平方数
55 100 cnt = 1 有1个完全平方数
25 600 cnt = 7 有7个完全平方数

1.2.4PTA提交列表及说明

提交列表说明

1.编译错误:我直接用了变量N,错误提示是我没有定义这个变量。

2代码互评

同学代码截图


自己代码截图


我和同学1的代码就是在判断是否至少有两位数字相同这里不同,同学的代码在这里是直接当a[d]等于2的时候判断是,而我的是当a[j]>1的时候判断是,我觉得把a[d]等于2改成a[d]>=2可能会更好。但是同学2的代码对于我们现在没有学数组来说可能更好,想法很好,用了我们学习的循环的嵌套。

3.学习总结

3.1学习进度条

周/日期 这周所花时间 代码行 学到的知识点简介 此前比较迷茫的问题
第一周 1天 24行 学会了一点printf()语句,知道主函数 \n的用法
第二周 4天 23行 学会计算摄氏温度与华氏温度的转化 =两边打空格
第三周 2天 62行 学会一点scanf()语句,定义变量,if-else结构 很多地方不知道为什么要打空格
第四周 1天 145行 学会了for()语句 目前没有
第五周 1天 142行 对函数的定义和调用有初步的认识 在函数的定义中是否可以输入形参的值
第六周 2天 132行 加深对if-else分支结构的认识,字符型变量和常量的定义以及字符型输入输出函数 字符型数据的输出和输入不懂
第七周 1天 206行 学会switch语句,用switch语句处理多分支选择问题 在编译器上打代码时,编译器没有提示错误,但是答案错了。后来才知道case后面要打空格再打常数表达式
第八周 1天 125行 学习了while( )循环语句和do{ }while( )循环结构 相对于for()循环和while( )循环,do{ }while()还是运用的不太熟练
第九周 1天 198行 学习了for( )语句的嵌套以及break语句和continue语句 运用不是很熟练,还需要多练
第十周 1天 208行 复习了字符常数的定义,字符型函数的输出和输入以及循环结构 对于字符的输出和输入有待提高
第十一周 1天 226行 学习了变量的作用域、生存周期和存储类型并进一步的的认识函数,学习函数的定义、调用和申明。 对于变量的作用域、生存周期和存储类型还不太理解,做选择题还是比较费力

3.2累积代码行和博客字数

3.3学习内容总结和感悟

3.3.1学习内容总结

3.3.2学习体会

* 1.这周学习了各种类型函数的定义、调用和申明,以及变量的作用域、生存周期和存储类型。但是对于动态储存和静态储存还是不太了解。就像这次的选择题做起来还是比较费力。还是要多去看相关的资料。
* 2.这周的作业还是比较让人奔溃的,相对于上几次,感觉这次作业的难度提高了不少。
* 3.要多复习,不要让我们以前知道的知识忘记,不让以前就白费力了。

posted on 2019-12-06 17:58  ,,邓  阅读(228)  评论(6编辑  收藏  举报

导航