c语言复习题.docx

上传人:b****4 文档编号:24630042 上传时间:2023-05-29 格式:DOCX 页数:20 大小:21.73KB
下载 相关 举报
c语言复习题.docx_第1页
第1页 / 共20页
c语言复习题.docx_第2页
第2页 / 共20页
c语言复习题.docx_第3页
第3页 / 共20页
c语言复习题.docx_第4页
第4页 / 共20页
c语言复习题.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

c语言复习题.docx

《c语言复习题.docx》由会员分享,可在线阅读,更多相关《c语言复习题.docx(20页珍藏版)》请在冰豆网上搜索。

c语言复习题.docx

c语言复习题

∙1. 编写程序,输入一个正整数n,求以下算式的值。

要求定义和调用函数fact(k)计算k的阶乘,函数返回值的类型是double。

#include

doublefact(intk)

{   doublet=1;

    inti;

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

       t*=i;

    returnt;

}

voidmain()

{  inti,n;

   doubles=0;

   scanf(“%d〞,&n);

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

      s+=1/fact(i);

   printf(“%f\n〞,s);

}

2. 输入一个x,输出下面分段函数f(x)的值。

要求将分段函数的计算定义成函数。

     

#include

intf(doublex)  //函数定义

{   inty=0;

    if(x>0)

   y=1;

elseif(x==0)

   y=0;

else

   y=-1;

    returny;

}

voidmain()

{   doublex;

    inty;

    scanf(“%lf〞,&x);

    y=f(x);//函数调用

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

}

3. 输入一个正整数,输出该数的各个数字之和。

要求编写函数,计算整数的各个数字之和。

#include

intsum(inta)  

{  ints=0;

   while(a!

=0){

 s+=a%10;

 a=a/10;

}

  returns;

}

voidmain()

{  intx;

   scanf(“%d〞,&x);

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

}

4. 输入两个正整数a和n,求a+aa+aaa+……+aa…a(最后一项为n个a)之和。

例如输入2和3,输出246(即2+22+222)。

要求定义并调用函数f(a,n),它的功能是返回aa…a(n个a)。

例如f(2,3)返回222。

 #include

 intf(inta,intn)

 {  ints=0; 

     for(;n>0;n--)

         s=s*10+a; //s+=pow(10,n-1)*a;

     returns;

  }

 voidmain()

 {  inta,n,sum=0,i;

      printf(“inputan:

\n〞);

      scanf(“%d%d〞,&a,&n);

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

          sum+=f(a,i);

      printf(“%d\n〞,sum);

}

5. 输入三个数,输出它们的最小值。

要求定义一个函数,返回两个数的最小值。

        #include

doublemin(doublex,doubley)  

{   if(x returnx;

else

       returny;

}

voidmain()

{   doublex,y,z,t;

    scanf(“%lf%lf%lf〞,&x,&y,&z);

    t=min(x,y);

    t=min(t,z);

    printf("min:

%f\n",t);

}

6. 在主函数中输入字符c和m,调用函数prn,连续将字符c输出m次。

定义函数prn,完成连续将某个字符c输出m次后换行。

#include

voidprn(char,int); //函数声明

voidmain()

{   charc;

    intm;

    printf(“Inputcm:

\n〞);

scanf(“%c%d〞,&c,&m);

    prn(c,m);

}

voidprn(charc,intm)  

{   inti;

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

    putchar(c);

    printf(“\n〞);

}

7. 输入一个整数n,计算3.2n的值。

要求定义函数计算xn值。

#include

doublefact(doublex,intn); 

voidmain()

{   doublex,y;

    intn;

    printf(“Inputxn:

\n〞);

scanf(“%lf%d〞,&x,&n);

    y=fact(x,n);

    printf(“%f\n〞,y);

}

doublefact(doublex,intn)  

{   inti;

    doublet=1;

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

   t=t*x;

    returnt;

}

8. 输入平面上p1(x1,x2)、p2(x2,y2)两点坐标,计算两点间的距离输出。

要求定义一个函数计算平面上两点间的距离。

#include

#include

doublef(double,double,double,double); 

voidmain()

{   doublex1,x2,y1,y2,d;

    printf(“Input(x1,y1),(x2,y2):

\n〞);

scanf(“(%lf,%lf),(%lf,%lf)〞,&x1,&y1,&x2,&y2);

    d=f(x1,y1,x2,y2);

    printf(“%f\n〞,d);

}

doublef(doublex1,doubley1,doublex2,doubley2)  

{   doubled;

    d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));

    returnd;

}

9. 输出一摄氏温度——华氏温度转换表。

摄氏温度取[-100℃~150℃],温度间隔5℃,要求定义函数ctof(c),将摄氏温度转换为华氏温度,转换公式:

F=32+C*9/5

#include

voidmain()

{ floatc,f,ctof(float);inti;

  for(i=0,c=-100;c<=150;c+=5)

  { f=ctof(c);

     printf("%6.0f %-6.0f",c,f);

     i++;

     if(i%5==0)printf("\n");

 }

}

floatctof(floatc)

{  floatf;

    f=32+c*9/5;

    returnf;

}

10. 求11~999之间所有“回文数〞之和。

要求编制函数JSValue(m)用于判断m是否为回文数。

回文数是指各位数字左右对称,例如11、121、676、909等等。

#include

intJSValue(intm)

{   inta=0,b;

    b=m;

while(b!

=0){

       a=a*10+b%10; 

       b=b/10;

    }

    if(a==m)return1;

    elsereturn0;

}

voidmain()

{  ints=0,i;

   for(i=11;i<=999;i++)

      if(JSValue(i)==1)s+=i;

   printf(“%d\n〞,s);

}

11. 输入100个学生的数学课程成绩,计算平均分,并统计成绩在平均分数正负10%区间的学生的人数。

#include

voidmain()

{  inta[100],i,k=0;

   floatsum=0,aver;

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

   { scanf(“%d〞,&a[i]);

      sum+=a[i];

   }

   aver=sum/100;

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

  if(0.9*aver<=a[i]&&a[i]<=1.1*aver) //当前成绩在平均分数正负10%区间

      k++;

 printf(“%f,%d\n〞,aver,k);

12. 输入两个正整数m和n(m#include

intisprime(intx)

{  inti;

for(i=2;i  if(x%i==0)return0;

return1;

}

voidmain()

{  intm,n,s=0,k;

   scanf(“%d%d〞,&m,&n);

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

       if(isprime(k)==1)s+=k;

printf(“%d\n〞,s);

13. 输入一个字符串〔少于80个字符〕,再输入一个字符,统计并输出该字符在字符串中出现的次数〔例如:

输入morning回车,再输入n,输出2〕。

#include

main()

{   chars[80],c;

    inti,k=0;

    printf("输入字符串:

\n");

    gets(s);

    printf("输入字符:

\n");

    c=getchar();

    for(i=0;s[i]!

='\0';i++)

       if(s[i]==c)k++;

    printf("%s中包含%d个%c\n",s,k,c);

}

14. 输入10组数,每组数3个数,输出每组数的最大值。

要求定义并调用函数max(x,y,z)求x、y、z的最大值。

#include

doublemax(doublex,doubley,doublez)

{  doublem;

   m=x;

if(mif(mreturnm;

}

voidmain()

{  doublex,y,z,i;

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

       scanf(“%lf%lf%lf〞,&x,&y,&z);

       printf(“%f\n〞,max(x,y,z));

   }

15. 输入一个字符串,统计其中数字字符出现的次数。

   #include

   voidmain()

     {   chars[80];

           inti,n=0;

           gets(s);

           for(i=0;s[i]!

='\0';i++)

                if(s[i]>='0'&&s[i]<='9')

                     n++;

            printf("%s中包含%d个字符\n",s,n);

     }

16. 将一个大小为10的数组b的值按逆序重新存放(数组的值由键盘任意输入,不使用辅助数组)。

   #include

   voidmain()

     {   doublea[10],t;

           inti,j;

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

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

           for(i=0,j=9;i           {  t=a[i];a[i]=a[j];a[j]=t;}

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

                printf("%8.2f",a[i]);

     }

17. 计算5×5数组周边元素的和。

   #include

   voidmain()

     {   doublea[5][5],sum=0;

           inti,j;

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

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

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

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

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

             sum+=a[i][j]; //第1、最后两行元素和

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

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

             sum+=a[i][j]; //最左、右两列〔不包括角上〕元素和

     printf("%8.2f\n",sum);

 }

18. 输入一5行、5列的数组,将数组的每1行均除以该行上的主对角元素〔第1行同除以a[0][0],第2行同除以a[1][1],...〕,然后以行列对齐格式输出数组容。

#include

voidmain()

{   floata[5][5],t;

inti,j;

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

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

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

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

{   t=a[i][i];          //{ for(j=0;j<5;j++)

for(j=0;j<5;j++)    //if(i!

=j)a[i][j]=a[i][j]/a[i][j];

           a[i][j]=a[i][j]/t;  //a[i][i]=1;}

}            

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

        { for(j=0;j<5;j++)

                 printf("%8.2f",a[i][j]);

            printf("\n");

  }

}

19. 输入一个字符串(字符个数少于80),判断是否为回文?

假设是输出YES,否那么输出NO。

   解一:

   #include

   voidmain()

     {   chars[80];

           inti,j;

           gets(s);

           for(j=0;s[j]!

='\0';j++);//求字符串长度

           for(i=0,j--;i               if(s[i]!

=s[j])

                {   printf("NO\n");break;}

           if(i>=j)

                printf("YES\n");

     }

解二:

   #include

   voidmain()

     {   chars[80];

           inti,j,flag=1;

           gets(s);

           for(j=0;s[j]!

='\0';j++);

           for(i=0,j--;i               if(s[i]!

=s[j]) flag=0;

           if(flag==1) printf("YES\n");

           else  printf("NO\n");

     }

20. 编写函数fun,返回一个数组〔10个数〕中除最大值和最小值以外的平均值。

   #include

   doublefun(doublea[],intn)

   {    doublesum=0,max,min;

          inti;

          max=min=a[0];

          for(i=0;i          {     if(max                  elseif(min>a[i])min=a[i];

                  sum+=a[i];}

           return(sum-max-min)/(n-2);

    }

     voidmain()

     {   doubleb[10],v;

           inti;

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

               scanf("%lf",&b[i]);

           v=fun(b,10);

           printf("average:

%.2f\n",v);

     }

21. 在主函数中输入一个正整数x,编写函数f1,它的功能是:

求出能整除x且不是偶数的各正整数,并放在数组a中,这些除数的个数返回给主函数。

在主函数中输出各除数。

   #include

   intf1(inta[],intx)

   {    intj,n=0;

          for(j=1;j<=x/2;j+=2)

               if(x%j==0)

               {  a[n]=j;

                    n++;

                }

           returnn;

    }

     voidmain()

     {   inta[20],i,n,x;

           scanf("%d",&x);

           n=f1(a,x);

           for(i=0;i               printf("%5d",a[i]);

           printf("\n");

     }

22. 在主函数中输入6行、6列的数组和变量m的值,编写函数f2,该函数的功能是:

将数组左下半三角元素中的值乘以m。

在主函数中以行列对齐格式输出该数组。

   #include

   voidf2(inta[][6],intm)

   {    inti,j;

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

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

                   a[i][j]*=m;

    }

     voidmain()

     {   inta[6][6],i,j,m;

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

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

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

           printf("Inputm:

");scanf("%d",&m);

           f2(a,m);//调用函数

           for(i=0;i<6;i++){

      for(j=0;j<6;j++)printf("%5d",a[i][j]);

               printf("\n");

           }

     }

23. 编写一个函数f3,它的功能是:

实现两个字符串的连接。

   #include

   voidmain()

   {   chars1[100],s2[40];

         voidf3(chars1[],chars2[]);

         gets(s1);

         gets(s2);

         f3(s1,s2);

         puts(s1);

     }

   voidf3(chars1[],chars2[])

   {    inti,j;

          for(i=0;s1[i]!

='\0';i++);//找s1中字符串完毕位置

       for(j=0;s2[j]!

='\0';j++,i++)

                   s1[i]=s2[j]; //将s2中字符串连接到s1后

          s1[i]='\0';//连接后加完毕标志

          return;

    }

24. 在数组x的10个数中求平均值v,找出与v相差最小的数组元素。

#include

#include

voidmain()

{ doublex[10],v,d;

  inti;

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

  { scanf("%lf",&x[i]);

     v+=x[i]; }

  v=v/10;

  d=x[0];

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

     if(fabs(d-v)>fabs(x[i]-v))

           d=x[i];

  printf("平均值:

%-8.2f,与平均值最近元素:

%-8.2f\n",v,d);

}

25. 输入n(n≤20)个数放在一维数组中,找出其中最小的数,将它与数组最前面的数交换后输出这些数。

 #include

 voidmain()

 {    inti,k,temp,n,a[20];

     printf("Inputn:

\n");

     scanf("%d",&n);

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

     for(k=0,i=1;i          if(a[i]     temp=a[0];a[0]=a[k];a[k]=temp;

     for(i=0;i     printf("Input%dnumbers:

\n",n);

     for(i=0;i     printf("Inputx:

");scanf("%d",&x);

     for(i=n-1;i>=0;i--)

          if(a[i]>x)a[i+1]=a[i];

          elsebreak;

     a[i+1]=x;

     for(i=0;i}

27. 输入一个5行、6列的数组,找出该数组中绝对值最大的元素、输出该元

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 公共行政管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1