C语言I博客作业02

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/CST2020-1/
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2020-1/homework/11452
这个作业的目标 熟悉for循环,并了解for循环的简单应用
学号 20208942

1.PTA实验作业(15分/题)

1.1 求简单交错序列前N项和 (15分)

本题要求编写程序,计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和。

1.1.1实验代码截图

1.1.2数据处理

数据表达:使用了整数型变量N,i,N是多少项需要输入,i是为了循环引入的变量;浮点型变量sum,sum求和。
数据处理:sum = sum + pow((-1),i+1)(1.0/(3i-2));for循环结构。

1.1.3 PTA提交列表及说明



Q1&Q2:为什么sum = sum + pow(-1,i+1)(1.0/(3i-2))错误?
A:pow()中底数为负数时要加括号;3i应该改成3
i,在编程中所有运算符号都不能省。

1.2 求分数序列前N项和 (15分)

本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。

1.2.1实验代码截图

1.2.2数据处理

数据表达:整数型变量N,i,N是多少项需要输入,i是为了循环引入的变量。浮点型变量sum,a,b,c,sum是求和,a是新分子,b是分母,c是前一项分子。
数据处理:sum=sum+a/b;for循环结构。

1.2.3 PTA提交列表及说明


Q1:当分子变成了新的分子即新分子a=a+b(定义了a=2,b=1),而分子b=a后,下一个的分子就表达不出了。
A1:引入一个新的变量c作为以前的分子即可。

1.3求平方根序列前N项和 (15分)

本题要求编写程序,计算平方根序列√1+√2+√3+⋯的前N项之和。可包含头文件math.h,并调用sqrt函数求平方根。

1.3.1实验代码截图

1.3.2数据处理

数据表达:用了整数型变量N,i,N是多少项需要输入,i是为了循环引入的变量;浮点型变量sum,sum求和。
数据处理:sum=sum+sqrt(i);for循环结构。

1.3.3 PTA提交列表及说明


Q1:sqrt函数是什么?
A1:sqrt函数是表达一个非负实数的平方根,如:sqrt(4)=2。

2.阅读代码

#include<stdio.h>

int main()
{
    int r, c;
    char a[20][20];
    while (scanf("%d %d", &r, &c), r && c)
    {
        getchar();
        int i, j, index = 0;
        for (i = 0; i < r; i++)
            for (j = 0; j < c; j++)
                a[i][j] = getchar();
        getchar();

        int isRow = 1, isOrder = 1, rb = 0, re = c - 1, cb = 0, ce = r - 1;
        while (1)
        {
            if (isRow)
            {
                if (rb > re)
                    break;

                if (isOrder)
                {
                    for (i = rb; i <= re; i++)
                        putchar(a[index][i] - 7);
                    index = re;
                    cb++;
                }
                else
                {
                    for (i = re; i >= rb; i--)
                        putchar(a[index][i] - 7);
                    index = rb;
                    ce--;
                }
                isRow = !isRow;
            }
            else
            {
                if (cb > ce)
                    break;

                if (isOrder)
                {
                    for (i = cb; i <= ce; i++)
                        putchar(a[i][index] - 7);
                    index = ce;
                    re--;
                }
                else
                {
                    for (i = ce; i >= cb; i--)
                        putchar(a[i][index] - 7);
                    index = cb;
                    rb++;
                }
                isOrder = !isOrder;
                isRow = !isRow;
            }
        }
        putchar('\n');
    }
    return 0;
}

首先这一份代码的第一个优点就是清晰易懂,尽管我还是看的不是很懂但在一海的天书里这是让我看的稍微亲切一点的;
其次这份代码让我看到了不仅有for套for的形式,还有if套if的,开阔了我的知识面;
同时还了解到了字符型定义char,以及向终端输出一个字符的putchar函数。

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
8/19-8/25 10 180 C语言的发展史及特点,简单编程
9/26-9/1 12 300 用程序语言解决一些简单的数学运算 scanf作为输入函数为什么要地址符,而printf函数不要
10/2-10/8 13 400 了解简单的循环结构 沙漏里的循环套循环怎么弄

3.3 学习感悟(5分)

这样一周对C语言有了一个大概的框架,但仍有很多细节的东西需要一点一点的去补充,每次写作业都有一种学的还不够多,不够好的感觉,但拿起书时又不知道该看哪里,所以我希望自已在对这门学科有了一个大概的框架后,能合理的安排时间和内容来把这个框架填充完整,同时做好记录。

原文地址:https://www.cnblogs.com/qgbw/p/13941643.html