您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 习题/试题 > 2010级C程序设计考试题A_DA
2010级计算机《计算机程序设计A》(A卷)第1页共12页1西南交通大学2010~11学年第一学期考试试卷A课程代码2100084课程名称计算机程序设计A考试时间120分钟题号一二三四五六总成绩得分阅卷教师签字:注意事项:所有答案请做到答题卷上,做在试卷上不得分!一、单项选择题(每小题2分,共30分)1.对do...while语句错误的描述是:()A)可构成多重循环结构B)循环次数不可能为0C)循环次数可能为0D)先执行后判断2.C语言中规定,if语句的嵌套结构中,else总是()配对。A)与最近的ifB)与第一个ifC)与按缩进位置相同的ifD)与最近的且尚未配对的if3.以下scanf函数调用语句中对结构体变量成员的不正确引用是()。structpupil{charname[20];intage;intsex;}pup[5],*p;p=pup;A)scanf(%s,pup[0].name);B)scanf(%d,&pup[0].age);C)scanf(%d,&(p-sex));D)scanf(%d,p-age);4.下面数组定义语句中,不正确的是()。A)staticinta[2][3]={1,2,3,4,5,6};B)staticinta[2][3]={{1},{4,5}};C)staticinta[][3]={{1},{4}};班级学号姓名密封装订线密封装订线密封装订线2010级计算机《计算机程序设计A》(A卷)第2页共12页2D)staticinta[][]={{1,2,3},{4,5,6}};5.以下定义语句中正确的是()。A)chara=AB;B)floata=b=10.0;C)inta=10,*b=&a;D)float*a,b=&a;6.在宏定义#definePI3.14159中,表示用宏名PI代替一个()。A)常量B)单精度数C)双精度数D)字符串7.设有intx,y;以下语句判断x和y是否相等,正确的说法是该语句()。if(x=y)printf(xisequaltoy.);A)语法错B)不能判断x和y是否相等C)编译出错D)能判断x和y是否相等8.设有定义:intn1=0,n2,*p=&n2,*q=&n1;以下赋值语句中与n2=n1;语句等价的是()A)*p=*q;B)p=q;C)*p=&n1;D)p=*q;9.设有数组定义:chararr[10]=Hello;则数组arr所占的空间为()A)5个字节B)6个字节C)10个字节D)11个字节10.若已定义:inta[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是()。A)p+1B)a++C)a+1D)++p11.外部变量对程序中的任一函数而言,它们是()。A)不存在的B)不可见的C)可直接存取的D)不可直接存取的12.变量的有效范围与其定义位置有关,________,其作用域在整个源程序文件中都有效。A)在第一个函数中定义的变量B)在定义第一个函数之前所定义的变量C)在主函数中定义的变量D)在函数中定义的静态变量13.当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是()。A)c=b=a;B)(a=c)||(b=c);C)a=c=b;D)(a=c)&&(b=c);14.为了向存在的ASCII码文件尾部增加数据,打开文件的方式应采用()。A)″ab″B)″rb+″C)″a″D)″wb+″15.已知structpoint{intx;inty;};structrect{structpointpt1;structpointpt2;2010级计算机《计算机程序设计A》(A卷)第3页共12页};structrectrt;structrect*rp=&rt;则下面哪一种引用是不正确的________。A)rt.pt1.xB)(*rp).pt1.xC)rp-pt1.xD)rt-pt1.x二、判断对错(对的选√,错的选×。每题1分,共10分)1.主函数和其它函数可以相互调用。2.C程序的执行总是从第一个定义的函数开始。3.puts和gets函数只能输入或输出一个字符串。4.for(;;)语句相当于while(1)语句。5.在C程序中,赋值运算符的优先级最低。6.一个int型与一个double型数据进行混合运算时,其结果是double型。7.语句intpt中的*pt是指针变量名。8.putchar()函数可以输出一个字符串。9.静态外部变量既可以在文本文件中引用,也可以在其它文件引用。10.当输入数值数据时,对于整型变量只能输入整型值;对于实型变量只能输入实型值。三、读程序,写出下列程序的运行结果。(每题2分,共10分)1.#includestdio.hvoidmain(){inti,j,x=0;for(i=0;i3;i++){x++;for(j=0;j3;j++){if(j%2)break;x++;}x++;}printf(x=%d\n,x);}程序运行结果是:2.#includestdio.hstructdate{intyear;intmonth;intday;};structdatefunc(structdatep)2010级计算机《计算机程序设计A》(A卷)第4页共12页{p.year=2010;p.month=5;p.day=29;returnp;}voidmain(){structdated;d.year=1994;d.month=4;d.day=17;printf(%d/%d/%d\n,d.year,d.month,d.day);d=func(d);printf(%d/%d/%d\n,d.year,d.month,d.day);}程序运行结果是:3.#includestdio.hintmain(){chara[]=Hello;char*p=NULL;for(p=a;pa+5;p++){printf(%s\n,p);}return0;}程序运行结果是:4.#includestdio.hintfun(intx,inty){returnxy?x:y;}voidmain(){inta=4,b=6,c=9;printf(%d\n,fun(fun(a+c,b),a+b));}程序运行结果是:5.#includestdio.hvoidfun(){intx=2;staticinty=3;x++;y++;printf(%d,%d\n,x,y);}voidmain(){fun();fun();}程序运行结果是:2010级计算机《计算机程序设计A》(A卷)第5页共12页四、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。(每空1分,共6分)1.从键盘任意输入一个年号,判断它是否是闰年。若是闰年,输出“Yes”,否则输出“No”。已知符合下列条件之一者是闰年:能被4整除,但不能被100整除。能被400整除。#includestdio.hvoidmain(){intyear,flag;printf(Enteryear:);scanf(%d,(1));if((2))flag=1;elseflag=0;if((3))printf(Yes\n);elseprintf(No\n);}2.编程判断m是否为素数。#includestdio.h#include(4)intIsPrime(intm);voidmain(){intn,flag;printf(Inputn:);scanf(%d,&n);flag=IsPrime(n);if((5)){printf(它是素数\n);}else{printf(它不是素数\n);}}intIsPrime(intm){inti,k,n;if(m=1)return0;n=(int)sqrt(m);for(i=2;(6);i++){k=m%i;2010级计算机《计算机程序设计A》(A卷)第6页共12页if(k==0){return0;}}return1;}五、在下面给出的4个程序中,共有15处错误(包括语法错误和逻辑错误),请找出其中的错误,并改正之。(24分,每找对1个错误,加1分,每修改正确1个错误,再加1分。只要找对12个即可,多找不加分。在答题卷上标明出错的行号,并给出正确写法)1.下面程序的功能是从键盘输入一行字符,统计其中有多少单词。假设单词之间以空格分开。已知:判断是否有新单词出现的方法——当前被检验字符不是空格,而前一被检验字符是空格,则表示有新单词出现。(3个错误)1.#includestdio.h2.voidmain()3.{4.inti,num;5.charstr[20];6.scanf(%c,str);7.if(str[0]!='')num=1;8.elsenum=0;9.for(i=1;i20;i++)10.{11.if(str[i]!=''&&str[i-1]=='')12.{13.num=num++;14.}15.}16.printf(num=%d\n,num);17.}2.编写一个函数Inverse(),实现将字符数组中的字符串逆序存放的功能(4个错误)1.#includestring.h2.#includestdio.h3.4.#defineARRSIZE=80;5.6.voidInverse(charstr[])7.8.voidmain()9.{10.chara[ARRSIZE];11.12.printf(Pleaseenterastring:);13.gets(a);14.Inverse(chara[]);15.printf(Theinversedstringis:);16.puts(a);17.}2010级计算机《计算机程序设计A》(A卷)第7页共12页18.19.voidInverse(charstr[])20.{21.intlen,i=0,j;22.chartemp;23.24.len=strlen(str);25.for(j=len-1;ij;i++,j--)26.{27.temp=str[i];28.str[j]=str[i];29.str[j]=temp;30.}31.}3.韩信点兵。韩信有一队兵,他想知道有多少人,便让士兵排队报数:按从1至5报数,最末一个士兵报的数为1;按从1至6报数,最末一个士兵报的数为5;按从1至7报数,最末一个士兵报的数为4;最后再按从1至11报数,最末一个士兵报的数为10。你知道韩信至少有多少兵吗?(4个错误)1.#includestdio.h2.voidmain()3.{4.intx;5.6.while(1)7.{8.if(x%5=1&&x%6=5&&x%7=4&&x%11=10)9.{10.continue;11.}12.x++13.}14.printf(x=%d\n,x);15.}4.编程输入10个数,找出其中的最大值及其所在的数组下标位置(4个错误)。1.#includestdio.h2.intFindMax(intnum[],intn,int*pMaxPos);3.4.voidmain()5.{6.intnum[10],maxValue,maxPos,minValue,minPos,i;7.8.printf(Input10numbers:\n);9.for(i=0;i10;i++)10.{11.scanf(%d,num[i]);12.}13.maxValue=FindMax(num,10,maxPos);14.printf(Max=%d,Position=%d\n,maxValue,maxPos);15.}16.intFindMax(intnum[],intn,int*pMaxPos);17.{18.inti,max;19.2010级计算机《计算机程序设计A》(A卷)第8页共12页20.max=num[0];21.pMaxPos=0;22.for(i=1;in;i++)23.{24.if(num[i]max)25.
本文标题:2010级C程序设计考试题A_DA
链接地址:https://www.777doc.com/doc-3042346 .html