c语言考试复习题

2012年秋季C语言期末考试复习(共20题)

     (认真复习,滚瓜烂熟)

 

❶输出九九表

void main( )

{

inti,j;

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

 {

for(j=1;j<=i;j++)printf("%d*%d=%-4d",j,i,j*i);

printf("\n");

 }

}

任意输入三条边(a,b,c),若能构成三角形计算其面积,判断是否为等腰、等边、直角或任意,否则输出“不能构成三角形”。

#include<math.h>

main( )

{

floata,b,c,t,area;

scanf("%f%f%f",&a,&b,&c);

printf("a=%.2f,b=%.2f,c=%.2f ",a,b,c);

if(a+b>c&&b+c>a&&a+c>b)

 {

t=(a+b+c)/2.0;area=sqrt(t*(t-a)*(t-b)*(t-c));

printf("area=%.4f ",area);

  if(a==b&&b==c)printf("等边\n");

  else if(a==b||b==c||a==c)printf("等腰\n");

elseif(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)

printf("直角\n");

  else printf("任意\n");

 }

 else printf("不能构成三角形!\n");

}

正序和反序打印英文字母

main( )

{

charch;

for(ch=’A’;ch<=’Z’;ch++)printf(“%c”,ch);

printf(“\n”);

for(ch=’Z’;ch>=’A’;ch--)printf(“%c”,ch);

printf(“\n”);

}

输入一串字符(换行作为结束)统计元音字母(a,A;e,E;i,I;o,O;u,U)各自出现的次数

#include<stdio.h>

void main( )

{

charch;

int a=0,e=0,i=0,o=0,u=0;

printf(“输入一串字符,换行作为结束:”);

while((ch=getchar( ))!='\n')

switch(ch)

  {case 'a':

case  'A':a++;break;

case  'e':

case  'E':e++;break;

case  'i':

case  'I':i++;break;

case  'o':

case  'O':o++;break;

case  'u':

case  'U':u++;

  }

printf("a,A=%d\ne,E=%d\ni,I=%d\no,O=%d\nu,U=%d\n",a,e,i,o,u);

}

❺将一个三位数输入后反向输出(如123,输出为321)

main( )

{

intnum,down,a,b,c;

printf("输入一个三位数(100-999): ");

scanf("%d",&num);

 a=num%10;   /* 个位 */

b=num/10%10;  /* 十位 */

c=num/100;    /* 百位 */

down=100*a+10*b+c; /* 三位数倒过来*/

printf("%dà%d\n",num,down);

}

❻公鸡5元/只,母鸡3元/只,小鸡3只/元,100元钱买100只鸡,求出所有的答案。

0≤cock≤20 0≤hen≤33  0≤chiken≤100

简化为:

main( )

{

intcock,hen,chicken;

printf(“两重循环方法:\n”);

for(cock=0;cock<=20;cock++)

for(hen=0;hen<=33;hen++)

  {

chicken=100-cock-hen;

if(7*cock+4*hen==100)

printf("公鸡=%d,母鸡=%d,小鸡=%d\n",cock,hen,chicken);

  }

}

输入年(year)、月(month)和日(day),计算并输出该日是该年的第几天(sumdays)

voidmain( )

  {

inti,year,month,day,sumdays;

scanf(“%d%d%d”,&year,&month,&day);

sumdays=day;

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

switch(i)

    {

case2: if(year%4==0&&year%100!=0||year%400==0)sumdays+=29;

elsesumdays+=28;

break;

case4:

case6:

case9:

case11: sumdays+=30;break;

default:sumday+=31;

    }

printf(“year=%d,month=%d,day=%d,sumdays=%d\n”,year,month,day,sumdays);

}

❽矩阵转置

main( )

{

inti,j,a[2][3]={{1,2,3},{4,5,6}},b[3][2];

printf("矩阵A:\n\n");

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

  {

for(j=0;j<3;j++){printf("%5d",a[i][j]); b[j][i]=a[i][j];}

printf("\n");

}

printf("矩阵B:\n\n");

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

{

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

printf("\n");

}

}

❾用二维数组输出杨辉三角形

#define N 10

main( )

{

inti,j,yh[N][N];

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

 {

yh[i][0]=yh[i][i]=1;

 for(j=1;j<i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];

 }

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

 {

for(j=1;j<=15-i;j++)printf("  ");

for(j=0;j<=i;j++)printf("%4d",yh[i][j]);

printf("\n");

 }

}

输出字符串

void main()

 {

char www[ ]=”World\0Wide\0Web”;

printf(“%s\n”,www+11);

 }

 

11.指针数组和二级指针的使用

void main()

{

int a[5]={1,3,5,7,9};

int*num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]};

inti,**p=num;

for(i=0;i<5;i++)printf(“%d\t”,**p++);

}

 

12.求两个自然数的最大公约数和最小公倍数

intgcd(intm ,intn)/* 求最大公约数 */

{

while(m!=n)

if(m>n)m-=n;                    

elsen-=m;                      

return(m);

}

intgcp(intm ,intn)/* 求最小公倍数 */

{

returnm*n/gcd(m,n); /*出现调用*/

}

voidmain( )

{

inta,b,maxgcd,mingcp;

sacnf(“%d%d”,&a,&b);

maxgcp=gcd(a,b);/*调用*/

mingcp=gcp(a,b);/*调用*/

printf(“a=%d,b=%d,最大公约数=%d,

最小公倍数=%d\n”,a,b,maxgcd,mingcp);

}

13.对下列分段函数,输入x的值后,计算并输出y的值(保留两位小数)

当x≤0

y=    cos(x)当0<x<10

当x≥10

#include<math.h>

main()

{ floatx,y;

scanf(“%f”,&x);

if(x<=0)y=x*x+x+1;

else if(x<10)y=cos(x);

else y=sqrt(x)+1;

printf(“x=%.2f,y=%.2f\n”,x,y);

}

 

14. ++,--的理解和使用

void main()

   {

inti=8,j=10,m,n;

m=++i;

n=j++;

printf(“%d,%d,%d,%d\n”,i,j,m,n);

   }

 

15.输入学生的成绩后,输出其字母等级

void main()

   {

float score;

scanf(“%f”,&score);

printf(“score=%.1f “,score);

switch((int)(score/10))

{

case 10:

case 9:printf(“A\n”);break;

case 8:printf(“B\n”);break;

case 7:printf(“C\n”);break;

case 6:printf(“D\n”);break;

default:printf(“E\n”);

}

}

 

16.冒泡排序(升序)

#define N 10

voidmain( )

{

inti,j,t,a[N];

for(i=0;i<N;i++)scanf(“%d”,&a[i]);

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; 

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

printf("\n");

}

 

17.值传递和地址传递

voidswap1(intx,int y)

   {

int t;

t=x;x=y;y=t;

   }

 

void swap2(int *x,int *y)

   {

int t;

t=*x,*x=*y,*y=t;

   }

 

#define PR printf(“a=%d,b=%d\n”,a,b);

void main()

   {

int a=10,b=20;

    PR

swap1(a,b);PR

swap2(&a,&b);PR

   }

 

18.有一个磁盘文件,第一次将它的内容显示在屏幕上,

第二次把它复制到另一文件上。

#include<stdio.h>

void main()

{

FILE *fp1,*fp2;

 fp1=fopen(“file1.c”,”r”);

fp2=fopen(“file2.c”,”w”);

while((!feof(fp1))putchar(fgetc(fp1));

rewind(fp1);

while(!feof(fp1))fputc(fgetc(fp1),fp2);

fclose(fp1); fclose(fp2);

}

 

19.输入实数x,按下列公式计算并输出x和y的值(小数点后保留6位)

#include<math.h>

main()

{ floatx,y;

scanf(“%f”,&x);

if(x<=0)y=sin(x);

else if(x<10)y=x*x+1;

else y=1/(x*sqrt(x)+x*x+1);

printf(“x=%.2f,y=%.2f\n”,x,y);

}

 

20.(1)编写一个计算摄氏(C)到华氏(F)转换的函数。函数头是:float temp(float c)

计算公式:F=

(2)编写主函数从键盘输入摄氏温度的值,调用上述函数输出摄氏及华氏温度的值(小数点后保留两位)。

float temp(float c)

     {

return(9.0/5.0*c+32);

     }

void main()

{ float f;

scanf(“%f”,&f);

printf(“F=%.2f,C=%.2f\n”,f,temp(f));

     }

 

北京航空航天大学继续教育学院

2012秋季成人高等学历教育(业余)

《C语言程序设计》期末试卷A(样题)

适用班级:计算机专业(XXXXXX班)

 

姓名:___________ 班级和学号:_____________   卷面成绩(60%):_____________

 

一、(20%)阅读下列程序,将输出结果写到题目右侧的空白处

(本大题共有6个小题,每小题5分,共30分)

1.  void main()

 {

char www[ ]=”World\0Wide\0Web”;        答:world,wide,web

printf(“%s,%s,%s\n”,www,www+6,www+11);

 }

 

2.  void main()

{

inti,a[10];

 for(i=0;i<10;i++)a[i]=i;

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

{                               答:0 1  2  3  4

printf(“%5d”,a[i]);                           5 6  7  8  9

if((i+1)%5==0)printf(“\n”);

}

}

 

……………………………………………………………………….

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

二、(20%)将下列程序的下横线空白处补上,使其能正确运行

(本大题共有3个小题,10个空,每空2分,共20分)

7. 计算1~100自然数和的平均值并输出

void main( )

{

inti;

floataver,sum=    0    ;

   for(i=1;i<    11   ;i++)sum+=i;   /*或for(i=1;i<=11    ;i++)sum+=i;*/

aver=sum/10;

printf(“aver=%.2f\n”,aver);

}

………………………………………….

 

三、(20%)写出下列问题的程序

(本大题共有2个小题,每小题10分,共20分)

10.计算1~100自然数和的平均值并输出(保留两位小数)

答:

void main( )

{

inti;

floataver,sum=0;

for(i=1;i<101;i++)sum+=i;

aver=sum/10;

printf(“aver=%.2f\n”,aver);

}

………………………………………………………………………………..

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值