c语言试题.docx

上传人:b****8 文档编号:10981869 上传时间:2023-02-24 格式:DOCX 页数:13 大小:30.03KB
下载 相关 举报
c语言试题.docx_第1页
第1页 / 共13页
c语言试题.docx_第2页
第2页 / 共13页
c语言试题.docx_第3页
第3页 / 共13页
c语言试题.docx_第4页
第4页 / 共13页
c语言试题.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

c语言试题.docx

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

c语言试题.docx

c语言试题

《计算机程序设计C语言》考试试卷

试题总分:

100分考试时限:

120分钟

一、单项选择题(每空2分,共30分)

1.变量均为整型,设a为5,执行下列语句后,b的值不为2的是()。

A.b=a/2B.b=6-(--a)C.b=a%22.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是()。

A.1B.1.5C.2.03.合法的数组定义是()。

A.inta[]={"string"};B.inta[5]={0,1,2,3,4,5};4.下列标识符错误的是()。

D.b=a>3?

2:

2D.2.5

D.chara[]={0,1,2,3,4,5}D._abD.2D.8

C.chara={"string"};

A.x1yB._123C.2ab5.设整型变量n的值为2,执行语句n+=n-=n*n;后,n的值是()。

A.0B.46.字符串“ABC”在内存占用的字节数是()A.3B.47.下列程序的输出结果是()。

charp1[20]="abcd",*p2="ABCD",str[20]="xyz";

strcpy(str+2,strcat(p1+2,p2+1));printf("%s",str);

A.xyabcABB.abcABzC.ABabcz8.在函数中默认存储类型说明符的变量应该是()存储类型。

A.内部静态B.外部C.自动9.下列字符数组长度为5的是()。

A.chara[]={'h','a','b','c','d'};

C.-4C.6

D.xycdBCDD.寄存器

B.charb[]="habcd";

C.charc[10]={'h','a','b','c','d'};D.chard[6]={'h','a','b','c','\0'}10.设变量a是整型,f是实型,i是双精度型,则表达式10+’a’+i*f值的数据类型是()

A.intB.floatC.doubleD.不确定11.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是()A.floatB.int12.以下不能正确定义二维数组的语句是()

C.long

D.double

D.inta[2][]={{1,2},{3,4}}D.p

A.inta[2][2]={{1},{2}};B.inta[][2]={1,2,3,4};C.inta[2][2]={{1},2,3};13.若有定义:

intx[5],*p=x;,则不能代表x数组首地址的是()A.xB.&x[0]C.&x14.下列定义的字符数组中,printf("%s\n",str[2]);语句的输出是()

charstr[3][20]={"basic","foxpro","windows"};A.basicB.foxproC.windowsD.输出语句出错15.对于如下的结构体,若对变量person的出生年份进行赋值,()是正确的赋值语句。

structdate{

intyear,month,day;};

structworklist{charname[20];charsex;structdatebirthday;}person;

A.person.birthday.year=1980;C.year=1980;

第1页/共6页

B.birthday.year=1980;D.person.year=1980;

二、填空和程序分析(每空2分,共24分)

1.在C语言程序中,对文件进行操作首先要____________;然后对文件进行操作,最后要对文件实行_____________操作,防止文件中信息的丢失。

2.若自定义函数要求返回一个值,则应在该函数体中有一条____________语句,若自定义函数要求不返回一个值,则应在该函数说明时加一个类型说明符________。

3.设x,y,z均为int型变量,请写出描述“x或y中有一个小于z”的表达式_________________________________。

4.若有定义:

inta[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是______________,a[2][2]得到的初值是____________。

5.程序的运行结果是________________________________________。

main()

{inta[]={2,4,6,8,10};

inty=1,x,*p;

p=&a[1];

for(x=0;x<3;x++)y+=*(p+x);

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

}

6.该程序的运行结果是___________________________________。

main()

{inty=9;

for(;y>0;y--)

if(y%3==0){printf(“%d”,--y);continue;}

}

7.该程序的运行结果是___________________________________。

main()

{inta=2,b=3,c;

c=a;

if(a>b)c=1;

elseif(a==b)c=0;

elsec=-1;

printf("%d\n",c);

}

8.执行以下程序段后a的值是______________________,b的值是______________________。

inta,b;

for(b=1,a=1;b<=50;b++)

{

if(a>=10)break;

if(a%2==1)

{

a+=5;

continue;

}

a-=3;

}

三、阅读程序并根据题意完成程序(每空2分,共16分)

1.从键盘上输入10个浮点数,求其平均值。

main()

{

inti;

floatf,sum;

for(i=1,sum=0.0;i<11;i++)

{

________________________;

_______________________;

}

printf(“average=%f\n”,sum/10);

}

2.下面程序段是输入n个实数,输出其中的最大值和最小值。

floatx,nmax,nmin;

第2/6页

intn,i;

scanf("%d",&n);

scanf("%f",&x);

nmax=x;

nmin=x;

for(i=1;_______________________;i++)

{

scanf("%f",&x);

if(x>nmax)_______________________;

if(_______________________)nmin=x;

}

printf("MAX=%f,MIN=%f",nmax,nmin);

3.函数sort使用冒泡法将一维整型数组中各元素按值从大到小排序。

voidsort(inta[],intn)

{intk,j,t;

for(k=1;k

for(___________;j

if(_______________)

________________

}

四、程序设计(共30分)

1.请编一个函数intfun(inta),它的功能是:

判断a是否是素数,若a是素数,返回1;若不是素数,返回0。

a的值由主函数从键盘读入。

(6分)

2.求3X3矩阵的主对角线元素之和,矩阵的数据从键盘输入。

(5分)

3.编写程序,利用格里高利公式计算π。

111=1-...4357

精度要求:

若某一项的绝对值小于10则不再计入,停止计算。

(8分)

4.已知有一个大小为5*5的二维数组,从键盘为所有元素输入数据并编写程序求出数组外围元素的累加和。

(6分)

5.编写程序:

把文本文件f1.txt复制到f2.txt,并且去除所有空格,其它字符复制。

(5分)

-5

第3/6页

试题参考答案及评分标准

第4/6页

第5/6页

2013年计算机二级考试C语言程序设计实战题1

2012-09-3021:

44:

09我来说两句

收藏

我要投稿

 题目1:

有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?

都是多少?

  1.程序分析:

可填在百位、十位、个位的数字都是1、2、3、4。

组成所有的排列后再去掉不满足条件的排列。

  2.程序源代码:

  main()

  {

  inti,j,k;

  printf("n");

  for(i=1;i<5;i++)    /*以下为三重循环*/

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

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

  {

  if(i!

=k&&i!

=j&&j!

=k)   /*确保i、j、k三位互不相同*/

  printf("%d,%d,%dn",i,j,k);

  }

  }

  题目2:

企业发放的奖金根据利润提成。

利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

  1.程序分析:

请利用数轴来分界,定位。

注意定义时需把奖金定义成长整型。

  2.程序源代码:

  main()

  {

  longinti;

  intbonus1,bonus2,bonus4,bonus6,bonus10,bonus;

  scanf("%ld",&i);

  bonus1=100000*0.1;bonus2=bonus1+100000*0.75;

  bonus4=bonus2+200000*0.5;

  bonus6=bonus4+200000*0.3;

  bonus10=bonus6+400000*0.15;

  if(i<=100000)

  bonus=i*0.1;

  elseif(i<=200000)

  bonus=bonus1+(i-100000)*0.075;

  elseif(i<=400000)

  bonus=bonus2+(i-200000)*0.05;

  elseif(i<=600000)

  bonus=bonus4+(i-400000)*0.03;

  elseif(i<=1000000)

  bonus=bonus6+(i-600000)*0.015;

  else

  bonus=bonus10+(i-1000000)*0.01;

  printf("bonus=%d",bonus);

  }

  题目3:

一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

  1.程序分析:

在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。

请看具体分析:

  2.程序源代码:

  #include"math.h"

  main()

  {

  longinti,x,y,z;考试用书

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

  {x=sqrt(i+100);  /*x为加上100后开方后的结果*/

  y=sqrt(i+268);  /*y为再加上168后开方后的结果*/

  if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/

  printf("n%ldn",i);

  }

  }

  题目4:

输入某年某月某日,判断这一天是这一年的第几天?

  1.程序分析:

以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

  2.程序源代码:

  main()

  {

  intday,month,year,sum,leap;

  printf("npleaseinputyear,month,dayn");

  scanf("%d,%d,%d",&year,&month,&day);

  switch(month)/*先计算某月以前月份的总天数*/

  {

  case1:

sum=0;break;

  case2:

sum=31;break;

  case3:

sum=59;break;

  case4:

sum=90;break;

  case5:

sum=120;break;

  case6:

sum=151;break;

  case7:

sum=181;break;

  case8:

sum=212;break;

  case9:

sum=243;break;

  case10:

sum=273;break;

  case11:

sum=304;break;

  case12:

sum=334;break;

  default:

printf("dataerror");break;

  }

  sum=sum+day; /*再加上某天的天数*/

  if(year@0==0||(year%4==0&&year0!

=0))/*判断是不是闰年*/

  leap=1;

  else

  leap=0;

  if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/

  sum++;中华考试网

  printf("Itisthe%dthday.",sum);}

 题目5:

输入三个整数x,y,z,请把这三个数由小到大输出。

  1.程序分析:

我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。

  2.程序源代码:

  main()

  {

  intx,y,z,t;

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

  if(x>y)

  {t=x;x=y;y=t;}/*交换x,y的值*/

  if(x>z)

  {t=z;z=x;x=t;}/*交换x,z的值*/

  if(y>z)

  {t=y;y=z;z=t;}/*交换z,y的值*/

  printf("smalltobig:

%d%d%dn",x,y,z);

  }

3.请编写一个函数voidfun(charm,intk,intxx[]),该函数的功能是:

将大于整数m且紧靠m的k个素数存入xx所指的数组中。

例如,若输入17和5,则应输出:

19,23,29,31,37。

  注意:

部分源程序存在PROG1.C中,请勿改动主函数和其他函数中的内容,仅在函数fun的指定的部位填入你编写的若干语句。

  试题源程序如下:

  #include<stdio.h>

  voidfun(intm,intk,intxx[])

  {

  }

  main()

  {intm,n,zz[100];

   printf("\nPleaseentertwointegers(m&n):

");

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

   fun(m,n,zz);

   for(m=0;m<n;m++)printf("%d",zz[m]);

   printf("\n\n");

  }

分析:

 

(1)本题的基本算法是求素数。

假设有整数i,若i不能被2到i之间的任意一个数除尽,则i就是素数;若一旦能被某个数除尽就不是素数。

  

(2)以下是求i是否为素数的基本算法:

变量ok用作i是素数的标志,ok为1,则i是素数。

  ok=1;

  for(p=2;p<i/2;p++)

  if(i%p==0){ok=0;break;}

  if(ok)……

  (3)本题要求把大于m的k个素数存入xx所指的数组中。

所以,i的值应大于m;取大于m的值逐一进行判断,若是素数就放入xx所指数组中。

把以上语句放入一个循环中:

  for(i=m+1,j=0;?

;i++)

  {ok=1;

   for(p=2;p<=i/2;p++)

   if(i%p==0){ok=0;break;}

    if(ok){xx[j]=i;j++;}

  }

  此处,变量i统计存入数组中元素的个数,同时作为下标。

  (4)按本题的要求,外循环结束的条件应当是:

j<k(j的值从0到k-1)。

只要求得了k个素数,就可退出循环。

因此在?

处应填入j<k。

编程题

  请编写函数fun,它的功能是:

求出1到1000之内能被7或11整除、但不能同时被7或11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。

  注意:

部分源程序给出如下。

  请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

  试题程序:

#include

  #include

  voidfun(int*a,int*n)

  {

  }

  main()

  {

  intaa[1000],n,k;

  FILE*out;

  fun(aa,&n);

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

  for(k=0;k

  if((k+1)%10==0)

  {

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

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

  }

  else

  {

  printf("%5d,",aa[k]);

  fprintf(out,"%d,",aa[k]);

  }

  fclose(out);

  }

  答案:

  voidfun(int*a,int*n)

  {

  inti,j=0;

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

  if((i%7==0||i%11==0)&&i%77!

=0)

  a[j++]=i;

  *n=j;

  }

4.

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

当前位置:首页 > 高等教育 > 经济学

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

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