C语言程序10题

第50题 (20.0分)           难度:中        第95章

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

【程序设计】

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

题目:编程序,输入两个字符串a,b(<40个字符),将两者连接后输出c(不能用strcat库函数)。

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

#include <stdio.h>

#include <string.h>

  void main( )

   {

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

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

   }

答案:      char  a[40], b[40], c[80];

      int  i, j;

      printf("分二行输入两个字符串: \n");

      gets(a);  gets(b);

      for( i=0; a[i]!='\0'; i++)  c[i]=a[i];

      for( j=0; b[j]!='\0'; j++)  c[i+j]=b[j];  

      c[i+j]='\0';

      puts(c);

第51题 (20.0分)             难度:难        第2章

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

【程序设计】

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

功能:编写函数用冒泡排序法对数组中的数据进行从小到

      大的排序。

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

#include <stdlib.h>

#include<stdio.h>

void  wwjt();

void sort(int a[],int n)

{

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

  

  

  

  

  

  

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

}

main()

{

  int a[16],i;

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

    a[i]=random(30)+15;

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

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

  printf("\n-------------------\n");

  sort(a,16);

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

    printf("%3d",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]);

  }

  sort(i,10);

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

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

  fclose(IN);

  fclose(OUT);

}

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

int i,j,t;

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

   for(j=0;j<n-1-i;j++)

     if(a[j]>a[j+1])

       {t=a[j];

    a[j]=a[j+1];

    a[j+1]=t;

    }

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

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

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

【程序设计】

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

题目:从键盘输入实数x,按照如图片所示的公式计算并输出y值:

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

#include <stdio.h>

#include<math.h>

main()

{  

   double x,y;

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

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

   printf("y=%f\n",y);

}

答案:   scanf("%f",&x);

   if(x>7)

     y=2+sqrt(x);

   else if(x>=-7)

           y=5+3*x;

        else

           y=3*x*x;

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

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

【程序设计】

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

题目:m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分

      的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。

例如:当score数组中的数据为10、20、30、40、50、60、70、80、90时,函数返回的

      人数应该是4,below中的数据应为10、20、30、40。

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

      你编写的若干语句。

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

#include <conio.h>

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

void wwjt();

int fun(int score[],int m, int below[])

{

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

                                                                       

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

}

void main()

{

        

        int i, n, below[9];

        int score[9]={10,20,30,40,50,60,70,80,90};

        system("CLS");

        n=fun(score, 9, below);

        printf("\nBelow the average score are: ");

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

                printf("% d",below[i]);

        wwjt();

}

void wwjt()

{

        FILE *in, *out;

        int i, n, below[9], score[9];

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

        {

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

        }

        n=fun(score, 9, below);

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

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

        fclose(in);

        fclose(out);

}

答案: int i,j=0;

float av=0.0;

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

av=av+score[i]/m;                                                                 

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

if(score[i]<av)                                   

below[j++]=score[i];

return j;  

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

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

【程序设计】

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

功能:找出一批正整数中的最大的偶数。

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

#include <stdio.h>

void  wwjt();

    

int fun(int a[],int n)

{

  

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

  

  

  

  

  

  

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

  

}

main()

{

  int a[]={1,2,9,24,35,18},k;

  k=fun(a,6);

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

  wwjt();

}

void wwjt()

{

  FILE *IN,*OUT;

  int iIN[10],iOUT,i,j;

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

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

    iOUT=fun(iIN,10);

  }

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

  

  fclose(IN);

  fclose(OUT);

}

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

int i,amax=-1;

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

     if(a[i]%2==0)

      if (a[i]>amax) amax=a[i];

     return amax;

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

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

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

【程序设计】

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

功能:请编一个函数void fun(int tt[M][N],int pp[N]),

      tt指向一个M行N列的二维数组,求出二维数组每列

      中最大元素,并依次放入pp所指一维数组中。二维

      数组中的数已在主函数中赋予。

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

#include<conio.h>

#include<stdio.h>

#define M 3

#define N 4

void  wwjt();

  

void fun(int tt[M][N],int pp[N])

{

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

  

  

  

  

  

  

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

}

main()

{

  int t[M][N]={{22,45,56,30},

  {19,33,45,38},

  {20,22,66,40}};

  int p[N],i,j,k;

  printf("The original data is:\n");

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

  {

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

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

    printf("\n");

  }

  fun(t,p);

  printf("\nThe result is:\n");

  for(k=0;k<N;k++) printf("%4d",p[k]);

  printf("\n");

  wwjt();

}

void wwjt()     

{     

  int i,j, array[3][4],p[4];

  FILE *rf, *wf ;     

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

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

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

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

      fscanf(rf, "%d", &array[i][j]);     

    fun(array,p);

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

    {

      fprintf(wf, "%7d", p[j]);

      fprintf(wf, "\n");     

    }     

    fclose(rf) ;     

    fclose(wf) ;     

}

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

 int i,j;

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

    {

     pp[j]=tt[0][j];

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

     if(tt[i][j]>pp[j])

       pp[j]=tt[i][j];

       }

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

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

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

【程序设计】

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

请编写一个函数int fun(int *s,int t,int *k),用来求出

数组的最小元素在数组中的下标并存放在k所指的存储单元中。

例如,输入如下整数:

234 345 753 134 436 458 100 321 135 760则输出结果为6,100。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数

fun的花括号中填入所编写的若干语句。

试题程序:

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

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

int fun(int *s, int t, int *k)

{

    int i;

    *k=0;

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

   

        

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

}

void main()

{

    FILE *wf;

    int a[10] = {234, 345, 753, 134, 436, 458, 100, 321, 135, 760}, k;

    system("CLS");

    fun(a, 10, &k);

    printf("%d, %d\n ", k, a[k]);

    wf=fopen("out.txt", "w");

    fprintf(wf, "%d, %d", k, a[k]);

    fclose(wf);

}

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

        if(s[*k] > s[i])

            *k = i;   

     return s[*k];

第57题 (20.0分)        题号:275        难度:中        第1章

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

【程序设计】

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

  题目:C语言编程题实现以下功能:

  1) 从键盘输入10个学生的成绩,计算平均成绩ave

  2) 统计及格人数pass,计算高于平均分的学生的人数better

  3) 将10个学生成绩排名。

  

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

#include "stdio.h"

#define N 10

void main()

{

        int i,j,a[N],ave,sum=0,pass=0,better=0,t;

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

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

        printf("平均分:%d\n及格人数%d\n高于平均分人数%d\n",ave,pass,better);

}

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

        {

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

                sum+=a[i];

        }

        ave=sum/N;

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

        {

                if(a[i]>=60)

                        pass++;

                if(a[i]>ave)

                        better++;

        }

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

                for(j=i+1;j<N;j++)

                {

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

                        {

                                t=a[i];

                                a[i]=a[j];

                                a[j]=t;

                        }

                }

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

                {

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

                }

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

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

【程序设计】

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

题目:编写函数fun,其功能是:求ss所指字符串中指定字符的个数,并返回此值。

例如:若输入字符串123412132,输入字符为1,则输出3。

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

      你编写的若干语句。

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

#include <stdio.h>

#include <string.h>

#define  M 81

void wwjt (  );

int fun(char *ss, char c)

{

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

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

}

main()

{

        char  a[M], ch;

        printf("\nPlease enter a string:");

        gets(a);

        printf("\nPlease enter a char:");

        ch = getchar();

        printf("\nThe number of the char is: %d\n", fun(a, ch));

        wwjt ( );

}

void wwjt ( )

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

        int i ;

        FILE *in, *out ;

        char a[M], b[M], ch ;

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

                fscanf(in, "%s", b) ;

                ch = *b ;

                fprintf(out, "%c=%d\n", ch, fun(a, ch)) ;

        }

        fclose(in) ;

        fclose(out) ;

}

答案: int i=0;

for(;*ss!='\0';ss++)

if(*ss==c)

i++;

return i;

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

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

【程序设计】

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

题目:对从键盘输入的10个整数进行降序排序;

      排序后输出第2大的数,请编fun函数。

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

#include "stdio.h"

void wwjt();

int fun(int a[])

{

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

        

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

}

void main()

{  

    int a[10],i,m;

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

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

    m=fun(a);

    printf("%d ",m);

    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,j,t;

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

        for(j=0;j<9-i;j++)

            if (a[j]<a[j+1] )

            {

                t=a[j];

                a[j]=a[j+1];

                a[j+1]=t;

            }

     return a[1];

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

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

【程序设计】

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

题目:请编写一个函数fun,它的功能是:计算并输出给定整数n的所有因子

      (不包括1与自身)之和。规定n的值不大于1000。

例如:若主函数从键盘给n输入的值为856,则输出为sum=763。

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

      所编写的若干语句。

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

#include  <stdio.h>

void wwjt();

int fun(int n)

{

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

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

}

void main()

{

        int  n,sum;

        printf("Input  n:");

        scanf("%d", &n);

        sum=fun(n);

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

        wwjt();

}

void wwjt()

{

        FILE *in, *out;

        int i, n, sum;

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

                sum=fun(n);

                fprintf(out,"%d\n",sum);

        }

        fclose(in);

        fclose(out);

}

答案: int s=0,i;

for(i=2;i<=n-1;i++)                                                                  /*将n减1累加*/

if(n%i==0)

s+=i;

return s;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值