| 这个作业属于哪个课程 | 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