当前位置:首页 » 编程语言 » c语言考试有bug吗
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言考试有bug吗

发布时间: 2022-12-19 12:07:15

1. 计算机二级c语言最后一道编程题漏洞技巧有哪些

网上碰到有二级c的作弊方法,提到了通过更改out.dat文件的内容,达到作弊的目的,自己也在二级c语言的模拟考试环境下测试过,可用,满分,24分就来了,至于真正的二级c考试,有人说能用,也有人说,不能用,只有试试就知道了,第一次考二级,也没试过,所以不知道是不是能用。

具体如下:

电脑常见问题解决

1、无法自动识别硬盘控制器

使用非正版的个别操作系统光盘,在安装系统时,容易出现此错误。原因是非正版光盘自动加载的硬盘控制器驱动不符合电脑自身需要的驱动。这种情况就建议换正版光盘安装操作系统。

2、手动更新错误的驱动程序

windows操作系统正常使用,但手动更新驱动程序把硬盘控制器的驱动程序更新错误,导致此故障。解决方法是进入windows系统高级菜单,选择最后一次的正常配置,即可正常进入系统。

3、bios设置变化后所导致

windows操作系统正常,但是由于某些原因,用户修改了bios设置,导致0x0000007b故障。

2. C语言编程题找不到BUG

循环一次里面,sum计算了两次,分母变成133557……与公式不一致,eps表示精度是一个浮点数,不能直接使用<>=来判断大小。

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。

(2)c语言考试有bug吗扩展阅读:

C语言包含的各种控制语句仅有9种,关键字也只有32 个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。

实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。

C语言是一种结构化的语言,提供的控制语句具有结构化特征,如for语句、if⋯else语句和switch语句等。可以用于实现函数的逻辑控制,方便面向过程的程序设计。

3. 计算机二级c语言上机三道题都编译运行出结果,而且结果都正确了为什么还没过

全国计算机等级考试二级c的程序题共有三道,分别是填空、改错、编程,分值方面填空占18分,改错18分,编程24分,总分60分。而卷面总分(选择+程序)60分以上,才会判定成绩就合格,才能够领到证书。

各题详细答题方式和评分准则如下:

1、填空题:
答题方式:
在指定位置,也就是标记有类似
/********************found*************************/
for(i=0; ____1____ ; i++)
这种位置作答。
答题时,将“____1____”双引号内的部分完全删除,然后把作答的答案填补进去,也就是“将类似__1__这种位置标记替换为作答的答案”。

题面会给出“例如输入***数据,得到***数据”的注解,可以借此编译运行程序,通过输入和输出的结果来判定程序是否正确。

评分准则:
填空题的评分准则并非以程序本身“能否正确运行”为准则,而是通过类似”对比答题的程序文本与命题组答案,逐行按比例给分“的方式来评分,也就是很多人所谓的“逐项(或逐个答题位置给分)“。

上述描述信息量过大,下面举例说明:
①题面有明文要求,只允许在指定位置作答,不许添加或删除空格、回车之类的字符,不许增减程序代码行数,更不许改动题面的程序原始代码。

例如:
题面如下:
int i,j,sum=0;
/**************found********************/
for(i=0; __1__ ;i++) //假设答案应为i<10或其他等价写法
sum+=i;

答题后排版如下:
int i,j,sum=0;
/**************found********************/
for(i=0; i<10 ;i++) sum+=i; //注意这里删除了一个回车符

卷面要求对应行数(第3行)应为
for(i=0; i<10 ;i++)
评分时判定该行内容为
for(i=0; i<10 ;i++) sum+=i;
文本与命题组答案不符,故该处答案不予给分。
同时,由于更改了行数,后续程序文本均会受影响,从而影响正常得分。

②关于上文中所谓的“命题组答案”
仍以
int i,j,sum=0;
/**************found********************/
for(i=0; __1__ ;i++) //假设答案应为i<10或其他等价写法
sum+=i;
为例。

正确答案应该是i<10或其他等价写法,那么命题组会将各种“正常的”写法作为命题组答案编撰以供评分。依旧举例说明,等价写法包括:
i<=9
i<9+1
i<=10-1
后续有无数种写法就不一一例举了
明显只有i<10和<=9是正常写法,后续写法都过于奇葩,故此处在考试时只有写入i<10或<=9才会得到正常的分数,其他写法均不给分。

另外,这里无需担心,命题组很贴心的将各种常见写法都纳入到”命题组答案“中,只要不是过于特立独行的答案,均会在考试中得到本该有的分数。

总结:
填空题,在程序能够“运行出正确的答案”,并且没有违反①和②所强调的事项,均会得到本该有的分数。
①项通常不会违反,被此项影响得分的人数很少
②项不管是考试还是练习,在”能够运行处正确的答案“前提下依旧丢分的几乎全都是因为此项。
例如考试时,答案过于特立独行,将i=i+1;写成i=i+3-2;
而市面上绝大多数的等考模拟软件,鉴于各种原因,都没有使用”命题组答案“给出的姑且称为”正确答案库“的答案范围,而是每个位置只给出一种在该模拟软件中可以得分的答案写法,其他”考试时将会正常得分“的答案写法,造成考试时能够得分但是在使用这些模拟软件时均得不到分数的情况,也就是学生们经常询问的问题:
”老师,i=i+1;和i+=1;不是一样吗?为什么这道题写i=i+1;才给分,另一道题只有写i+=1;才给分?“

2、改错题:
答题方式和评分准则完全等同与填空题,不再重复叙述

3、程序编写,即俗称的编程题:
答题方式:
题目中有明确叙述,要求书写程序的某一部分,以实现题目要求的功能。通常要求书写的位置是某个指定函数的函数体,或者部分主函数的函数体,代码量6-10行左右。

评分准则:
编程题,评分依据是”能够运行出正确的结果“,即评分依据有两个关键点,一是运行,二是结果正确。
此题评分准则依旧是跟”命题组答案“对照,依旧是对比文本后逐行按比例给分,而命题组答案在此题中将会是唯一的。
编程题的评分依据,是程序编译运行后得到的一个所谓的”out文件“,该文件在考生文件夹下,由编程运行时产生,文件名中通常带有”out”字样,各题具体的文件名,查看编程题中调用fopen函数时所书写的文件名就可以确认。
例如某题面中存在如下语句:
fopen(fp,"out.dat",w);
那么该题目对应的评分依据就是对应考生文件夹下的名为“out.dat”的文件。

编程题的评分,是将out文件的内容与命题组答案对比,逐行按比例给分。

影响得分的项目如下:
①程序存在error,无法通过编译:
无法编译,就无法运行。没有运行,就不会产生out文件。没有out文件,那么将会得到“指定文件未找到”的错误,此题判0分。
另外还有一点要注意,有个别模拟软件曾经出现过,题目中指定文件名为"out.dat",但是题面程序代码中创建的却是"ps35.out",造成“指定文件未找到”判0分的情况。这属于模拟软件的bug,不会在考试中发生。

②程序通过编译且能够运行,但是代码本身存在bug。
举个例子,写程序找出1-15之间的素数。
命题组给出的out文件内容如下:
2
3
5
7
11
13
一共6行,因为编程题总分24分,所以每行占4分。
如果考生答题过程中程序书写没有错误的话,一定会得到跟命题组内容与格式完全一样的答案(文件的书写由题面的fprintf函数负责,不允许考生改动,故文件格式是已经被指定的),将会得到满分24分。
如果代码有误,程序判定过程中将7判定为非素数,得到的out文件内容与命题组答案对比及评分细则如下:
2 2 匹配,得4分
3 3 匹配,得4分
5 5 匹配,得4分
7 11 不匹配,得0分
11 13 不匹配,得0分
13 不匹配,得0分
故此题得分仅12分。
如果上述数值均正确判断,但是错误的将1判断为素数,out文件内容如下:
1
2
3
5
7
11
13
结果可想而知,逐行判定,最终肯定判0分。
额外要说明的是,大部分模拟软件,不会进行逐行按比例给分,而是一旦out文件内容与命题组答案”不完全匹配“,直接判0分,而考试时一定是逐行按比例给分的,这点无需担心。

③程序书写正确无bug,但是改动过程序命令禁止改动的其他部分,例如fprintf函数,请参考②

总结:由于②导致该题丢分的几率是最高的,一定要小心再小心。代码出现问题时,别心急。很多时候,将已经书写完毕的代码整体删掉,重新书写,是最省事省力的解决bug的方案。

最后,补充一点,万一程序原始结构被破坏,别着急,不要冒险关闭vc6,只要按下ctrl+z组合键,就能逐步恢复之前的样式。因为ctrl+z组合键的功能是”撤销“

4. 计算机二级c语言最后一道大题是按照过程给分还是只看运行结果给分的是人工阅卷,还是电脑阅卷

计算机二级c语言最后一道大题是按照过程给分,是人工阅卷。

C语言程序的结构:包括有:顺序结构、分支结构、循环结构。理解和学习程序的执行过程,对于以后学习其他的编程语言,或者程序的调试,程序调Bug都有很好的帮助。

C语言考试最后一道题目是有一定难度,一般只有百分之30的人能拿满分,建议不会做的话写几个解答步骤,这样子可以拿一些公式的分数,公式一般给1~2分。

(4)c语言考试有bug吗扩展阅读:

计算机二级考试是全国计算机等级考试四个等级中的一个等级,由教育部考试中心主办,考核计算机基础知识和使用一种高级计算机语言编写程序以及上机调试的基本技能。

考试采用全国统一命题、统一考试的形式,二级上机考试的成绩由考生交卷后由计算机直接评分给出,机器阅卷,并由考点汇总并与答题卡一起提交至教育部考试中心,教育部考试中心方面将试卷评阅完毕后,会将各省的成绩合格信息汇总并发回给各省的主考部门,并由各省的主考部门来决定具体的成绩公布的时间。

参考资料来源:网络-计算机二级

5. c语言 为什么总是有一个bug啊,求帮助。。。

明显的,错误原因是标点符号使用错误,注意所有的不在双引号之内的标点符号都使用英文的
明显你的小于号是中文的,再检查下还有没有其他中文标点符号

6. C语言中或命题的BUG

C语言中存在“短路效应”,在做||运算的时候,先计算前面的一个表达式的结果。如果前面的结果是true(非零),那么整个表达式的结果就是true,不需要计算后面的值。当p是NULL的时候,p==NULL的值为true,后面的“p->key == k”就不会被求值。如果把“p->key == k”提到前面,当p是NULL的时候,就会造成非法内存访问,所以如果没有结果就报错。&&运算符也存在同样的“短路效应”,先计算前面的一个表达式的结果,如果前面的结果是0,那么整个表达式的结果就是0。

7. c语言java语言有BUG吗

BUG不是语言的问题,什么语言做出来的程序都可能有漏洞啊

8. C语言编简单的学生成绩管理系统有个bug,输入成绩的时候最后一个数学成绩老是显示4198786不能赋值进去

//姓名,学号,英语,语文,数学三种成绩
#include<stdio.h>
#include<stdlib.h>
#definemaxnumber30
intstudent_number;
intcount1=0,count2=0,Operate1=3;
FILE*stream;
typedefstructstu{
intidnumber;
charname[20];
doubleEnglish_score;
doublechinese_score;
doublemath_score;
}Student;
//按学号排序

voidputout_one(Student*sp)
{
for(intj=0;j<10;j++)
printf("******");
printf(" ");
printf("%d%s%.1f%.1f%.1f ",(*sp).idnumber,(*sp).name,(*sp).English_score,(*sp).chinese_score,(*sp).math_score);
for(j=0;j<10;j++)
printf("******");
printf(" ");
}
voidputout_lot(Student*student)
{
for(inti=0;i<=Operate1;i++)
{
for(intj=0;j<10;j++)
printf("******");
printf(" ");

printf("%d%s%.1f%.1f%.1f ",student[i].idnumber,student[i].name,student[i].English_score,student[i].chinese_score,student[i].math_score);
}
for(intj=0;j<10;j++)
printf("******");
printf(" ");
}
voidinput_student(Student*S)//输入插入学生的信息
{
//printf("请输入第%d位学生(学号,名字,语文,英语,数学) ",i+1);
scanf("%d",&(*S).idnumber);
scanf("%s",&(*S).name);
scanf("%lf%lf%lf",&(*S).chinese_score,&(*S).English_score,&(*S).math_score);
}
voidid_find_in(Student*S,Student*q)//把新的学生信息加入表单
{
Student*p=S,*t;
while(count1<Operate1+1)
{
t=p;
p++;
count1++;
}
*t=*q;
count1=0;
Operate1++;
}
voidinsert_element(Student*S)//插入学生信息
{
printf("请输入1位学生(学号,名字,语文,英语,数学) ");
Student*temp=(Student*)malloc(sizeof(Student)),*q=S;
input_student(temp);
id_find_in(S,temp);
}
voiddelet_element(Student*S,intid_n)
{
Student*p=S,*t;
while(count1<Operate1)
{
if((*p).idnumber==id_n)
{
t=p;
printf("已删除%d号学生信息 ",(*p).idnumber);
while(count2<Operate1-count1-1)
{
*(t-1)=*(++t);
count2++;
}
break;
}
count1++;
p++;
}
count1=0;
count2=0;
Operate1--;
}
intjunge(char*a,char*b)
{
char*p=a,*q=b;
while(*p!='')
{
if(*p==*q)
{
p++;
q++;

continue;
}
else
break;
}
if(*p==''&&*q=='')
return1;
else
return0;
}
voidshow_stu_element(Student*S,char*sp)//显示某人信息(功能已实现)
{
Student*p=S;
while(count1<Operate1)
{
if(junge((*p).name,sp))
{
printf("已找到此人:%s ",(*p).name);
putout_one(p);
p=S;
break;
}
else
{
p++;
count1++;
continue;
}
}
if(p!=S)
printf("查无此人! ");
count1=0;
}
voidid_sort(Student*S)
{
Student*temp=(Student*)malloc(sizeof(Student)),*q=S,*t;
intnum=Operate1;
while(count1<Operate1)
{
t=q+1;
while(count2<num)
{
if((*q).idnumber>(*t).idnumber)
{
*temp=*q;
*q=*t;
*(t)=*temp;
//printf("%d ",(*t).idnumber);
}

count2++;
t++;

//t=t+sizeof(Student);//这样无法实现why?
}
num--;
q++;
count2=0;
count1++;

//q=q+sizeof(Student);
}
count1=0;
count2=0;
}
voidcount_passnumber(Student*S)
{
Student*p=S;
inte_p_number=0,m_p_number=0,c_p_number=0,num=0;
while(num<=Operate1)
{
if(p->English_score>=60)
e_p_number++;
if(p->math_score>=60)
m_p_number++;
if(p->chinese_score>=60)
c_p_number++;
num++;
p++;
}
printf("/***学生总人数=:%d ",Operate1);
printf("/***英语过关人数=%d数学过关人数=%d语文过关人数=%d ",e_p_number,m_p_number,c_p_number);
printf("/***英语挂科人数=%d数学挂科人数=%d语文挂科人数=%d ",Operate1+1-e_p_number,Operate1+1-m_p_number,Operate1+1-c_p_number);//因为数组下标是从0开始的
}
voidmain()
{
Studentstudent[maxnumber];
stream=freopen("in.txt","r",stdin);
intOperate=3;inti;intid_n;
charstudent_element[20];
for(i=0;i<Operate1;i++)
{
printf("请输入第%d位学生(学号,名字,语文,英语,数学) ",i+1);
scanf("%d",&student[i].idnumber);
scanf("%s",&student[i].name);
scanf("%lf%lf%lf",&student[i].chinese_score,&student[i].English_score,&student[i].math_score);
}
//fclose(stream);
for(i=0;Operate!=0;i++)
{
printf("输入:0.退出。1.输入学生信息2.按姓名查找并删除学生信息 3.按学号排序4.查找显示一位学生信息 5.显示统计记录(成员数、每科平均分)6.输出每科及格人数和不及格人数7(default).操作完成,等待用户输入: ");
scanf("%d",&Operate);
switch(Operate)
{
case1:insert_element(student);break;
case2:scanf("%d",&id_n);delet_element(student,id_n);break;
case3:id_sort(student);break;
case4:scanf("%s",student_element);show_stu_element(student,student_element);break;
case5:putout_lot(student);break;
case6:count_passnumber(student);break;
default:printf("请输入: ");continue;
}
if(Operate==0)
break;
}
}

9. 计算机二级c语言考试漏洞

只要输出MAX? 那最大的那个放5张好了 知道你为什么放3个一样了 因为如果最小的为2 次2小为3 那循环就了1个3之前就到过2个2了 那4就会被跳过 此为一漏洞 可能造成跳过 另外如果I到了一个不可能组合到的数 也会卡住 到结束 排序建议用冒泡法 改的话 for(ia=0;ia<=5;ia++) for(ib=0;ib<=5;ib++) for(ic=0;ic<=5;ic++) for(id=0;id<=5;id++) if(ia+ib+ic+id<=5) (把数记到数组里); 最后排序数组 去掉重复 0

10. 关于c语言编程的bug

这时很正常的问题.打代码没有bug才不正常.但是编译时的错误还是比较容易避免的,常见的可以通过以下几种方法解决

  1. 语法错误:比如说变量名打错,少一个分号,括号之类的错误,经过你不断的打代码,这样的错误慢慢就会减少了.

  2. 编译出错时,一半的方法是将问题从上到下一个一个解决.因为第一个错误可能引发后面的很多错误.因此你每次只需要留意第一个错误.很多情况下,第一个错误解决了,后面的错误自然迎刃而解.

  3. 编译出错时,编译器通常会提示出错的行号.寻找错误一半从出错的行号往上找,不需要往下找,看看编译错误的原因是什么,遇到不懂的单词可以查查,以后就明白了.因为错误就那么几个,错来错去还是那几个.

  4. 建议写程序的时候,不要等全部代码打完之后再一次性编译.可以分模块,分函数写.写完一个之后,尝试着编译,看看有没有问题,即使有问题,寻找起来也相对会方便一点.不必大海捞针.


至于运行时的bug,这需要随着你的代码量的提高而减少(相对).解决bug的常用方法是debug(调试),具体调试的方法因为不同的开发环境而不同.你可以根据你的开发环境查阅相应的debug文档.