c上机模拟详细参考答案_whc0909(2)
{
s[i]=j;//将小于y的奇数存入数组s
i++; //累加小于y的奇数个数
}
for(j=0;j<i;j++)
if(y%s[j]==0) //判断y是否被s[j]整除
{
b[k]=s[j];//将符合条件的结果存入数组b
k++; //累加符合条件的结果个数
}
*m=k;
【一起来审题】
(1)该程序的解题思路可以分解为以下几步:从0开始逐个求得小于y的奇数→按顺序将这些奇数存入数组→逐个判断该数组中的值是否能整除y→累加能整除y的数值个数→最后按要求传回结果。由于采取的是按照小于y的所有整数按照j++逐个增加的顺序进行判断并依次进行存储的思路,所以最后求得的结果是符合要求的,是由小到大排列的。
(2)从已给部分源程序的main主函数开始入手,核心函数"fun(y,a,&m);",其中m返回这些数的个数,a传给函数中的参数存放计算结果的数组b。
【解题思路】
进入fun函数,根据(1)的分析:
首先,通过小于y的循环条件,判断小于y的每一个整数是否是奇数。其中的判断条件"if(j%2!=0)",并且累计这些奇数个数"i++;"。 (3)b
计算机二级上机题库很有用 题目就是里面出的
【答案及难度指数】★
(1)m-- (2)t[j]=t[m] (3)t[m]=s
【一起来审题】
(1)该程序功能实现字符串的逆置。把字符串中字符逆置就是把字符串中的第一个元素和最后一个元素交换,第二个元素和倒数第二个元素交换,直到所有的元素交换完成为止。
(2)从已给部分源程序的main主函数开始入手,主函数调用"fun(b);",通过键盘输入字符串b,作为参数传给函数void fun(char *t)中的t。
(3)进入fun函数,要想实现逆置,首先要求得字符串的长度。通过"m=strlen(t)-1;"求得m的值即为字符串的长度。然后通过for循环对字符串进行置换。
【解题思路】
第一空:for(j=0;j<m;j++,___1___)根据前面的分析,对字符串的置换是从第一个元素和最后一个元素(j<m,m是字符串的长度)开始进行循环交换,从第一个元素j=0开始向后增加为j++,所以从最后一个向前减少即为m--,第一空填m--。
第二空:"char s;"用来定义存放临时的字符,"s=t[j];"的目的是首先用s存放字符串t的第j个字符,这样将第m个字符存放在j的位置,就首先实现了将后面的第m个字符置换到前面的第j的位置,所以第二空填t[j]=t[m]。
第三空:前面实现了后面的第m个字符置换到前面的第j个字符,同时将第j个字符的内容存放在临时的字符s,现在就将这个临时字符s中的内容存放在第m个字符位置,这样就完成了j位置的字符与m位置字符的置换,所以第三空填t[m]=s。
【主要考点】字符数组。
2、程序改错题
【答案及难度指数】★★
(1)void fun(char *s,char c)
(2)if(*s=='\0')
(3)s[1]='\0';
【一起来审题】
该题中函数功能首先是查找子串再判断,最后是实现将符合条件的字符串进行连接。从已给定源程序的main主函数开始入手,通过"fun(str,ch);"语句调用fun函数,实现题干的要求。
【解题思路】
(1)第一个标识下,"void fun(char s,char c)"根据主函数中的定义,知道s为数组名,传的应该是数组地址,所以应改为"void fun(char *s,char c)"。
(2)while循环中对c与s进行匹配检查,第二个标识下,是当不同时执行连接操作,那么判断s是否为结尾的表达式应该是"if(*s=='\0')"。
(3)第三个标识下,连接后的新串要添加结尾符,所以正确的表达是将"s[1]='0';"改为"s[1]='\0';"。
【主要考点】函数定义语法;数组操作。
3、程序设计题
【答案及难度指数】★★★
int i,j,s=0;
for(j=0;j<N;j++) //统计行元素
{
s+=b[0][j];
s+=b[M-1][j];
}
for(i=1;i<=M-2;i++) //统计列元素
{
s+=b[i][0];
s+=b[i][N-1];
}
return s;
【一起来审题】
该程序功能是求出二维数组周边元素之和。其中周边元素是指数组的最上和最下的两行,最左和最右的两列。数组第一行元素的行下标为0,最后一行元素的行下标为M-1,第一列的列下标为0,最后一列的列下标为N-1。
【解题思路】
进入fun函数,根据前面的分析:求周边元素的和,可以采用两个循环分别把行元素和列元素相加。但要避免把周边元素重复相加。
【主要考点】二维数组;for循环语句。
计算机二级上机题库很有用 题目就是里面出的
1、程序填空题
【答案及难度指数】★
(1)"%ld",&a (2)a=-a (3)"%ld",a
【一起来审题】
该题中函数功能是取长整数的绝对值。此类题的解题思路是判断键盘输入的长整数的正负,然后对其进行操作。
【解题思路】
第一空:获得由键盘输入的长整数,根据C语言提供的标准输入函数scanf函数格式,第一空填""%ld",&a"。
第二空:"if(a<0)"语句是判断输入的长整数是否为负数,如果为负数,则对其进行取绝对值操作,也就是第二空填"a=-a"。
第三空:printf语句输出操作后的绝对值结果,根据C语言标准输出函数printf格式,所以第三空填""%ld",a"。
【主要考点】C语言基本语法。
2、程序改错题
【答案及难度指数】★★
(1)s=NULL; (2)if(*r==*p)
【一起来审题】
该题中函数功能是求得字符串中某子串最后一次出现的地址。从已给定源程序的main主函数开始入手,通过调用"p=fun(str,t);"语句求得p的地址,然后通过判断p,判断串str中是否存在子串t。
【解题思路】
(1)第一个标识下面:语句"s=NuLL;"中的NuLL未定义。NULL代表空值,但程序中写成了NuLL。所以,改成"s=NULL;"。
(2)程序的主体是二重循环,其中外循环使指针str逐个指向字符串的字符,直到遇到串结束符退出循环,内循环检查指针p与r所指字符串是否匹配。因为这里p、r是指针,如果使用判断表达式"if(r==p)",那么比较的是地址,而题目要求比较它们所指的字符。所以,改为:"if(*r==*p)"。
【主要考点】C语言标识符;变量使用。
3、程序设计题
【答案及难度指数】★★★
int k=0,i,j;
for(i=mm;i>1;i--)
{
for(j=2;j<i;j++)
if(i%j==0) //判断i是否是素数
break;
//若i能被j整除,则i为非素数
else
continue; //否则继续循环判断
if(j>=i) //若是素数,将其存入b
{
b[k]=i;
k++; //累加素数个数
}
}
return k++;
【一起来审题】
该程序功能是求一定范围内的素数。素数是只能被1和自身除尽的数。判断i是不是素数最简单的方法就是用2~(i-1)去除i,只要能除尽就不是素数。
【解题思路】
进入fun函数,根据前面的分析:
(1)首先,判断i是否是素数,即是否能被2~(i-1)整除。
(2)若是素数,就将i存入数组b,并对计数器k加1。
相关推荐:
- [小学教育]四年级综合实践活动课《衣物的洗涤》教
- [小学教育]2014半年工作总结怎么写
- [小学教育]20世纪外国文学专题综合试题及答案
- [小学教育]TS_1循环使用催化丙烯环氧化反应研究
- [小学教育]最实用的考勤签到表(上下班签到表)
- [小学教育]气候与生态建筑——以新疆民居为例
- [小学教育]二人以上股东有限责任公司章程参考样本
- [小学教育]2014届第一轮复习资料4.1,3美好生活的
- [小学教育]土方开挖、降水方案
- [小学教育]手绘儿童绘本《秋天的图画》(蜡笔)
- [小学教育]2002级硕士研究生卫生统计学考试试题
- [小学教育]环保装备重点发展目录
- [小学教育]金蝶K3合并报表培训教材
- [小学教育]岩浆岩试题及参考答案
- [小学教育]知之深爱之切学习心得
- [小学教育]第十二章 蛋白质的生物合成
- [小学教育]Chapter 2-3 Solid structure and basi
- [小学教育]市政道路雨季专项施工方案
- [小学教育]中国海洋大学2012-2013学年第二学期天
- [小学教育]教育心理学第3章-学习迁移
- 浅谈深化国企改革中加强党管企业
- 2006年中国病理生理学会学术活动安排
- 设计投标工作大纲
- 基于ARP的网络攻击与防御
- 2016届湖北省七市(州)教科研协作体高三
- Google_学术搜索及其检索技巧
- 2019-2020学年七年级地理下册6.3美洲教
- 城市道路可研报告
- 【名师指津】2012高考英语 写作基础技
- 6级知识点培训北京师范大学《幼儿智趣
- 注册会计师会计知识点:金融资产
- 新安装 500 kV 变压器介损分析与判断
- PS2模拟器PCSX2设置及使用教程.
- 医院药事管理与药剂科管理组织机构
- {PPT背景素材}丹巴的醉人美景,免费,一
- NAS网络存储应用解决方案
- 青海省西宁市六年级上学期数学期末考试
- 测量管理体系手册依据ISO10012:2003
- 洞子小学培养骨干教师工作计划
- 浅谈《牛津初中英语》的教材特点及教学




