C语言程序10题

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

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

【程序设计】

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

题目:请编写函数fun,其功能是:将一个数字字符串转换为一个整数(不得调用C语言提供

      的将字符串转换为整数的函数)。

例如:若输入字符串"-1234",则函数把它转换为整数值-1234。

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

      你编写的若干语句。

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

#include <stdio.h>

#include <string.h>

void wwjt ( );

long  fun ( char *p)

{

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

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

}

main()   /* 主函数 */

{

        char s[6];

        long n;

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

        gets(s);

        n = fun(s);

        printf("%ld\n",n);

        wwjt (  );

}

void wwjt( )

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

        FILE *in, *out ;

        int i ;

        char s[20] ;

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

        {

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

                n = fun(s);

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

        }

        fclose(in) ;

        fclose(out) ;

}

答案: long n=0;

int flag=1;

if(*p=='-')         /*负数时置flag为-1*/

{

p++;flag= -1;

}

else if(*p=='+')       /*正数时置flag为1*/

p++;

while(*p!='\0')     

{

n=n*10+*p-'0';    /*将字符串转成相应的整数*/

p++;

}

return n*flag;

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

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

【程序设计】

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

功能:删除所有值为y的元素。数组元素中的值和y的值由

      主函数通过键盘输入。

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

#include <stdio.h>

#include<conio.h>

#include<stdio.h>

#define M 20

void  wwjt();

  

void fun(int bb[],int *n,int y)

{

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

  

  

  

  

  

  

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

}

main()

{

  int aa[M],n,y,k;

  printf("\nPlease enter n:");scanf("%d",&n);

  printf("\nEnter %d positive number:\n",n);

  for(k=0;k<n;k++) scanf("%d",&aa[k]);

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

  for(k=0;k<n;k++) printf("%5d",aa[k]);

  printf("\nEnter a number to deletede:");scanf("%d",&y);

  fun(aa,&n,y);

  printf("The data after deleted %d:\n",y);

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

  printf("\n");

  wwjt();

}

void wwjt()

{

  FILE *IN,*OUT;

  int n;

  int i[10];

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

  {   

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

  }

  fun(i,&n,3);

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

  {   

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

  }

  fclose(IN);

  fclose(OUT);

}

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

 int i,j;

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

   {

    if(bb[i]==y)

       {for(j=i;j<*n;j++)

           bb[j]=bb[j+1];

         *n=*n-1;

          }

          else

           i++;

          }

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

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

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

【程序设计】

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

题目:请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。

      字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔

      开,一行的开始没有空格。

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

      所编写的若干语句。

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

#include <string.h>

#include <stdio.h>

#define N 80

void wwjt();

int fun(char *s)

{

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

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

}

void main()

{

        char line[N];

        int num=0;

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

        gets(line);

        num=fun(line);

        printf("The number of word is:%d\n\n ",num);

        wwjt();

}

void wwjt()

{

        FILE *in, *out;

        char line[N];

        int i,num=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++)

        {

                fgets(line,80,in);

                num=fun(line);

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

        }

        fclose(in);

        fclose(out);

}

答案: int i,j=0;

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

if(s[i]!=' '&&(s[i+1]==' '||s[i+1]=='\0'))   

j++;

return j;  

        

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

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

【程序设计】

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

题目:编写函数fun,它的功能是:求小于形参n同时能被3与7整除的所有自然数之和的

      平方根,并作为函数值返回。

例如:若n为1000时,程序输出应为:s=153.909064。

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

      你编写的若干语句。

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

#include <math.h>

#include <stdio.h>

void wwjt (  );

double  fun( int  n)

{

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

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

}

void main()   /* 主函数 */

{

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

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

}

答案: double sum=0.0;

int i;

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

if((i % 3==0) && (i % 7==0))

sum+=i;

return sqrt(sum) ;

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

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

【程序设计】

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

题目:任输入十个国家的名字,按由小到大排序。

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

#include  <stdio.h>

#include <string.h>

void main( )

{    

      char a[10][20],b[20]; //用来保存国家的名字 b表示中间变量

      int i,j;  //循环变量

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

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

      for (i=0;i<10;i++)   printf("%s\n",a[i]);

}

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

            gets(a[i]);

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

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

             if (strcmp(a[i],a[j])>0)

             {   strcpy(b,a[i]);  

                  strcpy(a[i],a[j]);

                  strcpy(a[j],b);

              }

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

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

【程序设计】

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

题目:编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非

      素数的个数通过k返回。

例如:若输入17,则应输出:4 6 8 9 10 12 14 15 16。

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

      你编写的若干语句。

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

#include <stdio.h>

void wwjt (  );

void fun( int m, int *k, int xx[] )

{

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

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

}

main()

{

        int m, n, zz[100];

        printf( "\nPlease enter an integer number between 10 and 100: " );

        scanf(  "%d", &n );

        fun( n, &m, zz );

        printf( "\n\nThere are %d non-prime numbers less than %d:", m, n );

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

                printf( "\n  %4d", zz[n] );

        wwjt();

}

void wwjt()

{        

        FILE *in, *out ;

        int m, n, zz[100];

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

        }

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

        fun( n, &m, zz );

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

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

                fprintf(out, "%d\n", zz[n] );

        fclose(in) ;

        fclose(out) ;

}

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

for(i=4;i<m;i++)  /*找出大于1小于整数m的非素数*/

{

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

if(i%j==0)

break;

if(j<i)

xx[n++]=i;

}

*k=n;    /*返回非素数的个数*/

第47题 (20.0分)           难度:中        第4章

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

【程序设计】

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

功能:对任意输入的 x,用下式计算并输出 y 的值。

            5      x<10

      y=    0      x=10

           -5      x>10

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

#include<stdio.h>

void wwjt();

int fun(int n)

{

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

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

  

}

void main ()

{

    int  x,y;

    printf("enter x:");

    scanf("%d",&x);

    y=fun(x);

    printf("x=%d,y=%d\n",x,y);

    wwjt();

}

void wwjt()

{

  FILE *IN,*OUT;

  int i;

  int iIN;

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

  {        

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

    iOUT=fun(iIN);

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

  }

  fclose(IN);

  fclose(OUT);

}

答案:    int m;

    if(n<10)

      m=5;

    else

      if(n==10) m=0;

    else m=-5;

return m;

   int m;

   if(n>=10)

      if(n>10)  

         m=-5;

      else m=0;

   else m=5;

return m;

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

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

【程序设计】

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

功能:编写函数fun求1!+2!+3!+ …… +n!的和,在main函

      数中由键盘输入n值,并输出运算结果。请编写fun

      函数。

例如:若n值为5,则结果为153。

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

    

#include<stdio.h>

void wwjt();

long int  fun(int n)

{

  

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

  

  

  

  

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

  

}

main()

{

  int n;

  long int result;

  scanf("%d",&n);

  result=fun(n);

  printf("%ld\n",result);

  wwjt();

}

void wwjt()

{

FILE *IN,*OUT;

  int i;

  int iIN;

  long 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,"%ld\n",iOUT);

  }

  fclose(IN);

  fclose(OUT);

}

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

int i;

float f=1,s=0;

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

 {f=f*i;

  s=s+f;}

 return s;

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

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

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

【程序设计】

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

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

      的*号之外,将字符中的其它的*号全部删除。形参p已指向字符串中最后的一个

      字母。在编写函数时,不得使用C语言提供的字符串函数。

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

      是ABCDEFG*******。

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

      你编写的若干语句。

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

#include <stdio.h>

void wwjt (  );

void  fun( char *a, char *p )

{

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

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

}

void main()

{

        char s[81],*t;

   

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

        gets(s);

        t=s;

        while(*t)

                t++;

        t--;

        while(*t=='*')

                t--;

        fun( s , t );

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

        puts(s);

        wwjt( );

}

void wwjt( )

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

        FILE *in, *out ;

        int i ; char s[81],*t ;

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

                t=s;

                while(*t)

                        t++;

                t--;

                while(*t=='*')

                        t--;

                fun(s,t) ;

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

        }

        fclose(in) ;

        fclose(out) ;

}

答案: char *t=a;

for(;t<=p;t++)

if(*t!='*')

*(a++)=*t;

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

*(a++)=*t;

*a='\0';

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值