您好,欢迎访问三七文档
2006年北京师范大学452C语言考研试题1设圆的半径r=1.5,圆锥高h=3,求圆的周长和椎体体积。用scanf输入数据,输出计算结果。输出时要求有文字说明,取小数点后两位数字。2输入两个整数,求它们相除的余数。用带参的宏来实现。3求100~200之间的全部素数之和。4计算圆周率的近似值,直到最后一项的绝对值小于10的-6为止,圆周率=4*(1-1/3+1/5-1/7+1/9-……)5写一个函数,判断一字符串是否回文。回文是指顺序和倒读都一样的字符串。#includestdio.h#includestring.hinthw(charf[25]){inta,b;a=0;//初始化a指向f的首地址b=strlen(f)-1;//指向f的最后一个while(a=b){if(f[a++]!=f[b--]){printf(No!\n);return0;//程序结束}}printf(Yes!\n);return1;//a=b是正确的}intmain(){charf[25];intHW;//a,b=0;不需要scanf(%s,f);HW=hw(f);return0;}6有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母,数字以及其它字符的个数。7将一个磁盘中的二进制文件复制到另一个磁盘中,两个文件名随命令行一起输入。#includestdio.hvoidmain(){FILE*from,*to;charin[100],out[100];printf(请输入源文件名:\n);scanf(%s,in);printf(请输入目标文件名:\n);scanf(%s,out);if((from=fopen(in,r))==NULL){printf(文件不存在!\n);exit(0);}if((to=fopen(out,w))==NULL){printf(创建目标文件失败!\n);exit(0);}printf(.............);while(!feof(from)){fputc(fgetc(from),to);}fclose(from);fclose(to);}北京航空航天大学2010年硕士研究生入学考试试题七.程序设计题(20分)请编写程序,该程序首先通过键盘输入获得整型数据a与n,然后计算sum=a+aa+aaa+……+(共n项),最后输出计算结果。例如:当a=5,n=4时,计算sum=5+55+555+5555.八.程序设计题(15分)在Unix操作系统中有一条命令,命令的功能是打印文本文件的最后n行。命令格式为:tail[-n]filename其中,tail为命令名;参数filename为文本文件名;参数[-n]表示要打印的行数,该参数是可选的,缺省值为10,既无此参数时,表示打印文件的最后10行,例如,命令tail-20example.txt表示打印文本文件example.txt的最后20行。如果被打印的文本文件中行数少于n行或者少于10行,该命令将打印文件中的所有行。请用带参数的main函数实现该程序。该程序应该具有一定的错误处理能力。例如,能够处理非法命令参数和非法文件名。程序中可以使用以下C库函数:intatoi(char*s)——将数字串转换为相应的整数fgets(char*s,intn,FILE*fg)——从文件中读入一行;void*malloc(unsignedsize).free——申请和释放内存;strlen——计算字符串的长度;strcpy——讲一个字符串拷贝到另一个字符串中;除此之外,不允许使用其他库函数。提示:1可以再命令行参数正确性分析过程中获取被打印的文本文件名称以及需要打印的行数等信息。2如果命令行分析正确,可以建立一个不带头结点的单向循环链表存放从文件中独到的内容2012计算机考研复试题回忆一、编写函数Eval,求解一元二次方程ax^2+bx+c=0的解,写出每个参数的含义。#includeiostream//包含iostream的头文件#includemath.h#includestring//字符串处理函数usingnamespacestd;classFindRoot//定义类FindRoot{private:floata,b,c;doubler,q,x1,x2;//定义数据成员类型intjud;public:voidInput();//输入函数voidDisplay();//显示函数voidFind();//求根函数};//以上是类的声明部分,以下是类的实现部分voidFindRoot::Input(){cout这是一个求解ax2+bx+c=0的根的程序:endl;//总述程序for(;;){cout输入方程系数a:;cina;if(a==0)cout错误:a不能为0!!!:endl;elsebreak;}//输入a,并对a的可能情况进行判断cout输入方程系数b:;cinb;//输入bcout输入方程系数c:;cinc;//输入c}voidFindRoot::Find()//定义求根的函数{floatdelta=b*b-4*a*c;//定义求根公式的数据类型if(delta0){jud=0;r=-b/(2*a);q=sqrt(-delta)/(2*a);//有两个共轭复数根的情况}elseif(delta==0){x1=-b/(2*a);jud=1;//有两个相同的根的情况}else{x1=(-b+sqrt(delta))/(2*a);x2=(-b-sqrt(delta))/(2*a);jud=2;//有两个不同的根的情况}}voidFindRoot::Display()//定义显示函数{switch(jud){case0:{coutx1=r+qiendl;coutx2=r-qiendl;}break;//显示有共轭复数根时的解case1:coutx1=x2=x1endl;break;//显示有一实根时的解case2:coutx1=x1'\n'x2=x2endl;break;//显示有两不同根情况的解}}voidmain()//主函数{while(1){FindRootf;//定义类型f.Input();f.Find();f.Display();//以上各函数按顺序执行cout是否退出?(Y退出,其它任意键继续)endl;//程序是否退出charm[2];charY[]=Y;chary[]=y;//定义字符串cinm;if(strcmp(m,Y)==0||strcmp(m,y)==0)break;//如果退出则终止运行elsecout请继续……endl;//如果不退出则继续执行}}二、输入若干行文本,包括圆括号,方括号,字母,数字,以空符结束文本的输入,找出括号不匹配(包括圆括号、方括号)的文本行并输出。画出程序的流程图或者写出程序伪码,写出每个循环控制语句的用途编写c/c++函数,验证一个字符串形式的表达式中的括号是否匹配,其中括号包括圆括号、方括号和花括号。(2)编写main函数从键盘读入表达式,并调用你编写的函数。#includestdio.h#includestdlib.htypedefstruct{char*base;char*top;intsize;}snode;boolmatch(char*p){snodes;inti;i=0;s.base=(char*)malloc(20*sizeof(char));//初始化一个栈if(!s.base){printf(内存空间不足\n);returnfalse;}s.top=s.base;s.size=20;while(p[i]!='\0'){//开始循环“\0”是字符串的结束标志if((p[i]=='{')||(p[i]=='[')||(p[i]=='(')){//筛选‘(’、‘{’、‘[’进栈if(s.top-s.base=s.size){//入栈判栈满printf(栈满\n);returnfalse;}*(s.top)=p[i];s.top++;i++;}else{switch(p[i]){case')':if(s.base==s.top){//遇到‘)’‘}’‘]’则开始匹配,要是栈顶元素能匹配成功,则继续,否则直接return,里面的一些条件可以自己想想returnfalse;}elseif(*(--s.top)=='('){i++;continue;}else{returnfalse;}case'}':if(s.base==s.top){returnfalse;}elseif(*(--s.top)=='{'){i++;continue;}else{returnfalse;}case']':if(s.base==s.top){returnfalse;}elseif(*(--s.top)=='['){i++;continue;}else{returnfalse;}default:i++;//剔除其他符号continue;}}}if(s.top==s.base)//匹配成功则最后栈空returntrue;elsereturnfalse;}intmain(){charstr[50];inti=0;char*p;p=str;printf(请输入字符串:);gets(str);if(match(p))printf(匹配成功!\n);elseprintf(匹配失败……\n);return0;}中国矿业大学2007年硕士研究生入学试题三.请将一下语法改写成为switch语句。if((s0)&&(s=10))if((s=3)&&(s=6))x=2;elseif((s1)||(s8))x=3;elsex=1;elsex=0;四.试编程序,找出1至99之间的全部同构数。同构数是这样一组数:它出现在平方数的右边。例如5是25右边的数,25是625右边的数,5和25都是同构数.(25分)voidmain(){inti,j,s;intcount=0;for(i=1;i100;i++){if(i10)s=1;elses=2;j=i*i;if(i==j%(int)pow(10,s)){printf(%d\n,i);count++;}}printf(totalnumber:%d\n,count);}应该有5个,1,5,6,25,76五.通过赋初值按行顺序给2*3的二维数组赋予236……等偶数,然后按列的顺序输出该数组。试编程。voidmain(){intnum[2][3];inti=0,j=0;for(i=0;i2;i++){for(j=0;j3;j++){num[i][j]=2*((3*i)+j+1);}}for(j=0;j3;j++){for(i=0;i2;i++){printf(%d,,num[i][j]);}}}中国矿业大学2008年C语言考研真题三.编写程序,对于给定的一个百分制成绩,输出相应的五分制成绩。设:90分以上‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。四.每个苹果0.6元,第一个买菜个苹果,第二天开始,每天买前一天的2倍,直至购买的苹果个数达到不超过100的最大值。编写程序求每天平均花多少钱?#includestdio.hmain(){intx=2,n=0,a;floatave=0,sum=0;scanf(%d,&a);for(x,n;x=a;n++){sum=sum+0.8*x;x=2*x;}ave=sum/n;printf(%.2f\n,ave);return0;}五.若有说明:inta[2][3]={{1,2,3},{4,5,6}};先要将a的行和列的元素互换后存到另一个二维数组b中,试编写程序。中国矿业大学(北京)采矿工程专业考研真题
本文标题:C语言考研试题
链接地址:https://www.777doc.com/doc-2908457 .html