- 如何写条件表达
- Short-circuit evaluation Equivalent Loop Structures Eliminate continue statement Eliminate break statement
- Switch
- 以计算某年某月的天数为例
- 一串连续的 if,和一串连续的 if..else if,的区别?
对同学们提出两个十分必要的建议。一是编写代码时,希望同学们养成良好的代码风格,包括编写代码注释、代码块中的缩进、变量命名最好有意义、空行等来提高代码的可读性。有良好的代码风格,对于代码的调试、编写大型程序都是极其重要的,代码注释可以显著提高改bug和读程序的效率。二是,希望同学们在提交代码时,可以自定义一些测试用例,先在online judge上的测试区先对自己编写的代码进行测试,测试发现程序错误则对程序进行修改,直到测试时能通过自定义的测试用例再进行提交,如下图所示

在oj中不要输出多余的提示语句 如:printf("xxxx"),要按照题目的格式来编写程序,不要有多余的输出。以下这段代码输出了多余的空格,所以oj系统判定为错误。
运行超时:循环结束条件未设置正确,导致死循环。
逻辑错误 [0,n), [1,n]存在n个元素 特别要注意循环的边界,防止多循环一次或少循环一次。
这点很多同学未考虑,所以得80分, 变量未初始化就用于计算
运行超时,未考虑y为0的情况,导致死循环 在编写循环时,要特别注意是否会死循环。
这道题应该用的是while循环,循环条件是读取得数不为0,用设置一个大的数来进行for循环虽然最后系统在判断时可能因为你设置得数比较大能过,但这种做法还是不可取,对每一个读进来的数应该是先判断是不是0再进行操作,而不是先操作再判断是不是0。
在判断一个价格的区间时,不能只判断一边的大于等于情况,还要判断另一边的小于
在判断一行的价格之后对下一行价格重新计算总和时忘记对这个价格归零
这道题的逻辑其实是两个for循环结构,要注意两个for循环的缩进,两个循环不能使用同一个计数的int型;此外的错误点就是保证对所有的价格区间都能判断到,不遗漏
在书写代码中,不要使用break、continue、switch、goto
老师想问您一下第六题可以直接使用while((ch=getchar())!='\n')来开启循环么,
还是要用
scanf("%c",&ch)
ch=getchar()
while(ch!='\n')
第一种情况只给了80分
#include<stdio.h>
int main(void)
{
int t=0;
int a=0;
int b=1;
int n=0;
int f=0;
int g;
scanf("%d",&t);
for(a=1;a<=t;a++)
{
g=0;
scanf("%d",&n);
for(b=1;b<=n;b++)
{
scanf("%d",&f);
g+=f;
}
if(g>=100&&g<200)
{
printf("%d\n",g-30);
}
else if("g>=200&&g<300")
{
printf("%d\n",g-70);
}
else if("g>=300&&g<400")
{
printf("%d\n",g-110);
}
else if("g>=400")
{
printf("%d\n",g-160);
}
else
printf("error");
}
return 0;
}
老师好:
请问能讲解一下题集3第三问的题意吗?我分别用递归和循环写了代码,结果都不能拿满分,不知道问题在哪里。
更正:经过尝试,题目要求的是A1 + A2 + A3... + An
通过第二次编程作业的结果进行一个总结,包括出现的一些同学们经常犯的错误。
首先是同学们一些经常犯的错误:
①逻辑错误:应该使用 if , else if的分支结构,连续使用if(注意分支结构和连续使用多个if的区别),连续使用多个if if
②&&错用为&,||错用为|,==错用为=,中英文错用。
③运行时错误,输入格式与变量类型不符合。
④编译错误,
⑤段错误,输入语句中缺少取地址符号&。
⑥此外相比于上一次的作业,这次作业中英文分号括号出现的错误很少,大部分的错误还是在if语句上,要搞懂if语句的逻辑,if和else if是一个分支的结构,举例说明,如果是if,else if,else这三个结构,那么最终只会执行一个的结果,而如果是if,if,else,前两个的if可能最后都会执行。
⑦在写if语句的时候,要注意缩进,保持代码的美观和直观,一眼就可以看到每个条件语句的分支。
最后以下一些具体的题目出现较多的错误:
判断浮点数是否为0不能使用==0来判断。
应该使用 if , else if的分支结构,因为运费只需付一次,连续使用if if (注意分支结构和连续使用多个if的区别),连续使用多个if if 20 <= e < 30 编译器只会判断 20 <= e 不会对后面进行判断,存在逻辑错误。
在这次作业中,发现的问题大都是使用c语言的语法错误。下面对于这次编程作业中出现的问题做个总结。
出现的问题主要有:
1. 编译错误,表现形式为:在c语言中变量未定义就使用、英文分号和英文括号错用成中文、单词拼写错误,出现的词有float、#include等。
scanf、printf函数调用错误,scanf调用时,需要有取地址符&,例如:int a; scanf("%d", &a),这里的&不可缺少。printf要输出的字符串必须用双引号括起来。缺少分号,分号是c语言中一条语句的结束符,不可缺少。
2. 格式错误,输出格式要与题目要求的不一致,如:缺少空格、输入输出中缺少逗号、不该有引号的地方使用了引号。导致格式错误的一个原因:很多同学把要求输出的一句话分开两句话输出结果导致少了空格。
3. 段错误,输出char类型变量要使用%c占位符,%s为字符串的占位符。
4. 计算错误,对要计算的公式书写错误。
在此次作业中,很多同学在未改正程序存在的问题的情况下,多次对一个题目进行提交。同学们应该学会查看编译器输出的错误信息,对此进行分析,并进行修改后,确认无语法错误后进行提交。可以在本地编译器中尝试运行自己编写的程序,并进行测试和修改无误后再进行网络上的提交。
查看错误技巧举例:下面这段代码存在问题,通过查看编译器报错信息,可知return 0后面的分号存在问题,仔细查看可以看出该分号为中文分号。
在这次作业中,第一题主要出现的问题是格式错误,如:main()函数的使用错误,main()函数有返回值,所以是int main(),而不是void main()。
第二题中出现的问题主要是输出格式问题,输出与题目要求不一致, 空格换行与要求不一致,输出占位符不正确和段错误。
第三题中出现的问题:格式错误,不该输出回车(\n)的时候输出回车,变量定义为double型写成float型。
第四题中题目要求使用double类型,很多同学使用float类型,请同学们注意审题。
第五题中,存在的问题为scanf输入,scanf输入时要按照括号里格式的原样输入,就是有逗号的时候输入时也要有逗号,没有的时候则不需要。
希望同学认真分析代码出错的原因,如果有同学对于自己的代码问题有不清楚的地方,欢迎在网站上发帖讨论。希望同学们在做题时,遇到问题可以积极发帖,我们看到后会尽快回复。
What's STEM and what's difference among S, T, E, and M?
Science
- Science (from Latinscientia, meaning "knowledge") is a systematic enterprise that builds and organizes knowledge in the form of testable explanations and predictions about the universe.
Technology
Page 8 of 8