C语言I作业11

这个作业属于那个课程 C语言程序设计I
这个作业要求在哪里 C语言I作业11
我在这个课程的目标是 学会编写小程序
这个作业在那个具体方面帮助我实现目标 掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型
参考文献 C语言程序设计、百度百科

1.PTA实验作业

img

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

    return 0;
}

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

输入样例:

105 500 

输出样例:

cnt = 6
1.1.1数据处理

数据表达:题目变量为n,b,m,题目运用了if条件语句,while循环语句,for循环语句,运用数组对函数进行简便的编写

数据处理:

 
	定义 n=N;
	定义 b;
	定义 p[10]={0};
	定义 m=sqrt(n);
	if(m*m==n)//判断条件完全平方数
	{
		while(n)
		{
			b=n%10;
			p[b]++;//判断是否是三位数
			n/=10;
		}
		for(定义 i=0;i<=9;i++)//进入for循环
		{
			if(p[i]>1)
			return 1;
		}
	}
	return 0;
}
1.1.2实验代码截图

img

1.1.3 造测试数据
输入数据 输出数据
105 500 img
120 300 img
220 700 img
1.1.4 PTA提交列表及说明

img

编译错误:在输入嵌入代码时,将函数接口定义全部复制进去了如int IsTheNumber ( const int N );,结果运行时因为多了一个分号导致编译错误。

部分正确:输出时判断条件与题目不相符,导致输出结果错误,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同。

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  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 数据处理

数据表达:变量为t,s,number,count,sum题目运用了while循环结构,if条件语句,for循环结构

数据处理:

 定义 t, s = 0;
    while (number != 0)//当number不等于0时进入循环
    {
        t = number % 10;//取余数
        number = number / 10;取商
        s = s + t;
    }
    if (s == 5)//判断给定正整数的各位数字之和是否等于5
    {
        return 1;
    }
    return 0;
}
void count_sum(int a, int b)
{
    int n,count = 0, sum = 0;
    //scanf("%d%d", &a, &b);
    for (n = a; n <= b; n++)
    {        
        if (is(n))//满足上述要求的整数
        {
            count++;//计算这些整数的和
            sum = sum + n;
            
            //return 1;
        }        
    }
    printf("count = %d, sum = %d\n", count, sum);
}
1.2.2 实验代码截图

img

img

1.2.3 造测试数据
输入数据 输出数据
104 999 img
120 657 img
250 520 img
1.2.4 PTA提交列表及说明

img

编译错误:返回值错误,与题目不符合,本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和。这个要求没有完全符合这个题目要求,接口函数定义两个都写了上去。

2.代码互评

同学的代码:

img

img

我的代码:

img

img

1.同学的代码比我的要清楚,相对容易理解,我的代码是通过上百度查找过来的,但还是没有完全理解。同学的代码就很好理解。

2.通过上网查找了解了数组的用法,定义和实例讲解,提前预习了新的知识,但是具体怎么用数组来解决问题还是不清楚,还要继续学习。

3.学习总结

3.1 学习进度条

时间 所花时间 代码行 学到的知识点简介 目前感到迷惑的地方
第一次 9h 55 打出Hellow World 输出比较困难
第二次 12h 120 学习提问的智慧 安装编译软件
第三次 两天半 190 关系运算、if-else语句、格式化输入语句scanf(),以及常用的数学库函数 scanf函数不知道怎么用
第四次 18h 220 使用for循环语句实现指定次数的循环程序设计 整型函数还不是很清楚
第五次 8h 350 生成乘方表与阶乘表 读代码还不清楚
第六次 7h 195 熟悉多分支结构、字符型数据类型和逻辑运算符。 数据类型不是很清楚
第七次 33h 240 熟悉多分支结构switch语句的使用 switch多分支结构的条件怎么写
第八次 10h 260 使用while和do-while结构解决问题 做PTA时不知道从什么地方下手
第九次 13h 275 break、continue的使用、熟悉使用循环的嵌套解决问题 怎么运用循环嵌套
第十次 15h 320 能够根据实际情况,选择合适的算法、合理的循环结构,熟练的编写程序 选择算法
第十一次 20h 410 掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型 函数的调用、函数变量的运算

3.2 累积代码行和博客字数

img

3.3 学习内容总结和感悟

3.3.1 学习内容总结

img

3.3.2 学习体会

1.这次作业难度大,选择题还好,函数题和编程题目比较难,虽然是数学学过的知识,但是用代码来解决问题就比较难了,不知道怎么编写代码。

2.临近期末,但还是感觉这个学期学的东西还没有完全消化,还有很多知识点还是不清楚,比如做PTA,有时根本不知道写。

3.还是要继续努力,把基础打扎实。

posted @ 2019-12-06 20:02  槑呆  阅读(315)  评论(7)    收藏  举报