C语言程序10题

第101题 (20.0分) 

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

【程序设计】

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

题目:对于一个如图片1所示4乘3的矩阵a,找出其中最大值max及该值所在位置(m,n)。

      从键盘输入:12 23  34  2  4   6  7  8   9  1  43  5

      则输出:max=43

              行号=3     列号=1

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

#include<stdio.h>

void wwjt();

main()

{

    int  a[4][3], i,j, max, m,n;

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

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

    wwjt(max,m,n);

}

void wwjt(int max,int m, int n)

{

  FILE *IN,*OUT;

  int i,j,k;

  IN=fopen("in.dat","r");

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

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

  {

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

    fprintf(OUT,"%d\n",max+j);

    fprintf(OUT,"%d\n",m*j);

    fprintf(OUT,"%d\n",n*10-j);

  }

  

  fclose(IN);

  fclose(OUT);

}

答案: for (i=0; i<4; i++)  

{

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

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

}

max = a[0][0];

m= n = 0;

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

{

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

   if (max<a[i][j])

    {

    max = a[i][j];

    m = i ;

          n=j ;

  }

   }

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

printf("行号=%d\t列号=%d\n",m,n);

第102题 (20.0分)   

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

【程序设计】

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

题目:请编写函数fun,该函数的功能是:将M行N列的二维数组中的数据,按行的顺序

      依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。

例如:若二维数组中的数据为:

                            33 33 33 33                

                            44 44 44 44                  

                            55 55 55 55

      则一维数组中的内容应该是:33 33 33 33 44 44 44 44 55 55 55 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 ;

        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(i=0; i<n; i++)  

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

        printf("\n\n");

        wwjt();

}

void wwjt()

{

        FILE *in, *out;

        int w[10][10], i, j;

        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<5;j++)  

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

                

    }

        fun(w,a,&n,3,5);

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

                fprintf(out,"%3d",a[i]);

        fclose(in);

        fclose(out);

}

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

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

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

b[k++]=s[i][j];

*n=k;   

第103题 (20.0分)      

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

【程序设计】

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

题目:请编写函数fun,它的功能是计算下列级数和,和值由函数值返回。

      如“样张”所示。

例如:当n=10,x=0.3时,函数值为1.349859。

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

      你编写的若干语句。

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

#include<conio.h>

#include<stdio.h>

#include<math.h>

#include<stdlib.h>

void wwjt();

double fun(double x, int n)

{

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

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

}

void main()

{

        system("CLS");

        printf("%f ",fun(0.3,10));

        wwjt();

}

void wwjt()

{

        FILE *in, *out;

        int i,n;

        double x, 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<6; i++)

        {

                fscanf(in,"%lf",&x);

                fscanf(in,"%d",&n);

                s=fun(x,n);

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

        }

        fclose(in);

        fclose(out);

}

答案: int i;

double s=1.0,s1=1.0;

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

{

s1=s1*i;                                                                              

s=s+pow(x,i)/s1;                                                                    

}

return s;

第104题 (20.0分)   

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

【程序设计】

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

题目:编写函数fun,其功能是计算:如"样张",s作为函数值返回。  

      在C语言中可调用log(n)函数求ln(n)。

      log函数的引用说明为:double log(double x)。

例如:若m的值为20,则fun函数值为6.506583。

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

      你编写的若干语句。

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

#include <math.h>

#include <stdio.h>

void wwjt (  );

double   fun(  int  m )

{

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

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

}

main()

{

   

        printf("%f\n", fun(20));

        wwjt( );

}

void wwjt (  )

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

        FILE *in, *out ;

        int i, n ;

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

        {

                fscanf(in, "%d", &n) ;

                s = fun(n) ;

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

        }

        fclose(in) ;

        fclose(out) ;

}

答案: int i;

double s=0.0;

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

s=s+log(i);  

return sqrt(s);

第105题 (20.0分)  

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

【程序设计】

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

题目:请编写一个函数,用来删除字符串中的所有空格。

例如:输入asd af aa z67,则输出为asdafaaz67。

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

      你编写的若干语句。

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

#include <stdio.h>

#include <ctype.h>

#include <conio.h>

#include <stdlib.h>

#include <string.h>

void wwjt();

void fun (char *str)

{

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

                                                                        

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

}

void main()

{

        char str[81];

        char Msg[]="Input a string:";

        printf(Msg);

        gets(str);

        puts(str);

        fun(str);

        printf("*** str: %s\n",str);

        wwjt();

}

void wwjt()

{

        FILE *in, *out;

        char s[81];

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

        {

                fgets(s,81,in);

                fun(s);

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

        }

        fclose(in);

        fclose(out);

}

答案: int i=0;

char *p=str;

while(*p)

{

if(*p!=' ')                                                                         

{

str[i]=*p;

i++;

}

p++;

}

str[i]='\0';   

第106题 (20.0分)  

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

【程序设计】

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

功能:在键盘上输入一个3行3列矩阵的各个元素的值(值

      为整数),然后输出矩阵第一行与第三行元素之和,

      并在fun()函数中输出。

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

#include <stdio.h>

void  wwjt();

void fun(int a[3][3])

{

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

  

  

  

  

  

  

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

  

}

main()

{

  int i,j,s,a[3][3];

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

  {

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

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

  }

  s=fun(a);

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

  wwjt();

}

void wwjt()

{

  FILE *IN,*OUT;

  int m;

  int n;

  int i[3][3];

  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(m=0;m<3;m++)

  {

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

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

  }

  o=fun(i);

  {   

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

    getch();

  }

  fclose(IN);

  fclose(OUT);

}

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

int sum;

int i,j;

sum=0;

for(i=0;i<3;i+=2)

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

 sum=sum+a[i][j];

 return sum;

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

第107题 (20.0分) 

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

【程序设计】

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

功能:产生20个[30,120]上的随机整数放入二维数组a[5][4]

      中,求每行元素的和。

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

#include "stdlib.h"

#include <stdio.h>

void  wwjt();

void row_sum(int a[5][4],int b[5])

{

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

  

  

  

  

  

  

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

}

main()

{

  void row_sum();

  int a[5][4],b[5],i,j;

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

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

      a[i][j]=random(120-30+1)+30;

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

    {

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

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

      printf("\n");

    }

    row_sum(a,b);

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

      printf("%6d",b[i]);

    printf("\n");

    wwjt();

}

void wwjt()

{

  FILE *IN,*OUT;

  int m,n;

  int i[5][4];

  int o[5];

  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(m=0;m<5;m++)

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

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

    row_sum(i,o);

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

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

    fclose(IN);

    fclose(OUT);

}

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

 int i,j;

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

    { b[i]=0;

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

        b[i]=b[i]+a[i][j];

      }

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

第108题 (20.0分)    

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

【程序设计】

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

功能:求一个大于10的n位整数的后n-1位的数,并作为函

      数值返回。

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

#include <stdio.h>

#include"conio.h"

void  wwjt();

  

int fun(int w)

{

  /**********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 c ;

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

  {

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

    o=fun(t);

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

  }

  fclose(IN);

  fclose(OUT);

}

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

int n=0;int i=1;

while(w>10)

{n=n+i*(w%10);

w/=10;

i*=10;}

return n;

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

第109题 (20.0分)

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

【程序设计】

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

功能:求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("23.IN","r");

  if(IN==NULL)

  {

    printf("Please Verify The Currernt Dir..it May Be Changed");

  }

  OUT=fopen("23.out","w");

  if(OUT==NULL)

  {

    printf("Please Verify The Current Dir.. it May Be Changed");

  }

  for(i=0;i<10;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;

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

第110题 (20.0分)

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

【程序设计】

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

题目:请编写函数fun,其功能是:找出一维整型数组元素中最大的值及其所在的下标,并

      通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的

      数据个数,max存放最大值,index存放最大值所在元素的下标。

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

      你编写的若干语句。

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

#include<stdlib.h>

#include<stdio.h>

#include<time.h>

void wwjt();

void fun(int a[],int n, int *max, int *d)

{

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

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

}

void main()

{

        int i, x[20], max,  index, n=10;

        srand((unsigned)time(NULL));

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

        {

                x[i]=rand()%50;

                printf("%4d",x[i]);    /*输出一个随机数组*/

        }

        printf("\n");

        fun(x,n,&max,&index);

        printf("Max=%5d,Index=%4d\n",max,index);

        wwjt ();

}

void wwjt()

{

        FILE *in,*out;

        int i,j ,max,  index, n=10;

        int y[20];

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

                {

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

                }

   

                fun(y,6,&max,&index);

                fprintf(out,"Max=%5d,Index=%4d\n",max,index);

        }

        fclose(in);

        fclose(out);

}

答案: int i;

*max=a[0];

*d=0;

for(i=0;i<n;i++)          /*将最大的元素放入指针max所指的单元,最大元素的下标放入指针d所指的单元*/

if(*max<a[i])

{

*max=a[i];

*d=i;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值