C语言程序10题

第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;

  • 12
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值