C语言1博客作业11
问题 | 答案 |
---|---|
这个作业属于在哪个课程 | C语言程序设计II |
这个作业要求在哪里 | <a href="http://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/10132" |
target="_blank">C语言I作业11 | |
我在这个课程目标是 | 学好C语言,为后面学习打好基础 |
这个作业具体在哪里方面帮助我 | 掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型 |
参考文献 | <a href="https://baidu.com"target="_blank">百度 , <a href="https://www.cnblogs.com/pengchen511/p/10564067.html"target="_blank">C语言作业评价标准 |
一:PTA实验作业
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数据处理
1.数据处理:用了整形变量n,i,a;双精量变量m;n,m是题目要求两位相同数,i是循环变量,a是完全平方数
2.数据表达:
定义整形变量n,i,a;双精量变量m
int num[10]={0};
n=(int) sqrt(N);
m=sqrt(N);
a=N; //判断完全平方数
if(a=m*n) then
while(a)
do
for(i=0;i<=9;i++) // 这里的for循环起到了一个类似于计数器的作用,t依托数组通过数组从0-9的下标对应与输入数N的个十百位.在用下标对应的数计数中出现w数字的次数
end
if(a%10==i)
then
num[i]+=1;
if (num[i]>=2)
return 1//满足返回1
}
}
a=a/10//用a代替M是因为const是一个C语言的关键字,它限定一个变量不允许被改变;用一个a代替来解决这个问题
}
return 0//不是返回0
1.1.2PTA实验贴图
1.1.3造数据测试
输入数据 | 输出数据 | 说明 |
---|---|---|
144 676 | cnt=6 | 随机 |
220 990 | cnt=6 | 随机 |
400 800 | cnt=4 | 随机 |
1.1.4PTA提交列表说明
1.答案正确:这题写了蛮久,放在Dev上运行了
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
1.2.1数据处理:
1.数据处理:这题是要写两个函数,一个判断各位数字之和是否等于5,一个利用函数is统计给定区间[a, b]内有多少个满足上述要求(即令is返回1)的整数,并计算这些整数的和。第一个函数用了整形变量s,t;s是求各位数字之和,t是各位数字商,第二个函数用了整形变量sum,count,i;sum用来统计满足数字之和,count是统计给定区间[a, b]内有多少个,i是循环变量
2.数据表达:
定义变量s,t
while(n!=0)
do
t=n%10//求余
n=n/10
s=s+t//求和
if(s==5)//判断各位数字之和是否等于5
return 1;
else
return 0;
}
void count_sum( int a, int b )
{
int sum=0,count=0,i;
for(i=a;i<=b;i++)//循环
do
if(is(i)){
then
count=count+1//统计给定区间[a, b]内有多少个数
sum=sum+i//统计满足数字之和
1.2.2PTA实验贴图
1.2.3造数据测试
输入数据 | 输出数据 | 说明 |
---|---|---|
104 999 | 随机 | |
203 666 | 随机 | |
253 777 | 随机 |
1.2.4PTA提交列表说明
1.编译错误:双引号打错
2.多种错误:表达式写错了,循环语句错误
3.编译错误:没有空格
二:代码互评
同学代码1
同学代码2
自己代码
相互对比
1.第一个同学用的数组方法来写这题,中间还来了for语句,表达式较多
2.第二个同学用的是do-while循环语句来写这题
3.我的方法和第二位差不多,但我用的是while循环语句
4.感觉第一种方法复杂一点,但是学习了新的知识点,是很有帮助的
三:学习体会
3.1学习进度条
周 | 这周花的时间 | 代码行 | 学到的知识简介 | 目前比较疑惑的问题 |
---|---|---|---|---|
第一周 | 3天 | 47 | 简单的编程 | 无 |
第二周 | 4天 | 55 | 常量,变量,数据类型和一些运算符以及赋值运算 | 无 |
第三周 | 4天 | 95 | 关系运算、if-else语句、格式化输入语句scanf(),以及常用的数学库函数 | 格式控制 |
第四周 | 4天 | 92 | 使用for循环语句实现指定次数的循环程序设计 | 循环的顺序 |
第五周 | 4天 | 85 | 对函数的定义和调用有初步的认识,能模仿编程 | 对函数题还不熟练 |
第六周 | 4天 | 152 | 学会多分支结构、字符型数据类型和逻辑运算符 | 字符型函数不太了解 |
第七周 | 4天 | 182 | 熟悉多分支结构switch语句的使用 | 怎么用switch语句简单些 |
第八周 | 3天 | 118 | 熟悉使用while和do-while结构解决问题 | 字符型再加上while语句不太会用 |
第九周 | 4天 | 196 | 熟悉break、continue的使用 ;熟悉使用循环的嵌套解决问题 | 嵌套问题还不是很会 |
第十周 | 5天 | 200 | 综合运用循环结构的程序设计 | 较复杂的代码不太会用循环结构 |
第十一周 | 5天 | 200 | 学习各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型 | 函数题不是很会 |
3.2累积代码行和博客字数
3.3学习内容总结和感悟
3.3.1学习总结
3.3.2学习体会
1.本周学习有点困难,学习各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型。上课的时侯真的很多概念,感觉很懵
2.这周真的很忙,时间很紧,就这样慢慢一点一点学,学会了一点,还不是很会,还需要花很多时间
3.感觉后面的学习越来越难,真的需要很努力了,加油,fighting!!!