C语言程序10题

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

  • 16
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值