题库4"/>
C期末题库4
1
/*------------------------------------------------
【程序设计】
--------------------------------------------------题目:计算下式前n项的和作为函数值返回。s=(1*3)/2+(3*5)/4+(5*7)/6+(2*n-1)* (2*n+1)/(2*n)例如,当形参n的值为10时,函数返回:108.535516。
*********Begin**********和********** End **********不可删除------------------------------------------------*/
void TestFunc();
#include <stdio.h>
double fun(int n)
{/*********Begin**********//********** End **********/
}main()
{ int n=-1;while(n<0){ printf("Please input(n>0): "); scanf("%d",&n); }printf("\nThe result is: %f\n",fun(n));TestFunc();
}void TestFunc()
{FILE *IN,*OUT;int i;double s;IN=fopen("in.dat","r");if(IN==NULL){printf("Read FILE Error");}OUT=fopen("out.dat","w");if(OUT==NULL){printf("Write FILE Error");}fscanf(IN,"%d",&i);s=fun(i);fprintf(OUT,"%lf",s);fclose(IN);fclose(OUT);
}
答案
int i; double s,t;s=0;for(i=1;i<=n;i++){ t=2.0*i;s=s+(2.0*i-1)*(2.0*i+1)/t;}return s;
2
/*------------------------------------------------
【程序设计】
--------------------------------------------------题目:用函数实现字符串的复制, 不允许用strcpy()函数。--------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数main和其它函数中的任何内容,仅在函数的花括号中填入所编写的若干语句。
*********Begin**********和********** End **********不可删除------------------------------------------------*/#include <stdio.h>
void bky(); void copy(char str1[],char str2[])
{/**********Begin**********//********** End **********/
}main()
{void copy();char c1[40],c2[40];gets(c1);copy(c1,c2);puts(c2);bky();
}void bky()
{FILE *IN,*OUT;char i[100];char o[100];IN=fopen("in.dat","r");if(IN==NULL){printf("Read FILE Error");}OUT=fopen("out.dat","w");if(OUT==NULL){printf("Write FILE Error");}fscanf(IN,"%s",i);copy(i,o);fprintf(OUT,"%s\n",o);fclose(IN);fclose(OUT);
}
答案
int i;for(i=0;str1[i]!='\0';i++)str2[i]=str1[i];str2[i]='\0';
3
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------题目:任意输入10个数,输出其中的最大数;并且要求最大数与第一个位置上的数互换后,输出这10个数。程序中共有4条错误语句,请改正错误。--------------------------------------------------------
注意:不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------*/#include<stdio.h>
#define N 10
/**********ERROR**********/
void max(int a[],int n)
main()
{int a[N],i;for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;i<N;i++)printf("%5d",a[i]);printf("\n");
/**********ERROR**********/max(int a,int N);for(i=0;i<N;i++)printf("%5d",a[i]);
}
void max(int a[],int n)
{int max,i,p=0,t;
/**********ERROR**********/max=a[i];for(i=0;i<n;i++)
/**********ERROR**********/if(max>a[i]) {max=a[i]; p=i;}t=a[0];a[0]=a[p];a[p]=t;printf("\nmax=%d\n",max);
}
答案
【学生答案】
【参考答案】
void max(int a[],int n);
【改错2】 错误
【学生答案】
max(int a[],int N);
【参考答案】
max(a,N);
【改错3】 正确
【学生答案】
max=a[0];
【参考答案】
max=a[0];==============================
【改错4】 正确
【学生答案】
if(max<a[i])
【参考答案】
if(max<a[i])
4
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------功能:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。如: 输入 1234输出 它是4位数: 4321 ------------------------------------------------------*/#include <stdio.h>
main( )
{/**********ERROR**********/long a,b,c,d,e,x,scanf("%ld",&x);a=x/10000;/**********ERROR**********/b=x/10000/1000;c=x%1000/100;d=x%100/10;e=x%10;/**********ERROR**********/if (a==0)printf("它是5位数: %ld %ld %ld %ld %ld\n",e,d,c,b,a);else if (b!=0)printf("它是4位数: %ld %ld %ld %ld\n",e,d,c,b);else if (c!=0) printf("它是3位数: %ld %ld %ld\n",e,d,c);else if (d!=0)printf("它是2位数: %ld %ld\n",e,d);else if (e!=0) printf("它是1位数: %ld\n",e);
}
答案
【改错1】 正确
【学生答案】
long a,b,c,d,e,x;
【参考答案】
long a,b,c,d,e,x;==============================
【改错2】 正确
【学生答案】
b=x%10000/1000;
【参考答案】
b=x%10000/1000;==============================
【改错3】 正确
【学生答案】
if (a!=0)
【参考答案】
if (a!=0)==============================
更多推荐
C期末题库4
发布评论