首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下两个说明、c函数和问题,将解答写入答题纸的对应栏内。 【说明1】 函数main()的功能旨在对输入的一个正整数n,计算12+22+32+…+n2,但是对该函数进行测试后没有得到期望的结果。 【c函数】 1.输入5测试上述main函数时,显示结果如
阅读以下两个说明、c函数和问题,将解答写入答题纸的对应栏内。 【说明1】 函数main()的功能旨在对输入的一个正整数n,计算12+22+32+…+n2,但是对该函数进行测试后没有得到期望的结果。 【c函数】 1.输入5测试上述main函数时,显示结果如
admin
2010-01-08
96
问题
阅读以下两个说明、c函数和问题,将解答写入答题纸的对应栏内。
【说明1】
函数main()的功能旨在对输入的一个正整数n,计算1
2
+2
2
+3
2
+…+n
2
,但是对该函数进行测试后没有得到期望的结果。
【c函数】
1.输入5测试上述main函数时,显示结果如下所示。
input an integer:5
result:-582598909
2.将行号为7的代码修改为:prinff(”n=%d\nresuh:%d\n”,n,sum);并再次
输入5测试main函数,显示结果如下所示。
input an interger:5
n=2293632
result:-582598909
阅读以上两个说明、c函数和问题,将解答写入答题纸的对应栏内。
【问题1】
请给出上述main函数中需要修改的代码行号,并给出修改后的整行代码。
【说明2】
函数test_f2{}编译时系统报告有错,修改后得到函数12_B{}。对函数12_B{}
进行编译时顺利通过,在某些C系统中执行时却由于发生异常而不能正确结束。
【c函数2】
【问题2】(1)请指出函数test_f2中不能通过编译的表达式;(2)请指出可能导致函数f2_B运行异常的表达式。
选项
答案
问题(1): [*] 以上的答案仅供参考,并没有先后顺序。另外对sum进行初始化的“sum=O;”也可以加在第3行,第4行以及第5行的适当的位置。 问题(2):(1)str++ (2) str:‘a’
解析
问题(1)解析:程序中的错误可以分为语法错误和语义错误,其中语义错误又可以分为静态语义错误和动态语义错误。语法错误和静态语义错误可以在编译的时候发现,而动态的语义错误只有在程序运行的结果中才能表现出来。C函数1中的main函数通过编译但是运行结果不对,虽然输出的是sum的值,但是在for循环中sum的值的得到与k以及n的值是相关的,因此我们需要从n、k、sum的定义和初始化查起。首先来看k,在定义的时候没有被初始化,但是在for循环进行使用的时候被初始化为1,后面通过k++进行改变的,这一部分是正确的。接下来看n,n在定义的时候也没有被初始化,n的值是通过scanf(“%d”,n)取得的,由第二次测试的显示结果可以看出,n的值并不是我们的输入值5,很显然n的值设定不对,回头仔细检查scanf函数的调用才发现n的前面缺少取地址运算符“&”,作为一名程序员都应该知道scanf中的变量使用的是地址,所以正确的写法为“scanI。(“%d”,&m);”;再来看sum,sum的值主要是通过for循环中的语句“sum+=k*k”来改变的。“sum+=k*k”实际上等同于“sum=sum+k*k”,可是我们知道sum在定义的时候并没有初始化,那么在我们第一次进入for循环的时候sum的值是不确定的,在这种情况下执行语句“sum+=k*k”得到的值自然也就无法预料了,所以我们需要在sum使用之前对其进行初始化“sum=0”。另外,在程序中还有一处就是第5行,可以看到在句末有一个分号,这样就等于for循环语句的循环体为空,“sum+=k * k”语句并没有被包含到for循环语句中,只是在循环结束后执行一次,最后输出地结果sum是等于n * n,不符合题目要求的结果(1
2
+2
2
+3
2
+……+n
2
),正确的做法就是删除第5行末位的分号。问题(2)的解析:函数test~12()编译时系统报错,检查函数能够发现“char str[ ]=“test string”;”定义了字符数组str,并进行了初始化,因此str就是数组名,也是数组在内存中的首地址,*str则表示的是str[O],通过“* str=‘a’”改变str[O]的值是对的,但是“str++”就不对了,在c语言中str是数组名是地址常量,是不能修改的,所以系统在编译的时候会报告错误。如果我们将str定义为一个char类型的指针的话,则可以通过str++来修改str的值,使它指向不同字符对象,但是在函数f2_B()中定义“char *str=‘test string’;”的时候,直接对指针str用常量进行了初始化,使得str为一个指针常量,这样即使我们可以通过str++取得字符串中的任何一个字符,但是却不能够通过“*str=‘a’”修改*str的值,所以在运行的时候就会发生异常不能够正常结束。
转载请注明原文地址:https://www.kaotiyun.com/show/kIjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
一般来说,收集到的数据经过清洗后,还需要进行分类、排序等工作。这样做的好处主要是(65)________________。
(31)________________接受每个用户的命令,采用时间片轮转方式处理服务请求,并通过交互方式在终端上向用户显示结果。
信息技术对传统教育方式带来了深刻的变化。以下叙述中,不正确的是(3)________________。
数据分析经常需要把复杂的数据分组,并选取代表,将大量数据压缩或合并得到一个较小的数据集。这个过程称为()。
下列关于Windows7屏幕保护程序的叙述中,不正确的是__________。
某企业甲乙两个部门招聘职工中,男女应聘人数和录用人数情况如下表:从上表看出,各部门女性录用率都大于男性录用率。从该企业合计来看,()。
假设在Access中已经建立了“学生”表,表中包括“学号”、“姓名”、“性别”和“班级”等字段,如果要统计出每个班级的人数,那么在查询设计视图的“班级”的“总计”行和“学号”的“总计”行中应分别选择(65)。
在Word2010中,要对设定好纸张大小的文档进行每页行数和每行字数调整,可通过页面设置对话框中的()命令进行设置。
程序员一般用(7)软件编写和修改程序。
阅读下列说明和HTML文本,分析其中嵌入的JavaScript脚本,将应填入(n)处的语句填到对应栏内。[说明]在文本框中实现时钟显示功能,格式如下:“-年-月-日小时:分:秒星期几”[HTML文本]<html>
随机试题
甲公司为增值税一般纳税人,增值税税率为17%,适用的企业所得税税率为25%。假定不考虑其他相关税费。确定计提坏账准备的比例为期末应收账款余额的5%。2014年1至11月末实现会计利润总额为750万元,递延所得税负债年初数为10万元,递延所得税资产年初数为7
在选择建筑基坑支护方案时,深层搅拌重力式水泥土墙方案对下列()项是不适用的。
强制检定是固定检定的关系,实行()的检定,使用单位没有选择的余地。
在同一个国家范围内的经济金融活动不存在国家风险。()
甲公司拥有对四家公司的控股权,其下属子公司的会计政策和会计估计均符合会计准则规定。不考虑其他因素,甲公司在编制2×17年合并财务报表时,对其子公司进行的下述调整中,正确的是()。
班主任工作的中心环节是()
阅读关于“人口增长模式”的图文资料,按要求完成教学设计任务。材料一《普通高中地理课程标准(实验)》的内容标准要求:“分析不同人口增长模式的主要特点及地区分布。”材料二某版本教科书中关于“人口增长模式”的部分内容。人口增长模
已知如下代码:booleanm=tree;if(m==false)System.out.println("False");elseSystem.out.pfintln("True");
Tostartanewbusiness,youshouldfirst______.
MyfriendssayI’mtrusting.Sure,I’ma"whatyouseeiswhatyouget"kindofperson.So【C1】______Iexpectthesamekindof【
最新回复
(
0
)