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!!!

posted @ 2019-12-06 17:24  那就这样吧开心就好  阅读(258)  评论(12编辑  收藏  举报