C语言I博客作业11

这个作业属于哪个课程 C语言程序设计II
这个作业要求在哪里 C语言I作业11
我在这个课程的目标是 学会编程,运用编程制作有趣的东西
这个作业在那个具体方面帮助我实现目标 在函数方面得到扩展与联系
参考文献 C语言程序设计I,百度

1.PTA作业

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

**数据表达:定义整形变量i,k,x,temp数组a,数组b,i为循环终止条件**
**数据处理:伪代码**
定义整型变量 N 
定义i,k<-1,x<-1,temp,a[100], b[10]
   temp<-N;
 while temp/10>0
      k累加
      temp<-temp/10
if 它是完全平方数
    for 循环
     a[i]<-N/x%10
     x*=10
     if b[a[i]]=1  
     返回值为1
      else         
     b[a[i]]=1
        返回值为 0
      else 
       返回值为 0

1.1.2实验代码截图

1.1.3造测试数据

输入数据 输出数据 说明
110 414 cnt = 4 随机数据
113 552 cnt = 6 随机数据
211 556 cnt = 4 随机数据
886 556 cnt = 0 随机数据

1.1.4PTA提交列表及说明

###提交列表说明:
1.把“;”给漏掉了。
2.在做的过程中出现了很多次答案错误,经过在网上找到方法,最终改正确了。

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

**数据表达:定义整形变量x,y,number ,i,sum,number为N,i为循环条件**
**数据处理:伪代码**
定义 x,y=0;
    do
       x<-number%10
       number<-number/10;
       y<-x+y
    while number不等于0
    if y=5
    返回值 1
    else
    返回值0
定义变量 
 for a<-a,i<=b,i累加
       i is(i)
           count累加
           sum<-sum+i
 输出count,sum

1.2.2实验代码截图

1.2.3造测试数据

输入数据 输出数据 说明
4 5 5 is counted.count = 1, sum = 5 a,b相差较小
10 100 count = 5, sum = 160 随机数据
10 999 count = 20, sum = 3880 随机数据
100 200 count = 5, sum = 610 随机数据

1.2.4PTA提交列表及说明


提交列表说明:
1.编译错误:将printf的‘f’漏掉了。
2.格式错误:第1行int前面没有输入空格。
3.格式错误:第16行第一个intint前面没有输入空格。
4.格式错误:第16行第二个intint前面没有输入空格。
5.格式错误:第28行中count和sum后面没有输入空格。
6.格式错误:第28行sum前面的没有输入空格。
7.部分正确:因为看的比较粗略,就凭自己印象写了代码,没有else return 0这种情况。
8.部分正确:我在count-sum自定义函数改了,结果错误。
9.部分正确:因为自己添加了一些东西,部分错误,后来还是改为网上的形式了。

2.代码互评

同学的代码

同学的代码

自己的代码

1.1.第一个同学定义x,m,x是对N开平方后的数,m是x的平方,如果N=m就又定义num数组,i用于循环条件,用while语句当m>0时,做9次循环,用两个if语句判断是否有 两个数字相同。
1.2.第二个同学定义n=N,a,数组b,m等于n的平方根,如果m的平方等于n,做while循环a等于n除以10取余,b等于数组
 累加,n除以10,进入for循环,i<=9,当b数组>1 输出return 1。
1.3.我的是定义i,k,x,temp,a,b两个数组,令N=temp,while语句进行循环temp除以10大于0时进行循环,如果N有平方根,进入for循环语句,a=N除以x除以10取余x累乘10,if语句两个数一样输出1否则输出0.
1.4.就这样看来,我的代码比他们的都要复杂,他们的更加简洁;都用了数组;第二份最简洁,值得学习。

3.学习总结

3.1学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第四周 8h 20 简单输出
第五周 10h 40 学习输入
第六周 20h 60 用WinGW-w64来编译C程序 文档真的打不开,可能是电脑原因
第七周 10h 90 关系运算,if-else语句,格式化输入语句scanf() 有的数学逻辑问题不太懂
第八周 8.5h 80 for的循环语句,指定次数的循环程序设计 不太会文字与数学的转换
第九周 8h 100 函数的调用和定义的初步认识 自定义函数不熟悉
第十周 10h 170 多分支结构、字符型数据类型和逻辑运算符 多个数据输出不熟练
第十一周 11h 110 熟悉多分支结构switch语句的使用 逻辑思维能力差
第十二周 9h 200 熟悉whlie和do-whlie结构 字符那方面不熟
第十三周 8h 180 熟悉嵌套循环,break和continue的用法 当运用到真题方面还是会不太会
第十四周 8h 110 选择合适的算法、合理的循环结构,熟练的编写程序 最大的问题是不懂题意
第十五周 10h 300 函数的定义,声明,调用,全局变量局部变量 感觉好难,不怎么理解

3.2累积代码行和博客字数

时间 博客字数 代码行数
第四周 441 20
第五周 441 20
第六周 1112 150
第七周 1800 190
第八周 2300 220
第九周 3100 220
第十周 4000 400
第十二周 4900 620
第十三周 6700 910
第十四周 7600 1020
第十五周 8600 1420

3.3学习内容总结和感悟

3.3.1学习内容总结


3.3.2学习体会

1.C语言果然特别强大,越学越难,掉发越来越严重,虽然老师说过不要熬夜,但是是真的没有时间,才去熬夜的。
2.我觉得我的理解能力太弱了,在学习这方面,接受能力太差了。
3.感觉需要用比别人多好多的时间去做。
4.另一方面,感觉别人太优秀,自己赶不上,特别无奈。
5.熬夜改博客园的下场———感冒了

ps:  字符数组  
1、定义:char a[10];字符数组a长度为10。每个元素只能存放一个字符。例如: a[0]='h';a[1]='a';a[2]='p';„„   
2、初始化:char a[]={'h','a','p','p','y'};char a[]="happy";char a[]={"happy"}; 注意,因为字符串结尾自动加'\0',所以char a[]="happy";长度为
   6,不是5。3、C语言中没有字符串变量,字符串的输入、存储、处理和输出等必须通过字符数组实现。     
4、字符串的输入。scanf();可以用%C逐个字符输入比如char a[6];for(i=0;i<6;i++) scanf("%c",&a[i]);可以用%S以字符串的形式输入,比如char 
   a[6];scanf("%s",a);注意,a前不用加&,因为a是数组名, 已经代表了数组首地址。注意:以%S输入时,以第一个非空白字符开始,终止于第一个空白字符。比如:
   输入How are you 时。只输出How.gets();作用为输入一个字符串。与scanf();功能一致,但空格和回车都存放在数组中,最后自动加入‘\0’. 不会出现上面输出不
   全的情况。调用方式为:gets(数组名);需要包含头文件“stdio.h”.  
5、字符串的输出。printf();可以使用%C逐个字符输出,比如:char a[6];for(i=0;i<6;i++) printf("%c",a[i]);可以用%S以字符串的形式输出,比如char 
   a[6];printf("%s",a);puts();输出一个字符串,结尾自动换行。
   调用形式:puts(字符数组名或字符串常量);需包含头文件“stdio.h”常用字符串处理函数(以下函数需要头文件“string.h”)    
1、strlen()作用是测试字符串长度。这里不包括‘\0’.使用形式strlen(数组名或字符串常量)  
2、strcat()作用是连接两个字符串。调用方式strcat(字符数组1名,字符数组2名);合并后的字符串存放在字符数组1中。  
3、strcmp()比较两个字符串是否相等。调用方式strcmp(字符串1,字符串2);相等时值为0。1>2时为正数。1<2时为负数。 
4、strcpy()复制字符串。调用方式strcpy(字符数组1,字符串2);2的内容复制到1中。1只能是字符数组名
posted @ 2019-12-05 21:51  zzzjjj。。  阅读(487)  评论(15编辑  收藏  举报