1,变量未定义就使用,中英文符号混用,单词拼写错误,计算公式书写错误,如乘法表达式2x-1, 次方表达式 2^4。
4,多个if条件分支导致可能会出现重复判断。
9,运行超时,未控制好循环变量,如忘记对循环变量进行操作:忘记i++、i--。以及循环次数问题注意,出现很多多一次或少一次的问题。
13,定义数组时,例如int a[n]时n是不确定的例如n是接下来要读取的值,这样是错误的。
\n是在下一行输入输出 \r是擦除本行前面的所有内容,光标回到本行第一字符开始输出。
15,函数缺少函数头,函数头书写错误:如缺少返回值、末尾有多余的分号,函数体中缺少return语句(对于返回值不为void类型的函数,return语句不可缺少)
编译错误
逻辑错误
逻辑错误
函数定义如下:
// 返回类型 函数名 (参数列表)
return_type function_name( parameter list )
{
body of the function // 函数体
}
函数声明如下:
return_type function_name(parameter list);
What about
\((3.14)_{10} = (???.???????)_2\)
通过对大家第六次编程作业的查看情况,做出下面的总结。因为第六次作业只有五道题,而且题目也比较简单,大家的错误出现的比较少,很多都是一些部分错误,就是题目没有考虑完全,遗漏了一种情况,希望大家在之后的编程中要注意细节,考虑完整。下面是具体的题目出现的错误。
pta作业情况
第一次作业 | |
2021213188 | 0 |
2021213223 | 0 |
二 | |
2021213181 | 0 |
2021213182 | 0 |
2021213234 | 0 |
2021213184 | 缺考 |
2021213199 | 缺考 |
三 | |
2021213232 | 0 |
2021213234 | 0 |
2021213178 | 缺考 |
2021213181 | 缺考 |
2021213184 | 缺考 |
2021213199 | 缺考 |
2021213211 | 缺考 |
四 | |
2021213152 | 0 |
2021213172 | 0 |
2021213181 | 0 |
2021213188 | 0 |
2021213204 | 0 |
2021213211 | 0 |
2021213224 | 0 |
2021213149 | 20 |
五 | |
2021213211 | 0 |
2021213152 | 缺考 |
2021213172 | 缺考 |
2021213177 | 缺考 |
2021213178 | 缺考 |
2021213181 | 缺考 |
2021213182 | 缺考 |
2021213184 | 缺考 |
2021213199 | 缺考 |
2021213204 | 缺考 |
2021213234 | 缺考 |
六 | |
2021213231 | 0 |
2021213158 | 0 |
2021213162 | 0 |
2021213164 | 0 |
2021213171 | 0 |
2021213178 | 0 |
2021213204 | 0 |
2021213212 | 0 |
2021213236 | 80 |
2021213151 | 缺考 |
2021213152 | 缺考 |
2021213166 | 缺考 |
2021213168 | 缺考 |
2021213172 | 缺考 |
2021213177 | 缺考 |
2021213181 | 缺考 |
2021213182 | 缺考 |
2021213184 | 缺考 |
2021213199 | 缺考 |
2021213202 | 缺考 |
2021213205 | 缺考 |
2021213206 | 缺考 |
2021213211 | 缺考 |
2021213219 | 缺考 |
2021213224 | 缺考 |
2021213227 | 缺考 |
2021213232 | 缺考 |
2021213234 | 缺考 |
七 | |
2021213158 | 0 |
2021213171 | 0 |
2021213172 | 0 |
2021213180 | 0 |
2021213201 | 0 |
2021213220 | 0 |
2021213223 | 0 |
2021213226 | 0 |
2021213236 | 0 |
2021213149 | 缺考 |
2021213151 | 缺考 |
2021213152 | 缺考 |
2021213162 | 缺考 |
2021213163 | 缺考 |
2021213164 | 缺考 |
2021213166 | 缺考 |
2021213168 | 缺考 |
2021213175 | 缺考 |
2021213177 | 缺考 |
2021213178 | 缺考 |
2021213181 | 缺考 |
2021213182 | 缺考 |
2021213184 | 缺考 |
2021213199 | 缺考 |
2021213202 | 缺考 |
2021213204 | 缺考 |
2021213205 | 缺考 |
2021213206 | 缺考 |
2021213211 | 缺考 |
2021213212 | 缺考 |
2021213219 | 缺考 |
2021213224 | 缺考 |
2021213227 | 缺考 |
2021213230 | 缺考 |
2021213232 | 缺考 |
2021213234 | 缺考 |
2021213231 | 缺考 |
如何写表达式
// 3种逻辑表达式
// && || !
A && B A || B !A
B第二 || A第三 == true B第二 && A第三 == false
B第二 || E第四 == true B第二 && E第四 == false
C第一 || D第二 == true C第一 && D第二 == false
C第五 || D第三 == true C第五 && D第三 == false
E第四 || A第一 == true E第四 && A第一 == false
A第三 E第四 C第五 D第二 B第一
C语言中的一些反智设计
反智,是指与我们日常学到的知识有冲突的处理方式,C语言这样设计的原因是节省代码容量。
i++和++i
-
对于普通的独立语句;i++和++i的效果是一样的,结果也一样
i++; 等效于i = i + 1;
++i;等效于i = i + 1;
int i = 0;
i++;
printf("%d\n", i); // i的值变为原来加1
i = 0;
++i;
printf("%d\n", i); // i的值变为原来加1 -
对于赋值语句,i++先执行赋值操作,然后i的值变为原来的加1,而++i是i的值先变为原来的值加1,然后执行赋值操作
C语言中的一些反智设计
所谓反智,是指与我们日常习得的知识有冲突的处理方式。C语言这么设计根本的理由是节省代码的容量!
- 递增、递减:i++, ++i, i--, --i
- i = i++ + ++i - --i - i--
- 请问 i=?
- 副作用导致算术运算的结合律不成立!
- Evaluation Order
- 加上:i+=e
- 赋值与相等:v=e vs. a==b
- 赋值语句表达式:(v = e)
- ((v = e)==b)是什么意思?
- 逗号表达式:e1, e2;
- 条件表达式:a>b?a:b
- 还有啥?
- ...
如何写出等价的表达式?
TIPS:
- 避免不同类型的表达式嵌套!
- 禁止有副作用的表达式嵌套使用!
DEGUB
CS50IDE平台、VSCode
- 1,利用printf
- 2,利用平台提供的功能
在第五次编程作业中发现同学们最多的错误是输出格式问题,请同学们注意,下面对各个题的情况进行总结。
格式错误
输入格式错误
逻辑错误这个题目有同学直接将输入以字符的格式来进行读入,然后用字符数组存储,然后进行输出操作,使用这种做法的同学希望也思考一下读入一个数字的情况。
编译错误
输出格式错误注意输出格式这个问题
逻辑错误
逻辑错误int越界问题
编译错误
逻辑错误: 内外层循环对同一循环变量进行操作导致循环陷入死循环或答案错误 条件判断语句错写为赋值语句(注意==与=的区别)
编译错误:
段错误
逻辑错误
部分错误
逻辑错误
编译错误
部分错误
答案错误
条件错误
编译错误
编译错误
部分错误
运行超时
练习五的前4个题都涉及的操作是将一个数的数位分离开,这个操作可以通过如下代码来比较简洁的实现。
最后两个题目使用的是枚举算法,也就是枚举每一种可能的情况,对该情况进行判断。
Page 6 of 8