C语言程序10题

发布于:2024-04-19 ⋅ 阅读:(24) ⋅ 点赞:(0)

第70题 (20.0分)         难度:中        第1章

/*-------------------------------------------------------

【程序设计】

---------------------------------------------------------

题目:下列程序定义了N×N的二维数组,并在主函数中赋值。请编写函数fun,函数的

      功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的s。

例如:若a 数组中的值为: 0 1 2 7 9                     

                         1 9 7 4 5               

                         2 3 8 3 1              

                         4 5 6 8 2               

                         5 9 1 4 1

      则返回主程序后s的值应为3.375。

注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入

      所编写的若干语句。

-------------------------------------------------------*/

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#define  N  5

void wwjt();

double fun (int w[][N])

{

        /**********Program**********/

        /**********  End  **********/

}

void main()

{

        int a[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1};

        int i, j;

        double s;

        system("CLS");

        printf("*****The array*****\n ");

        for (i=0; i<N; i++)

        {

                for (j=0;j<N;j++)

                {

                        printf("%4d ",a[i][j]);

                }

                printf("\n ");

        }

        s=fun(a);

        printf("*****THE RESULT*****\n ");

        printf("The sum is : %lf\n ",s);

        wwjt();

}

void wwjt()

{

        FILE *in, *out;

        int a[N][N];

        int i, j;

        double s;

        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<N; i++)

        {

                for (j=0;j<N;j++)

                {

                        fscanf(in,"%d",&a[i][j]);

                }

        

        }

        s=fun(a);

        fprintf (out,"%lf\n",s);

        fclose(in);

        fclose(out);

}

答案: int i,j,k=0;

double av=0.0;

for(i=0;i<N;i++)    

for(j=0;j<N;j++)

if(i==0||i==N-1||j==0||j==N-1)             

{

av=av+w[i][j];                                                              

k++;

}

return av/k;

第71题 (20.0分)        难度:中        第2章

/*------------------------------------------------

【程序设计】

--------------------------------------------------

功能:若x、y为奇数,求x到y之间的奇数和;若x、y为偶

      数,则求x到y之间的偶数和。

------------------------------------------------*/

#include <stdio.h>

void  wwjt();

int fun(int x,int y)

{

  /**********Program**********/

  

  

  

  

  

  

  /**********  End  **********/

}

main()

{

  int s;

  s=fun(1,1999)-fun(2,1998);

  printf("s=%d\n",s);

  wwjt();

}

void wwjt()

{

  FILE *IN,*OUT;

  int n;

  int i[2];

  int 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<2;n++)

  {    

    fscanf(IN,"%d",&i[n]);

  }

  o = fun(i[0],i[1]);

  fprintf(OUT,"%d\n",o);

  fclose(IN);

  fclose(OUT);

}

答案:----------------------

  int i,s=0;

  for(i=x;i<=y;i+=2)

     s=s+i;

  return s;

----------------------

第72题 (20.0分)            难度:中        第1章

/*-------------------------------------------------------

【程序设计】

---------------------------------------------------------

题目:规定输入的字符串中只包含字母和*号。请编写函数fun,其功能

      是:将字符串尾部的*号全部删除,前面和中间的*号不动。

例如:字符串中的内容为:"****A*BC*DEF*G*******",删除后,字符串中的内容

      应当是:"****A*BC*DEF*G"。在编写函数时,不得使用C语言提供的字符串

      函数。

注意:请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入

      你编写的若干语句。

-------------------------------------------------------*/

#include <stdio.h>

void wwjt ( );

void  fun( char *a )

{

        /**********Program**********/

        /**********  End  **********/

}

main()

{  

        char  s[81];

        printf("Enter a string:\n");

        gets(s);

        fun( s );

        printf("The string after deleted:\n");

        puts(s);

        wwjt( );

}

void wwjt ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */

        FILE *in, *out ;

        int i ; char s[81] ;

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

                fprintf(out, "%s\n", s) ;    

        }

        fclose(in) ;

        fclose(out) ;

}

答案: while(*a!='\0')

a++;

a--;

while(*a=='*')

a--;

*(a+1)='\0';

第73题 (20.0分)            难度:易        第2章

/*------------------------------------------------

【程序设计】

--------------------------------------------------

功能:编写函数fun将一个数组中的值按逆序存放,并在

      main()函数中输出。

例如:原来存顺序为8,6,5,4,1。要求改为:1,4,5,6,8。

------------------------------------------------*/

#include <stdio.h>

#define N 5

void  wwjt();

void  fun(int arr[],int n)

{

  /**********Program**********/

  

  

  

  

  

  

  /**********  End  **********/

  

}

main()

{

  int a[N]={8,6,5,4,1},i;

  for(i=0;i<N;i++)

    printf("%4d",a[i]);

  printf("\n");

  fun(a,N);

  for(i=0;i<N;i++)

    printf("%4d",a[i]);

  wwjt();

}

void wwjt()

{

  FILE *IN,*OUT;

  int n;

  int i[10];

  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,"%d",&i[n]);

  }

  fun(i,10);

  for(n=0;n<10;n++)

  {    

    fprintf(OUT,"%d\n",i[n]);

  }

  fclose(IN);

  fclose(OUT);

}

答案:----------------------

int i,t;

 for(i=0;i<n/2;i++)

  { t=arr[i];

    arr[i]=arr[n-1-i];

    arr[n-1-i]=t;

  }

----------------------

第74题 (20.0分)           难度:中        第2章

/*------------------------------------------------

【程序设计】

--------------------------------------------------

功能:找出一个大于给定整数且紧随这个整数的素数,并

      作为函数值返回。

------------------------------------------------*/

#include <stdio.h>

#include"conio.h"

void  wwjt();

  

int fun(int n)

{

  /**********Program**********/

  

  

  

  

  

  

  /**********  End  **********/

  

}

main()   

{

  int  m;

  printf("Enter m: ");

  scanf("%d", &m);

  printf("\nThe result is %d\n", fun(m));

  wwjt();

}   

void wwjt()

{

  FILE *IN,*OUT;

  int s ;

  int t;

  int 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(s=1;s<=5;s++)

  {

    fscanf(IN,"%d",&t);

    o=fun(t);

    fprintf(OUT,"%d\n",o);

  }

  fclose(IN);

  fclose(OUT);

}

答案:----------------------

int i,k;

for(i=n+1;;i++){

for(k=2;k<i;k++)

if(i%k==0)

break;

if(k==i)

return(i);

    }

----------------------

第75题 (20.0分)         难度:中        第1章

/*-------------------------------------------------------

【程序设计】

---------------------------------------------------------

题目:编写函数fun,其功能是:利用如样张所示的简单迭代方法求方程cos(x)-x=0的

      一个实根。  

      迭代步骤如下:    

             (1)取x1初值为0.0;   

             (2)x0=x1,将x1的值赋给x0;  

             (3)x1=cos(x0),求出一个新的x1;   

             (4)若x0-x1的绝对值小于0.000001,执行步聚(5),否则执行步聚(2);

             (5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。

    

      程序将输出结果Root=0.739086。

注意:请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号填入

      你编写的若干语句。

-------------------------------------------------------*/

#include <math.h>

#include <stdio.h>

void wwjt (  );

double fun()

{

        /**********Program**********/

        /**********  End  **********/

}

main()

{

   

        printf("Root =%f\n", fun());

        wwjt();

}

void wwjt (  )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */

        FILE *out ;

        out = fopen("out.dat","w") ;

        fprintf(out, "%f\n", fun()) ;

        fclose(out) ;

}

答案: double x0,x1;

x1=0.0;

do

{

x0=x1;

x1=cos(x0);

}

while(fabs(x0-x1)>=1e-6);

return x1;

第76题 (20.0分)          难度:中        第2章

/*------------------------------------------------

【程序设计】

--------------------------------------------------

功能:判断m是否为素数。

------------------------------------------------*/

#include "stdio.h"

void wwjt();

  

int fun(int m)

{

  

  /**********Program**********/

  

  /**********  End  **********/

  

}

main()

{

  int m,k=0;

  for(m=100;m<200;m++)

    if(fun(m))

    {

      printf("%4d",m);

      k++;

      if(k%5==0)

        printf("\n");

    }

    printf("k=%d\n",k);

    wwjt();

}

void wwjt()

{

  FILE *IN,*OUT;

  int iIN,iOUT,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,"%d",&iIN);

    iOUT=fun(iIN);

    fprintf(OUT,"%d\n",iOUT);

  }

  fclose(IN);

  fclose(OUT);

}

答案:----------------------

int i,k=1;

    if(m<=1) k=0;

    for(i=2;i<m;i++)

     if(m%i==0) k=0;

    return k;

----------------------

第77题 (20.0分)         难度:中        第2章

/*------------------------------------------------

【程序设计】

--------------------------------------------------

功能:调用函数fun判断一个三位数是否"水仙花数"。

      在main函数中从键盘输入一个三位数,并输

      出判断结果。请编写fun函数。

说明:所谓"水仙花数"是指一3位数,其各位数字立方和

      等于该数本身。

例如:153是一个水仙花数,因为153=1+125+27。

------------------------------------------------*/

#include <stdio.h>

void wwjt();

   

int fun(int n)

{

  

  /**********Program**********/

  

  

  

  

  

  

  /**********  End  **********/

  

  

}

main()

{

  int n,flag;

  scanf("%d",&n);

  flag=fun(n);

  if(flag)

    printf("%d 是水仙花数\n",n);

  else

    printf("%d 不是水仙花数\n",n);

  wwjt();

}

void wwjt()

{

  FILE *IN,*OUT;

  int iIN,i;

  int iOUT;

  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",&iIN);

    iOUT=fun(iIN);

    fprintf(OUT,"%d\n",iOUT);

  }

  fclose(IN);

  fclose(OUT);

}

答案:----------------------

int bw,sw,gw;

bw=n/100;sw=(n-bw*100)/10;gw=n%10;

 if(n==bw*bw*bw+sw*sw*sw+gw*gw*gw) return 1;

 else return 0;

----------------------

第78题 (20.0分)       难度:中        第93章

/*-------------------------------------------------------

【程序设计】

---------------------------------------------------------

题目:编写一个C程序,定义一个日期结构变量date(由年year、月month、日day3个整型数据组成),

      从键盘为该变量中的各成员输入数据,然后再将输入的日期显示出来。

-------------------------------------------------------*/

#include <stdio.h>

void main()

{  

/**********Program**********/

/**********  End  **********/

}

答案:    struct  DATE

{

int  year;

int month;

int day;

} ;

struct  DATE date;

printf("please  input:");

scanf("%d%d%d", &date.year, &date.month, &date.day);

printf("please  output: ");

printf("%d-%d-%d\n", date.year, date.month, date.day);

第79题 (20.0分)           难度:易        第2章

/*------------------------------------------------

【程序设计】

--------------------------------------------------

功能:求1到100之间的偶数之积。

------------------------------------------------*/

    

#include <stdio.h>

void  wwjt();

    

double  fun(int m)

{

  

  /**********Program**********/

  

  

  

  

  

  

  /**********  End  **********/

  

}

main()

{

  printf("ji=%f\n",fun(100));

  wwjt();

}

void wwjt()

{

  FILE *IN,*OUT;

  int iIN,i;

  double dOUT;

  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,"%d",&iIN);

    dOUT=fun(iIN);

    fprintf(OUT,"%f\n",dOUT);

  }

  fclose(IN);

  fclose(OUT);

}

答案:----------------------

double   y=1;

    int i;

    for(i=1;i<=m;i++)

     if(i%2==0)y*=i;

     return y;

----------------------

第80题 (20.0分)        难度:中        第92章

/*-------------------------------------------------------

【程序设计】

---------------------------------------------------------

题目:编程序按如图片所示公式计算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);