第80题 (20.0分)
/*-------------------------------------------------------
【程序设计】
---------------------------------------------------------
题目:编程序按如图片所示公式计算y的值(精度为1e-6,即最后一项的绝对值小于
1e-6时结束。)
-------------------------------------------------------*/
#include <stdio.h>
void main( )
{
/**********Program**********/
/********** End **********/
}
答案: int r=1;
double x, y=0 ;
while(x>=1e-6)
{
x=1.0/(r*r+1);
printf("x=%f\n", x);
y=y+x;
r++;
}
printf("y=%f\n",y);
第81题 (20.0分)
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:用函数实现字符串的复制, 不允许用strcpy()函数。
------------------------------------------------*/
#include <stdio.h>
void wwjt();
void copy(char str1[],char str2[])
{
/**********Program**********/
/********** End **********/
}
main()
{
void copy();
char c1[40],c2[40];
gets(c1);
copy(c1,c2);
puts(c2);
wwjt();
}
void wwjt()
{
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';
----------------------
第82题 (20.0分)
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:编写函数fun计算下列分段函数的值:
x^2+x+6 x<0且x≠-3
f(x)= x^2-5x+6 0≤x<10且x≠2及x≠3
x^2-x-1 其它
------------------------------------------------*/
#include <stdio.h>
void wwjt();
float fun(float x)
{
/**********Program**********/
/********** End **********/
}
main()
{
float x,f;
printf("input x=");
scanf("%f",&x);
f=fun(x);
printf("x=%f,f(x)=%f\n",x,f);
wwjt();
}
void wwjt()
{
FILE *IN,*OUT;
int n;
float i;
float o;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("Read FILE Error");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("Write FILE Error");
}
for(n=0;n<10;n++)
{
fscanf(IN,"%f",&i);
o=fun(i);
fprintf(OUT,"%f\n",o);
}
fclose(IN);
fclose(OUT);
}
答案:----------------------
float y;
if (x<0 && x!=-3.0)
y=x*x+x+6;
else if(x>=0 && x<10.0 && x!=2.0 && x!=3.0)
y=x*x-5*x+6;
else y=x*x-x-1;
return y;
----------------------
第83题 (20.0分)
/*-------------------------------------------------------
【程序设计】
---------------------------------------------------------
题目:请编写函数fun,该函数的功能是:将M行N列的二维数组中的数据,按列的顺序依次
放到一维数组中。一维数 组中数据的个数存放在形参n所指的存储单元中。
例如:若二维数组中的数据为 33 33 33 33
44 44 44 44
55 55 55 55
则一维数组中的内容应是:33 44 55 33 44 55 33 44 55 33 44 55
注意:请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入
所编写的若干语句。
-------------------------------------------------------*/
#include <stdio.h>
void wwjt();
void fun (int (*s)[10], int *b, int *n,int mm, int nn)
{
/**********Program**********/
/********** End **********/
}
void main()
{
int w[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}}, i, j;
int a[100]={0},n=0 ,s;
printf("The matrix:\n");
for (i=0; i<3; i++)
{
for (j=0;j<4;j++)
printf("%3d",w[i][j]);
printf("\n");
}
fun(w,a,&n,3,4);
printf("The A array:\n");
for(s=0; s<n; s++)
{
printf("%3d ",a[s]);
}
wwjt ();
}
void wwjt ()
{
FILE *in, *out;
int w[10][10], i, j,s;
int a[100]={0}, n=0 ;
in=fopen("in.dat","r");
if(in==NULL)
{
printf("Please Verify The Currernt Dir..It May Be Changed");
}
out=fopen("out.dat","w");
if(out==NULL)
{
printf("Please Verify The Current Dir.. It May Be Changed");
}
for(i=0;i<3;i++)
for(j=0; j<6; j++)
fscanf(in,"%d",&w[i][j]);
fun(w,a,&n,3,6);
for(s=0; s<n; s++)
{
fprintf(out,"%d ",a[s]);
}
fclose(in);
fclose(out);
}
答案: int i,j;
for(j=0;j<nn;j++) /*将二位数组中的数据按列的顺序依次放入一位数组中*/
for(i=0;i<mm;i++)
{
b[*n]=*(*(s+i)+j);
*n=*n+1; /*通过指针返回元素个数*/
}
第84题 (20.0分)
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:有一个一维数组score,内放10个学生的成绩,用一
个函数来求平均成绩。
例如:如果10个学生的成绩分别为92,87,68,56,92,84,
70,65,90,60 则平均成绩为:76.400000
------------------------------------------------*/
#include <stdio.h>
void wwjt();
float average (float array[10])
{
/**********Program**********/
/********** End **********/
}
main()
{
float score[]={92,87,68,56,92,84,70,65,90,60};
printf("average score is %f\n",average (score));
wwjt();
}
void wwjt()
{
FILE *IN,*OUT;
int i;
float fIN[10];
float fOUT;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("Please Verify The Currernt Dir..it May Be Changed");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("Please Verify The Current Dir.. it May Be Changed");
}
for(i=0;i<10;i++)
{
fscanf(IN,"%f",&fIN[i]);
}
fOUT=average (fIN);
fprintf(OUT,"%f\n",fOUT);
fclose(IN);
fclose(OUT);
}
答案:----------------------
int i;
float aver,sum=array[0];
for(i=1;i<10;i++)
sum=sum+array[i];
aver=sum/10;
return aver;
----------------------
第85题 (20.0分)
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:从键盘为一维整型数组输入10个整数,调用fun
函数找出其中最小的数,并在main函数中输出。
请编写fun函数。
-------------------------------------------------*/
#include "stdio.h"
void wwjt();
int fun(int x[],int n)
{
/**********Program**********/
/********** End **********/
}
main()
{
int a[10],i,min;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
printf("%3d",a[i]);
printf("\n");
min=fun(a,10);
printf("%d\n",min);
wwjt();
}
void wwjt()
{
FILE *IN,*OUT;
int iIN[10],i;
int iOUT,iCOUNT;
IN=fopen("4.IN","r");
if(IN==NULL)
{
printf("Please Verify The Currernt Dir..it May Be Changed");
}
OUT=fopen("4.out","w");
if(OUT==NULL)
{
printf("Please Verify The Current Dir.. it May Be Changed");
}
for(i=0;i<10;i++)
{
for(iCOUNT=0;iCOUNT<10;iCOUNT++)
fscanf(IN,"%d",&iIN[iCOUNT]);
iOUT=fun(iIN,10);
fprintf(OUT,"%d\n",iOUT);
}
fclose(IN);
fclose(OUT);
}
答案:----------------------
int min,i;
min=x[0];
for(i=1;i<n;i++)
{if(x[i]<min) min=x[i];}
return min;
----------------------
第86题 (20.0分)
/*-------------------------------------------------------
【程序设计】
---------------------------------------------------------
编写函数fun(),它的功能是求n以内(不包括n)同时能被5与11整
除的所有自然数之和的平方根s,并作为函数值返回。
例如:n为1000时,函数值应为s=96.979379。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数
fun的花括号中填入所编写的若干语句。
试题程序:
-------------------------------------------------------*/
#include <conio.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
double fun(int n)
{
double s = 0.0;
int i;
/**********Program**********/
/********** End **********/
}
void main()
{
FILE *wf;
system("CLS");
printf("s=%f\n", fun(1000));
wf=fopen("out.txt", "w");
fprintf(wf, "%f", fun(1000));
fclose(wf);
}
答案: for(i = 0; i < n; i++)
if(i % 5 == 0 && i % 11 == 0)
s = s + i;
s = sqrt(s);
return s;
第87题 (20.0分)
/*-------------------------------------------------------
【程序设计】
---------------------------------------------------------
题目:请编写函数fun,其功能是:统计s所指字符串中的数字字符个数,并作为函数值
返回。
例如:s所指字符串中的内容是:2def35adh25 3kjsdf 7/kj8655x,函数fun返回值为:11
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入
你编写的若干语句。
-------------------------------------------------------*/
#include <stdio.h>
void wwjt( );
int fun(char *s)
{
/**********Program**********/
/********** End **********/
}
void main()
{
char *s="2def35adh25 3kjsdf 7/kj8655x";
printf("%s\n",s);
printf("%d\n",fun(s));
wwjt( );
}
void wwjt( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *in, *out ;
int i;
char s[256];
in=fopen("in.dat","r");
if(in==NULL)
{
printf("Please Verify The Currernt Dir..It May Be Changed");
}
out=fopen("out.dat","w");
if(out==NULL)
{
printf("Please Verify The Current Dir.. It May Be Changed");
}
for(i = 0 ; i < 10 ; i++)
{
fgets(s, 255, in);
fprintf(out, "%d\n", fun(s));
}
fclose(in) ;
fclose(out) ;
}
答案: int n=0;
char *p;
for(p=s;*p!='\0';p++)
if((*p>='0')&&(*p<='9'))
n++;
return n;
第88题 (20.0分)
/*-------------------------------------------------------
【程序设计】
---------------------------------------------------------
题目:编写函数fun,其功能是:将a、b两个两位正整数合并成一个新的整数放在c中。
合并的方式是:将a中的十位和个位数依次放在变量c的千位和十位上,b中的十
位和个位数依次放在变量c的个位和百位上。
例如:当a=45,b=12,调用该函数后c=4251。
注意:请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入
你编写的若干语句。
-------------------------------------------------------*/
#include <stdio.h>
void wwjt ( );
void fun(int a, int b, long *c)
{
/**********Program**********/
/********** End **********/
}
void main()
{
int a,b; long c;
printf("Input a, b:");
scanf("%d%d", &a, &b);
fun(a, b, &c);
printf("The result is: %ld\n", c);
wwjt( );
}
void wwjt ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *in, *out ;
int i, a,b ; long c ;
in=fopen("in.dat","r");
if(in==NULL)
{
printf("Please Verify The Currernt Dir..It May Be Changed");
}
out=fopen("out.dat","w");
if(out==NULL)
{
printf("Please Verify The Current Dir.. It May Be Changed");
}
for(i = 0 ; i < 10 ; i++)
{
fscanf(in, "%d,%d", &a, &b) ;
fun(a, b, &c) ;
fprintf(out, "a=%d,b=%d,c=%ld\n", a, b, c) ;
}
fclose(in) ;
fclose(out) ;
}
答案: *c=b/10+(a%10)*10+(b%10)*100+(a/10)*1000;
第89题 (20.0分)
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:求大于lim(lim小于100的整数)并且小于100的所
有素数并放在aa数组中,该函数返回所求出素数的
个数。
------------------------------------------------*/
#include<stdio.h>
#include<conio.h>
#define MAX 100
void wwjt();
int fun(int lim,int aa[MAX])
{
/**********Program**********/
/********** End **********/
}
main()
{
int limit,i,sum;
int aa[MAX];
printf("Please input ainteger:");
scanf("%d",&limit);
sum=fun(limit,aa);
for(i=0;i<sum;i++){
if(i%10==0&&i!=0) printf("\n");
printf("%5d",aa[i]);
}
wwjt();
}
void wwjt()
{
int i,j,array[100],sum,lim;
FILE *rf, *wf ;
rf = fopen("in.dat", "r") ;
wf = fopen("out.dat", "w") ;
for (j=0; j <= 5; j++)
{
fscanf(rf, "%d", &lim);
sum=fun(lim,array);
for(i=0;i<sum;i++)
fprintf(wf, "%7d", array[i]);
fprintf(wf, "\n");
}
fclose(rf);
fclose(wf);
}
答案:----------------------
int n=0;
int i,j;
for(i=lim;i<=100;i++)
{for(j=2;j<i;j++)
if(i%j==0) break;
if(j==i) aa[n++]=i;
}
return n;
----------------------
第90题 (20.0分) 题号:300 难度:中 第1章
/*-------------------------------------------------------
【程序设计】
---------------------------------------------------------
题目:函数fun的功能是:将s所指字符串中除下标为偶数同时ASCII码值也为偶数的字符
外,其余的全部删除;字符串中剩余字符所形成的新串放在t所指的数组中。
例如:若s所指字符串中的内容为"ABCDEFG123456",其中字符A的ASCII码值为奇数,因此应
当删除;字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;字
符2的ASCII码值为偶数,在数组中的下标也为偶数,因此不应当删除,其他依此类推。
最后t所指的数组中的内容应是"246"。
注意:请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入
你编写的若干语句。
-------------------------------------------------------*/
#include <stdio.h>
#include <string.h>
void wwjt ( );
void fun(char *s, char t[])
{
/**********Program**********/
/********** End **********/
}
main()
{
char s[100], t[100];
printf("\nPlease enter string S:");
scanf("%s", s);
fun(s, t);
printf("\nThe result is: %s\n", t);
wwjt();
}
void wwjt ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
char s[100], t[100] ;
FILE *in, *out ;
int i ;
in=fopen("in.dat","r");
if(in==NULL)
{
printf("Please Verify The Currernt Dir..It May Be Changed");
}
out=fopen("out.dat","w");
if(out==NULL)
{
printf("Please Verify The Current Dir.. It May Be Changed");
}
for(i = 0 ; i < 10 ; i++)
{
fscanf(in, "%s", s) ;
fun(s, t) ;
fprintf(out, "%s\n", t) ;
}
fclose(in) ;
fclose(out) ;
}
答案: int i,j=0;
for(i=0;s[i]!='\0';i++)
if(i%2==0 && s[i]%2==0)
t[j++]=s[i];
t[j]='\0';