计算机二级 C 语言上机改错部分 1. 下列给定程序中函数 fun 的功能是: 求出如下分数序列的前 n 项之和。和值通过函数值返回。例如,若 n=5 ,则应输出 。请改正程序中的错误,使其得出正确的结果。注意:部分源程序在文件 中, 不得增行或删行,也不得更改的程序的结构! #include <> /************found************/ void fun ( int n){ int a, b, c, k; double s; s= ; a= 2;b= 1; for (k= 1;k <= n; k++ ){ /************found************/ s=s+ (Double)a / b; c= a;a=a+ b;b= c; } return s; } main( ){ int n= 5; printf( "\nThe value of function is: %lf\n", fun (n) ); } 【参考答案】(1)double fun(int n) (2)s=s+(double)a/b; 2. 下列给定程序中函数 fun 的功能是:统计 substr 所指的子符串在 str 所指的字符串中出现的次数。例如,若字符串为 aaas 1kaaas ,子字符串为 as ,则应输出 2。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件 中, 不得增行或删行,也不得更改的程序的结构! #include <> int fun (char *str,char *substr) { int i,j,k,num=0; /************found************/ for(i = 0, str[i], i++) for(j=i,k=0;substr[k]==str[j];k++,j++) /************found************/ If(substr[k+1]=='\0') { num++; break; } return num; } main() { char str[80],substr[80]; printf("Input a string:") ; gets(str); printf("Input a substring:") ; gets(substr); printf("%d\n",fun(str,substr)); } 【参考答案】(1)for(i=0;str[i];i++) (2)if(substr[k+1]== ′\0′) 3. 下列给定程序中函数 fun 的功能是: 实现两个变量值的交换, 规定不允许增加语句和表达式。例如,变量 a 中的值原为 8,b 中的值原为 3 ,程序运行后 a 中的值为3,b 中的值为 8。请改正程序中的错误,使它得出正确的结果。注意:部分源程序在文件 中, 不得增行或删行,也不得更改程序的结构! #include <> int fun(int *x,int y) { int t; /**************found**************/ t=x;x=y; /**************found**************/ return(y) ;} main() { int a= 3,b=8; printf("%d %d\n", a, b); b= fun(&a, b); printf("%d %d\n", a, b); } 【参考答案】(1)t = *x; *x=y; (2)return(t) ;或 return t; 4. 下列给定程序中函数 fun 的功能是: 求两个非零正整数的最大公约数,并作为函数值返回。例如,若 num1 和 num2 分别为 49和 21 ,则输出的最大公约数为 7; 若 num1 和 num2 分别为 27和 81 ,则输出的最大公约数为 27。请改正程序中的错误,使它能得出正确结果。注意:部分源程序在文件 中, 不得增行或删行,也不得更改程序的结构。#include <> int fun(int a,int b) { int r,t; if(a<b) { /************found************/ t=a; b=a; a=t; } r=a%b; while(r!=0) { a=b; b=r; r=a%b; } /************found************/ return(a); } main() { int num1, num2,a; printf("Input num
计算机二级C语言上机改错部分 来自淘豆网www.taodocs.com转载请标明出处.