内容发布更新时间 : 2024/11/16 23:55:48星期一 下面是文章的全部内容请认真阅读。
int num=0,n,i;
printf(\:\\n\ gets(str);
while(str[num]) num++; n=proc(str,bb,num); printf(\
for(i=0;i 答案:【1】str[i]>=’0’&&str[i]<=’9’【2】str[i]-’O’【3】n 【解析】题目中要求把字符串str中的数字字符转换成数字并存放到整型数组bb中。首先,应判断字符串str中每个字符是否是数字字符。因此,【1】处填“str[i]>=’0’&&str[i]<=’9’”将每一个数字字符转化为数字放在整型数组bb中,因此,【2】处填“str[i]-’0’;由函数proc()可知,变量n中存放整型数组bb中的元素个数,最后要返回到主函数当中,因此,【3】处填’n’。 三、程序改错题(共24分) 下列给定程序中,函数proc()的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCIl码升序排序后输出。 例如,输入opdye,则应输出deopy。 请修改程序中的错误,使它能得到正确结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include //****found**** int proc(char str[]) { char c; unsigned i,j; for(i=0;i c=str[j]: //****found**** str[j]=str[i++]; str[i]=c; } } void main() { char str[81]; system(\ printf(\:\gets(str); printf(\:\\n %s\,str); proc(str); printf(\:\\n %s\,str); } (1)错误:int proc(char str[]) 正确:void proc(char str[]) (2)错误:str[j]=str[i++]; 正确:str[j]=str[i]; 【解析】由主函数中的函数调用可知,函数proc()没有返回值。因此,“int proc(char str[])”应改为“void proc(char str[])”;由函数proc()可知,if语句块完成将字符串str中的第i个元素与第j个元素相交换。因此,“str[j]=str[i++];”应改为“str[j]=str[i];”。 四、程序设计题(共18分) 请编写函数proc(),它的功能是计算:s=(ln(1)+ln(2)+ln(3)+…+ln(m))的平方根。 在C语言中可调用log(n)函数求ln(n)。 例如,若m的值为30,则proc()函数值为8.640500。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。 试题程序: #include void main() { system(\ printf(\,proc(30)); } 答案: double proc(int m) { int i; double s=0.0; /* s是用来存放其和*/ for(i=1;i<=m;i++) s=s+log(i); /*计算s=ln(1)+ln(2)+ln(3)+…+ln(m)*/ return sqrt(s); /*最后将其开平方的值返回到主函数中*/ } 【解析】由题目中所给表达式可知,表达式的值为m项表达式的和然后开平方。可以首先通过m次循环求得m项表达式的和,然后将其和开平方并返回到主函数当中。