您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 北航C语言期末模拟试题2012 (1)
单选题下列关于单目运算符++、--的叙述中正确的是(D)。A、它们的运算对象可以是int型变量,但不能是double型变量和float型变量B、它们的运算对象可以是任何变量和常量C、它们的运算对象可以是char型变量和int型变量,但不能是float型变量D、它们的运算对象可以是char型变量、int型变量和float型变量执行下列程序后,其输出结果是(D)。main(){inta=9;a+=a-=a+a;printf(%d\n,a);}A、18B、-9C、9D、-18详解:优先级:a+=(a-=(a+a))○1a+a:18○2a-=18:此时a=-9;注意,a已经不是9,而是-9了○3a+=-9:即a=a+(-9)=(-9)+(-9)=-18打印语句printf(sTUDEND\bT\rS);在屏幕上正确的输出形式是(C).A、sTUDENDSB、TUDENTSC、STUDENTD、sTUDENTS详解:知识点:\b表示退格;\r表示回车,即将当前位置一道“本行”开头○1sTUDEND○2sTUDENT○3STUDENT已知键盘输入a=4,b=3,下面程序输出的结果是(C).main(){inta,b,s;scanf(%d%d,&a,&b);s=a;if(ab)s=b;s=s*s;printf(%d\n,s);}A、9B、13C、16D、15若给定条件表达式(m)?(a++):(a--),则其中表达式m(B)。A、和(m==0)等价B、和(m!=0)等价C、和(m==1)等价D、和(m!=1)等价注意:此处不能选C,因为“非零的数即表示真”。如当m=2时,值为真,结果是a++;但是若选C,则结果为a--.执行语句for(i=1;i++4;);后变量i的值是(B)。A、3B、5C、4D、不定以下描述中正确的是(C)。A、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句B、do-while循环中,根据情况可以省略whileC、在do-while循环体中,必须有能使循环退出的操作。D、do-while循环由do开始,用while结束,在while(表达式)后面不能写分号inta[10];合法的数组元素的最小下标值为(D)。A、10B、9C、1D、0题意是a[]的括号内最小数可以是多少,而不是说定义的时候inta[]的括号里最小的数是多少。注意看清题目意思。以下正确的函数定义是(C).A、doublefun(intx,inty){z=x+y;returnz;}B、fun(x,y){intx,y;doublez;z=x/y;returnz;}C、floatf(intx,inty){floatz;z=x/y;returnz;}D、fun(intx,y){intz;returnz;}chara1[]=abc,a2[80]=1234;将a1串连接到a2串后面的语句是(A)。A、strcat(a2,a1);B、strcat(a1,a2);C、strcpy(a1,a2);D、strcpy(a2,a1);若有chars1[]=abc,s2[20],*t=s2;gets(t);则下列语句中能够实现当字符串s1大于字符串s2时,输出s2的语句是(C)。A、if(strcmp(s2,s1)0)puts(s2);B、if(strcmp(s2,t)0)puts(s2);C、if(strcmp(s1,t)0)puts(s2);D、if(strcmp(s1,s1)0)puts(s2);strcmp()括号里可以是字符串本身,也可以是字符串的地址(首地址)已知有宏定义#defineSQR(a)2*a*a,则SQR(3+4)的值为(A).A、22B、32C、98D、18若有说明:int*p,m=5,n;以下正确的程序段是(D)。A、scanf(%d,&n);*p=n;B、p=&n;scanf(%d,*p)C、p=&n;scanf(%d,&p);D、p=&n;scanf(%d,p);注意指针必须先初始化才能进行运算charh,*s=&h;可将字符H通过指针存入变量h中的语句是(A)。A、*s='H';B、s='H'C、*s=H;D、s=H;定义结构体的关键字是(A)。A、structB、typedefC、enumD、union判断题若a=3,b=2,c=1则关系表达式(ab)==c的值为真。Ta=(b=4)+(c=6)是一个合法的赋值表达式。TC语言程序中输入一个中间带有空格的字符串时,可以用scanf函数.F格式字符%e以指数形式输出实数数字部分小数位数7位.F设g=1,h=2,k=3,则逻辑表达式k+g||!h&&k-h的值为0。F求解表达式max=(ab)?a:b的步骤是,先求解条件表达式(ab),再根据它的值将a或b赋给max.T语句if(ab)printf(%d,a);elseprintf(%d,b);可以用条件表达式ab?a:b取代.Fbreak语句能够终止当前进行的多层循环.Ffor循环的三个表达式都可以省略.Tfor语句的循环体至少执行一次.F(do……while才是)字符串Dalian在内存中的存储长度是7.F(因为自动加\0)定义intx[5],n;则x=x+n;或x++;都是正确的.F若有定义inta[10];则for(i=0;i=10;i++)a[i]=i;编译时无语法错误.T数组名作为函数调用时的实参,实际上传递给形参的是数组第一个元素的值.F当变量的存储类型定义缺省时,系统默认为变量的存储类型为auto类型,分配在动态区.F两个字符串中的字符个数相同时才能进行字符串大小的比较.F如果被包含文件中有全局静态变量,它们在用#include命令的源文件中有效.T假设有inta[10],*p;则p=&a[0]与p=a等价.T共用体变量中起作用的成员是最后一次存放的成员.T下面的定义和语句是合法的:file*fp;fp=fopen(a.txt,r);F填空题若有定义:inta=10,b=9,c=8;接着顺序执行下列语句后,变量c中的值是_____.c=(a-=(b-5));c=(a%11)+(b=3);9下列语句输出的结果是_____,inta=-1;printf(%x,a);(在vc环境下)ffffffff(8个f,因为是4字节)设a=3,b=4,c=4,则表达式a+bc&&b==c&&a||b+c&&b==c的值为_____.1以下程序段要求从键盘输入字符,当输入字母为'Y'时,执行循环体,则下划线处应填写_____.ch=getchar();while(ch____'Y')ch=getchar();==staticinta[3][3]={{1,2,3},{4,5,6},{7,8,9}};其中a[1][2]的值为_____.6静态变量和外部变量的初始化是在_____阶段完成的,而自动变量的赋初值是在_____时进行的.(编译),(运行/函数调用/调用)1752将函数func的入口地址赋给指针变量p的语句是_____.p=func;设有以下结构类型说明和变量定义,则变量b在内存所占字节数是_____。21structstud{shortintage;charnum[3];floats[2];doubleave;}b,*p;程序设计题/*------------------------------------------------【程序设计】1685--------------------------------------------------功能:能计算从1开始到n的自然数的和,n由键盘输入,并在main()函数中输出。------------------------------------------------*/#includestdio.hintfun(intn){/*********Begin**********/intsum=0,i;for(i=1;i=n;i++)sum=sum+i;return(sum);/**********End**********/}main(){intm;voidTestFunc();printf(Enterm:);scanf(%d,&m);printf(\nTheresultis%d\n,fun(m));TestFunc();}voidTestFunc(){FILE*IN,*OUT;intt;into;intc;IN=fopen(in.dat,r);if(IN==NULL){printf(ReadFileError);}OUT=fopen(out.dat,w);if(OUT==NULL){printf(WriteFileError);}for(c=1;c=5;c++){fscanf(IN,%d,&t);o=fun(t);fprintf(OUT,%d\n,o);}fclose(IN);fclose(OUT);}/*------------------------------------------------【程序设计】1599--------------------------------------------------功能:调用函数fun判断一个三位数是否水仙花数。在main函数中从键盘输入一个三位数,并输出判断结果。请编写fun函数。说明:所谓水仙花数是指一3位数,其各位数字立方和等于该数本身。例如:153是一个水仙花数,因为153=1+125+27。------------------------------------------------*/#includestdio.hintfun(intn){/*********Begin**********/intbw,sw,gw;bw=n/100;sw=(n-bw*100)/10;gw=n%10;if(n==bw*bw*bw+sw*sw*sw+gw*gw*gw)return1;elsereturn0;/**********End**********/}TestFunc(){FILE*IN,*OUT;intiIN,i;intiOUT;IN=fopen(in.dat,r);if(IN==NULL){printf(PleaseVerifyTheCurrerntDir..ItMayBeChanged);}OUT=fopen(out.dat,w);if(OUT==NULL){printf(PleaseVerifyTheCurrentDir..ItMayBeChanged);}for(i=0;i10;i++){fscanf(IN,%d,&iIN);iOUT=fun(iIN);fprintf(OUT,%d\n,iOUT);}fclose(IN);fclose(OUT);}main(){intn,flag;scanf(%d,&n);flag=fun(n);if(flag)printf(%d是水仙花数\n,n);elseprintf(%d不是水仙花数\n,n);TestFunc();}程序改错题/*------------------------------------------------------【程序改错】1246--------------------------------------------------------功能:有一数组内放10个整数,要求找出最小数和它的下标,然后把它和数组中最前面的元素即第一个数对换位置.------------------------------------------------------*/#includestdio.hmain(){inti,a[10],min,k=0;printf(\npleaseinputarray10elements\n);for(i=0;i10;i++)/***********ERROR***********/scanf(%d,a[i]);//scanf(%d,&a[i]);for(i=0;
本文标题:北航C语言期末模拟试题2012 (1)
链接地址:https://www.777doc.com/doc-2639195 .html