第31题 (20.0分) 难度:易 第2章
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:把20个随机数存入一个数组,然后输出该数组中的
最小值。其中确定最小值的下标的操作在fun函数中
实现,请给出该函数的定义。
------------------------------------------------*/
#include <stdio.h>
#define VSIZE 20
void wwjt();
int vector[VSIZE] ;
int fun(int list[],int size)
{
/**********Program**********/
/********** End **********/
}
main()
{
int i;
for (i=0;i<VSIZE;i++)
{
vector[i]=rand();
printf("Vector[%d]=%6d\n",i,vector[i]);
}
i=fun(vector,VSIZE);
printf("\nMininum: Vector[%d]=%6d\n",i,vector[i]);
wwjt();
}
void wwjt()
{
int i,t;
FILE *fp ;
fp = fopen("out.dat", "w") ;
for (i=0;i<VSIZE;i++)
{
fprintf(fp,"Vector[%d]=%6d\n",i,vector[i]);
}
t=fun(vector,VSIZE);
fprintf(fp,"\nMininum: Vector[%d]=%6d\n",t,vector[t]);
fclose(fp) ;
}
答案:----------------------
int i,min=0;
for(i=1; i <size; i++)
if(list[min]>list[i])
min=i;
return min;
----------------------
第32题 (20.0分) 难度:中 第1章
/*-------------------------------------------------------
【程序设计】
---------------------------------------------------------
题目:从键盘输入10个学生的成绩,统计及格(60分及其60分
以上)的人数。请编fun函数。
-------------------------------------------------------*/
#include "stdio.h"
void wwjt();
int fun (int a[])
{
/**********Program**********/
/********** End **********/
}
void main()
{
int a[10], i, s;
for(i = 0; i < 10; i ++)
scanf("%d", &a[i]);
s=fun(a);
printf("%d", s);
wwjt();
}
void wwjt()
{
FILE *IN, *OUT;
int iIN[10], i;
int iOUT, iCOUNT;
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 < 5; i ++)
{
for(iCOUNT = 0; iCOUNT < 10; iCOUNT++)
fscanf(IN,"%d", &iIN[iCOUNT]);
iOUT=fun(iIN);
fprintf(OUT,"%d\n",iOUT);
}
fclose(IN);
fclose(OUT);
}
答案: int i, count = 0;
for(i = 0; i < 10; i ++)
if(a[i] >= 60)
count ++;
return count ;
第33题 (20.0分) 难度:中 第1章
/*-------------------------------------------------------
【程序设计】
---------------------------------------------------------
题目:学生记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组中,请
编写函数fun,其功能是:把分数最低的学生数据放入b所指的数组中,注意:分数
最低的学生可能不止一个,函数返回分数最低的学生人数。
注意:请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入
你编写的若干语句。
-------------------------------------------------------*/
#include <stdio.h>
#define N 16
void wwjt ();
typedef struct
{
char num[10];
int s;
} STREC;
int fun( STREC *a, STREC *b )
{
/**********Program**********/
/********** End **********/
}
void main()
{
STREC s[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},
{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},
{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},
{"GA011",91},{"GA017",64},{"GA018",64},{"GA016",72}};
STREC h[N];
int i,n;
n=fun( s,h );
printf("The %d lowest score :\n",n);
for(i=0;i<n; i++)
printf("%s %4d\n",h[i].num,h[i].s);
printf("\n");
wwjt ( );
}
void wwjt ( )
{
FILE *in,*out ;
int i,n,a;
STREC s[N];
STREC h[N];
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(a=0;a<10;a++)
{
for(i=0;i<16;i++)
{
fscanf(in,"%s %d",&s[i].num,&s[i].s);
}
n=fun( s,h );
fprintf(out, "%d\n",n);
for(i=0;i<n; i++)
fprintf(out, "%4d\n",h[i].s);
}
fclose(in);
fclose(out);
}
答案: int i,j=0,min=a[0].s;
for(i=0;i<N;i++)
if(min>a[i].s)
min=a[i].s; /*找出最小值*/
for(i=0;i<N;i++)
if(min==a[i].s)
b[j++]=a[i]; /*找出成绩与min相等的学生的记录,存入结构体b中*/
return j;
第34题 (20.0分) 难度:中 第1章
/*-------------------------------------------------------
【程序设计】
---------------------------------------------------------
题目:学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中。
请编写函数fun,其功能是:把指定分数范围内的学生数据放在b所指的数组中,分
数范围内的学生人数由函数值返回。
例如:输入的分数是60、69,则应当把分数在60~69的学生数据输出,包含60分和69分的学
生数据。主函数中把60放在low中,把69放在heigh中。
注意:请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入
你编写的若干语句。
-------------------------------------------------------*/
#include <stdio.h>
#define N 16
void wwjt();
typedef struct
{
char num[10];
int s;
} STREC;
int fun( STREC *a,STREC *b,int l, int h )
{
/**********Program**********/
/********** End **********/
}
main()
{
STREC s[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},
{"GA001",96},{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85},{"GA013",94},{"GA012",64},{"GA014",91},
{"GA011",90},{"GA017",64},{"GA018",64},{"GA016",72}};
STREC h[N];
int i,n,low,heigh,t;
printf("Enter 2 integer number low & heigh : ");
scanf("%d%d", &low,&heigh);
if ( heigh< low )
{
t=heigh;
heigh=low;
low=t;
}
n=fun( s,h,low,heigh );
printf("The student's data between %d--%d :\n",low,heigh);
for(i=0;i<n; i++)
printf("%s %4d\n",h[i].num,h[i].s);
printf("\n");
wwjt();
}
void wwjt()
{
FILE *in, *out ;
STREC s[N],h[N];
int i,j,n;
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(j=0;j<10;j++)
{
for(i=0;i<16;i++)
{
fscanf(in,"%s %d",&s[i].num,&s[i].s);
}
n=fun( s,h,80,98 );
fprintf(out,"%d\n",n);
}
fclose(in);
fclose(out);
}
答案: int i,j=0;
for(i=0;i<N;i++)
if(a[i].s>=l&&a[i].s<=h)
b[j++]=a[i];
return j;
第35题 (20.0分) 难度:中 第2章
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:编写函数fun其功能是:根据整型形参m,计算如下
公式的值:y=1/2!+1/4!+…+1/m!(m是偶数)
------------------------------------------------*/
#include <stdio.h>
void wwjt();
double fun(int m)
{
/**********Program**********/
/********** End **********/
}
main()
{
int n;
printf("Enter n: ");
scanf("%d", &n);
printf("\nThe result is %1f\n", fun(n));
wwjt();
}
void wwjt()
{
FILE *IN,*OUT;
int t;
double o;
int c;
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(c=1;c<=5;c++)
{
fscanf(IN,"%d",&t);
o=fun(t);
fprintf(OUT,"%f\n",o);
}
fclose(IN);
fclose(OUT);
}
答案:double y=0.0;
int i,j;
double s=1;
for (i=2;i<=m;i+=2)
{
for(j=i-1;j<=i;j++)
s=s*j;
y=y+1.0/s;
}
return y;
第36题 (20.0分) 难度:易 第2章
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:从键盘上输入任意实数,求出其所对应的函数值。
z=e的x次幂(x>10)
z=log(x+3) (x>-3)
z=sin(x)/((cos(x)+4)
------------------------------------------------*/
#include <math.h>
#include<stdio.h>
void wwjt();
double y(float x)
{
/**********Program**********/
/********** End **********/
}
main()
{
float x;
scanf("%f",&x);
printf("y=%f\n",y(x));
wwjt();
}
void wwjt()
{
FILE *IN,*OUT;
int n;
float i;
double 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=y(i);
fprintf(OUT,"%ld\n",o);
}
fclose(IN);
fclose(OUT);
}
答案:----------------------
double z;
if(x>10) z=exp(x);
else if(x>-3) z=log(x+3);
else z=sin(x)/(cos(x)+4);
return(z);
----------------------
第37题 (20.0分) 难度:中 第2章
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:将两个两位数的正整数a、b合并形成一个整数放在c
中。合并的方式是:将a数的十位和个位数依次放在
c数的千位和十位上, b数的十位和个位数依次放在
c数的个位和百位上。
例如:当a=45,b=12。调用该函数后,c=4251。
------------------------------------------------*/
#include <stdio.h>
void wwjt();
void fun(int a, int b, long *c)
{
/**********Program**********/
/********** End **********/
}
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 *rf, *wf ;
int i, a,b ;
long c ;
rf = fopen("in.dat", "r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++)
{
fscanf(rf, "%d,%d", &a, &b) ;
fun(a, b, &c) ;
fprintf(wf, "a=%d,b=%d,c=%ld\n", a, b, c) ;
}
fclose(rf) ;
fclose(wf) ;
}
答案:----------------------
*c=a/10*1000+a%10*10+b/10+b%10*100;
----------------------
第38题 (20.0分) 难度:中 第1章
/*-------------------------------------------------------
【程序设计】
---------------------------------------------------------
题目:编写函数fun,其功能是:将s所指字符串中除了下标为奇数同时ASCII值也为奇数
的字符之外,其余的所有字符全部删除,串中剩余字符所形成的一个新串放在t所
指的数组中。
例如:若s所指字符串的内容为:"ABCDEFG12345",其中字符A的ASCII码值为奇数,但所
在元素的下标为偶数,因此需要删除;而字符1的ASCII码值为奇数,所在数组中的
下标也为奇数,因此不应当删除,其它依此类推。
最后t所指数组中的内容应为:"135"。
注意:请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入
你编写的若干语句。
-------------------------------------------------------*/
#include <stdio.h>
#include <string.h>
void wwjt ( );
void fun(char *s, char t[])
{
/**********Program**********/
/********** End **********/
}
void 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 ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *in, *out ;
char s[100], t[100] ;
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,n;
n=strlen(s);
for(i=0;i<n;i++)
if(i%2!=0&&s[i]%2!=0)
{
t[j]=s[i];
j++;
}
t[j]='\0';
第39题 (20.0分) 难度:中 第1章
/*-------------------------------------------------------
【程序设计】
---------------------------------------------------------
题目:请编写函数fun,该函数的功能是:统计各年龄段的人数。N个年龄通过调用随机
函数获得,并放入主函数的age数组中。
要求函数把0~9岁年龄段的人数放在d[0]中,把10~19岁年龄段的人数放在d[1]中,
把20~29岁年龄段的人数放在d[2]中,依此类推,把100岁(含100岁)以上年龄的人
数都放在d[10]中。结果在主函数中输出。
注意:请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入
你编写的若干语句。
-------------------------------------------------------*/
#include <stdio.h>
#include <string.h>
#define N 80
void wwjt();
int fun(char *str)
{
/**********Program**********/
/********** End **********/
}
void main()
{
char s[N];
printf("Enter a string : ");
gets(s);
printf("\n\n");
puts(s);
if(fun(s))
printf("YES\n");
else
printf("NO\n");
wwjt();
}
void wwjt()
{
FILE *in, *out;
char c[N][N];
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<5;i++ )
{
fscanf(in,"%s",&c[i]);
if(fun(c[i]))
fprintf(out,"YES\n");
else
fprintf(out,"NO\n");
}
fclose(in);
fclose(out);
}
答案: int i,n=0,fg=1;
char *p=str;
while (*p)
{
n++;
p++;
}
for(i=0;i<n/2;i++)
if(str[i]==str[n-1-i]) ;
else
{
fg=0;
break;
}
return fg;
第40题 (20.0分) 难度:中 第94章
/*-------------------------------------------------------
【程序设计】
---------------------------------------------------------
题目:编一个程序,输入x的值,按如图所示公式计算并输出y值:
-------------------------------------------------------*/
#include <stdio.h>
void wwjt();
float fun(float x)
{
/**********Program**********/
/********** End **********/
return y;
}
void main( )
{
float x ;
printf("输入数 x: \n");
scanf("%f", &x);
printf("y=%f\n",fun(x) ) ;
wwjt();
}
void wwjt()
{
FILE *IN,*OUT;
int j;
float a;
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(j=0;j<3;j++)
{
fscanf(IN,"%f",&a);
fprintf(OUT,"%f\n",fun(a));
}
fclose(IN);
fclose(OUT);
}
答案: float y ;
if (x<=1) y=x;
else if (x<10)
y=2*x-1;
else
y=3*x -11;