C语言I博客作业11

问题 回答
这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 作业要求
我在这个课程的目标是 完成作业,学会编程
这个作业在那个具体方面帮助我实现目标 在PTA练习中学会运用
参考文献 百度百科

1.PTA实验作业(20分/题)

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
", cnt);

    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

1.1.1数据处理

数据表达:定义了n接受N的平方根乘n的平方根,N是输入的整数,定义一个10位的数组num用了收集n的值;n1,n2为输入的取值范围,i用于控制循环,cnt用于记数
数据处理:

int IsTheNumber ( const int N )
	定义整形变量i循环终止条件,n是N的平方根乘n的平方根
	定义数组num[10]并将数组初始化为0
	n=(int)sqrt(N)*(int)sqrt(N) /*利用函数sqrt()进行判断是否为完全平方数*/
	if(n==N)                /*在完全平方数的基础上进行判断第二步*/
		while(n!=0)     /*检验数字是否相同*/
			for(i=0;i<10;i++)
				if(n%10==i)
					num[i]累加
					if(num[i]==2)   /*判断是否有相同的数字*/
						返回值为1	
					end if
				end if
			end for
			n←n/10
		end whlie
		返回值为0	
	end if
	else 
		返回值为0 结束

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
105 500 cnt = 6 在题中的数据
0 100 cnt = 1 在题中数据的左侧
500 1000 cnt = 2 在题中数据的右侧

1.1.4 PTA提交列表及说明

提交列表说明:
编译错误:开始忘了把数组初始化。
编译错误:中英文符号忘记换了

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<ab≤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.
", a);
    if (is(b)) printf("%d is counted.
", b);
    count_sum(a, b);

    return 0;
}

/* 你的代码将被嵌在这里 */

1.2.1 数据处理

数据表达:定义了整形变量a,b为输入的范围,自定义函数is并定义了整形变量i,sum,其中sum为number的每一位相加的和,i为返回值;
自定义函数count_sum并定义了整形变量count,sum,i,其中count为记录满足要求的个数,sum为每一个满足条件的数的和,i用来控制循环。
数据处理:

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 造测试数据

输入数据 输出数据 说明
104 999 104 is counted.
count = 15, sum = 3720
题中数据
0 103 count = 6, sum = 165 在题中数据的左侧
1000 9999 count = 35, sum = 73885 在题中数据的右侧

1.2.4 PTA提交列表及说明

提交列表说明:
Dvc++上调试编译错误
编译错误:错把number=number/10;打成number=number%10;

2.代码互评(5分)

同学代码截图

自己代码截图

算法大体相同,我的n是两个根号下N相乘,他用m等于根号下n,m乘m来代替我的n,我这样少一个变量。

同学代码截图

自己代码截图


该同学使用了自定义函数来判断素数,而我用的常规方法,在for循环中判断素数
在判断N是否满足条件上,他的判断语句是(b[a[i]]1),而我的判断语句是满足s[i]2,返回1,满足n/=10,返回0。

3.学习总结(15分)

3.1 学习进度条(5分)

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第四周 7 120 学会了基本结构
第五周 8 140 学会了scanf和printf
第六周 10 170 如何用 MinGW-w64 来编译C程序
第七周 17 240 运用if,else语句完成数学问题 不太熟练if-else语句
第八周 20 344 运用for循环语句 对char的用法还不怎么会
第九周 23 350 学习了如何使用自定义函数 自定义函数还不太会
第十周 24 410 熟悉并掌握多分支结构、字符型数据类型和逻辑运算符结构 各个运算符的意思还不太理解
第十一周 22 430 熟悉并掌握分支结构switch语句 对于&&和||的用法不熟练
第十二周 29 410 学会使用while和do-while结构解决问题 嵌套语句用不熟练
第十三周 24 455 嵌套循环 continue语句和break语句 新学的语句用不熟练
第十四周 26 480 了解了数组 数组不熟练

3.2 累积代码行和博客字数(5分)

3.3 学习内容总结和感悟(5分)

3.3.1 学习内容总结

3.3.2 学习体会

作业难度依次再增加,自己的时间也木得安排好。学习了函数的用法,类型,变量的用法及类型,自学能力很重要,身边优秀的同学很多,多向他们学习。

原文地址:https://www.cnblogs.com/bai-zhuo/p/11994641.html