这个作业属于哪个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | C语言I博客作业11 |
我在这个课程的目标是 | 学习C语言程序设计 |
这个作业在哪个具体方面帮助我实现目标 | 掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型 |
参考文献 | 百度查阅 |
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.1.1数据处理
数据表达:定义整形变量n,i,a.双精度浮点型变量m,
数据处理:伪代码
include <stdio.h> //头文件 include <math.h> //头文件 定义整形变量IsTheNumber 将N定义为整形变量 int main() { 定义整形变量n1, n2, i, cnt; 输入"%d %d", &n1, &n2 cnt的初始值为0 for i=n1 to i<=n2 累加i { 如果 ( IsTheNumber(i) ) cnt累加; } 输入cnt end for return 0; } int IsTheNumber (const int N) //函数接口 { 定义整形变量 n,i,a; 定义双精度浮点型变量 m; num[10]初始化为0; 将整形的(N)开方后的值赋给n; 将(N)开方的数赋给m; 将N赋值给a; if(a==m*n) while(a) { for(i=0 to i<=9 累加i) { if(a除以10取余等于i) { num[i]+=1; 如果(num[i]>=2) 返回 1; } end if } end for a等于a除以10; } end if 返回 0; }
1.1.2 实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
144 169 | cnt = 1 | 两个平方数 |
125 275 | cnt = 2 | 两个5的倍数 |
25 49 | cnt = 0 | 两个小于100的可开方数 |
1.1.4 PTA提交列表及说明
1.编译错误:未将for循环中的分号码正确;用到了逗号,导致错误
2.答案正确:将for循环中的逗号改成分号就行了
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 <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