第 1 页:程序填空题 |
第 2 页:程序改错题 |
第 3 页:程序设计 |
第 4 页:参考答案 |
上机考试试题答案与解析
一、程序填空题
【1】sum+=x[i]【2】abs+=(x[i]-avg)*(x[i]
avg) 【3】sqrt(abs/10)
【解析】由函数proc()可知,变量SHill中存放n个数的和,因此,【1】处填“sum+=x[i]”;然后求其平方差,因此,【2】处填“abs+=(x[i]- avg)*(x[i] -avg)”;最后求10 个数的方差,因此,【3】处填“sqrt(abs/10)”。
二、程序改错题
(1)错误:for(i=j=0;str[i]!=’0’;i++)
正确:for(i=j=0;str[i]!=’\0’;i++)
(2)错误:str[j]=str[i];
正确:str[j++]=str[i];
【解析】根据题目中的要求,从字符串str中删除所有大写字母’F’,需要检查字符串str中的每一个字符,直到字符串结束,因此,“for(i=j=0;str[i]!=’0 ’;i++)”应改为“for(i=j=0;str[i]!=’\0 ’;i++)”;将每一个不是’F’的字符放入原来的字符串中.形成新的字符串,因此,“str[j]= str[1];”应改为“str[j++]=str[i];”。
三、程序设计题
void proc(char*str)
{
char*p=str:
while(*p==’*’)p++;//通过P的移动来达
到使P指向第一个不是*号的字符
for(;*p!=’\0 ’;p++,str++)//把从第一个
不是*号的字符放到a中 ‘
*str=* P:
*str=’\0 ’; //最后用’\0’作为字符串结束标志
}
【解析】题目中要求将字符串中的前导*号全部删除首先将指针p移动到第一个不是*的字符,将指针P之后的字符放入原来的字符串中,并为新的字符串添加结束符。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |