
2006年北京师范大学452C语言考研试题.pdf
11页2006年北京师范大学452C语言考研试题1 设圆的半径片1.5,圆锥高h=3,求圆的周长和椎体体积用scanf输入数据,输出计算结果输出时要求有文字说明,取小数点后两位数字2输入两个整数,求它们相除的余数用带参的宏来实现3求100200之间的全部素数之和4计算圆周率的近似值,直 到 最 后 一 项 的 绝 对 值 小 于1 0的-6为止,圆周率=4*(1-1/3+1/5-1/7+1/9-.)5写一个函数,判断一字符串是否回文回文是指顺序和倒读都一样的字符串include#includeint hw(char f25)int a,b;a=0;/初始化a指向f的首地址b=strlen(f)-1;指向f的最后一个while(a=b 是正确的int main()char f25;int HW;/a,b=0;不需要scanf(%s,f);HW=hw(f);return 0;)6有一篇文章,共有3行文字,每行有80个字符要求分别统计出其中英文大写字母,数字以及其它字符的个数7将一个磁盘中的二进制文件复制到另一个磁盘中,两个文件名随命令行一起输入include void main()FILE*from,*to;char in100,out100;printf(请输入源文件名:n);scanf(%s,in);printf(请输入目标文件名:n);scanf(%s,out);if(from=fopen(in,r)=NULL)(printf(文件不存在!n);exit(O);)if(to=fopen(out,w)=NULL)(printf(创建目标文件失败!n);exit(O);)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.A.程序设计题(15分)在 Unix操作系统中有一条命令,命令的功能是打印文本文件的最后n 行命令格式为:tail-n filename其中,tail为命令名;参数filename为文本文件名;参数 句表示要打印的行数,该参数是可选的,缺省值为1 0,既无此参数时,表示打印文件的最后10行,例如,命令tail-20 example.txt表示打印文本文件example.txt的最后20行如果被打印的文本文件中行数少于n 行或者少于 10行,该命令将打印文件中的所有行请用带参数的main函数实现该程序该程序应该具有一定的错误处理能力例如,能够处理非法命令参数和非法文件名程序中可以使用以下C 库函数:int atoi(char*s)将数字串转换为相应的整数fgets(char*s,int n,FILE*fg)-从文件中读入一行;void*malloc(unsigned size).free-申请和释放内存;strlen-计算字符串的长度;strcpy讲一个字符串拷贝到另一个字符串中;除此之外,不允许使用其他库函数提示:1可以再命令行参数正确性分析过程中获取被打印的文本文件名称以及需要打印的行数等信息。
2 如果命令行分析正确,可以建立一个不带头结点的单向循环链表存放从文件中独到的内容2012计算机考研复试题回忆一、编写函数Eval,求解一元二次方程ax2+bx+c=0的解,写出每个参数的含义include/包含 iostream 的头文件#include#include 字符串处理函数using namespace std;class FindRoot/定义类 FindRootprivate:float a,b,c;double r,q,x1,x2;定义数据成员类型int jud;public:void Input/输入函数void Display/显示函数void Find/求根函数);以上是类的声明部分,以下是类的实现部分void FindRoot:lnput()(cout这是一个求解ax2+bx+c=0的根的程序:endl;总述程序for(;)cout输入方程系数a:cina;if(a=O)coutvv错误:a 不能为 0!:endl;else break;输入a,并对a 的可能情况进行判断coutvv输入方程系数b:cinb;输入 bcoutvv输入方程系数c:cinc;输入 c)void FindRoot:Find()定义求根的函数(float delta=b*b-4*a*c;定义求根公式的数据类型if(delta0)jud=O;r=-b/(2*a);q=sq rt(-delta)/(2*a);有两个共辗复数根的情况else if(delta=O)x1=-b/(2*a);jud=1,有两个相同的根的情况)elsex1=(-b+sqrt(delta)/(2*a);x2=(-b-sqrt(delta)/(2*a);jud=2;有两个不同的根的情况void FindRoot:Display()定义显示函数(switch(jud)case 0:coutx1=r+qiendl;coutx2=r-qiendl;break;显示有共辗复数根时的解case 1:coutx1=x2=x1 endl;break;显示有实根时的解case 2:coutvvx1=vx1 vvnvx2=vvx2vendl;break;显示有两不同根情况的解void main()主函数while(1)FindRootf;/定义类型f.lnput();f.FindQ;f.Display。
/以上各函数按顺序执行cout是否退出?(Y 退出,其它任意键继续)endl;程序是否退出char m2;char Y=Y;char y=y;定义字符串cinm;if(strcmp(m,Y)=O|strcmp(m,y)=O)break;/如果退出血终止运行elsecout请继续.endl;如果不退出则继续执行二、输入若干行文本,包括圆括号,方括号,字母,数字,以空符结束文本的输入,找出括号不匹配(包括圆括号、方括号)的文本行并输出画出程序的流程图或者写出程序伪码,写出每个循环控制语句的用途编写C/C+函数,验证一个字符串形式的表达式中的括号是否匹配,其中括号包括圆括号、方括号和花括号2)编写m a i n 函数从键盘读入表达式,并调用你编写的函数include#includetypedef structchar*base;char*top;int size;snode;bool match(char*p)snode s;int i;i=0;s.base=(char*)malloc(20*sizeof(char);if(!s.base)printf(内存空间不足n);return false;)s.top=s.base;s.size=20;while(pi!=0)的结束标志if(pi=)ll(Pi=DJ|(Pi=()if(s.top-s.base=s.size)printf(栈满 n);return false;)*(s.top)=pi;s.top+;i+;elseswitch(pi)初始化一个栈 开 始 循 环“0”是字符串/筛选 进栈入栈判栈满case):if(s.base=s.top)遇 至 )则开始匹配,要是栈顶元素能匹配成功,则继续,否则直接return,里面的一些条件可以自己想想return false;else if(*(-s.top)=()i+;continue;elsereturn false;)case:if(s.base=s.top)return false;else if(*(-s.top)=)i+;continue;elsereturn false;c a s e:if(s.base=s.top)return false;else if(*(-s.top)=)i+;continue;elsereturn false;)default:i+;/剔除其他符号continue;if(s.top=s.base)匹配成功则最后栈空return true;elsereturn false;)int main()char str50;int i=0;char*p;p=str;printf(请输入字符串gets(str);if(match(p)printf(匹配成功!n);elseprintf(匹配失败n);return 0;中国矿业大学2007年硕士研究生入学试题三.请将一下语法改写成为switch语句。
if(s0)&(s=3)&(sl)|(s8)x=3;else x=l;else x=0;四.试编程序,找出1至99之间的全部同构数同构数是这样一组数:它出现在平方数的右边例如5是25右边的数,25是625右边的数,5和25都是同构数.(25分)void main()int i,j,s;int count=0;for(i=1;i100;i+)if(i10)s=1;else s=2;j=i*i;if(i=j%(int)pow(10,s)(printf(%dn,i);count+;)printf(total number:%dn,count);应该有 5 个,1,5,6,25,76五.通过赋初值按行顺序给2*3的二维数组赋予23 6等偶数,然后按列的顺序输出该数组void main()(int num23;int i=0,j=0;for(i=0;i2;i+)for(j=0;j3;j+)numij=2*(3*i)+j+1);for(j=0;j3;j+)for(i=0;i2;i+)(printf(%d,numij);中国矿业大学2008年C语言考研真题三.编写程序,对于给定的一个百分制成绩,输出相应的五分制成绩。
设:90分以上A,8089分 为 B,7079分 为 C,6069分 为 D,60分 以 下 为 E四.每个苹果0.6元,第一个买菜个苹果,第二天开始,每天买前一天的2倍,直至购买的苹果个数达到不超过100的最大值编写程序求每天平均花多少钱?#include main()int x=2,n=0,a;float ave=0,sum=0;scanf(%d,&a);for(x,n;x=a;n+)(sum=sum+0.8*x;x=2*x;)ave=sum/n;printf(%.2fn,ave);return 0;)五.若有说明:int a23=1,2,3,4,5,6冼 要 将 a 的行和列的元素互换后存到另一个二维数组b 中,试编写程序中国矿业大学(北京)采矿工程专业考研真题计算机语言基础2006三.编程实现以下功能:读入两个运算数(datal和data2)及一个运算符(op),计算表达式datal op data2的数值,其中op可为+,,*,I,(用switch语句实现)四.编写程序,从键盘输入6名学生的5门成绩,分别统计出每个学生的平均成绩include#define M 6#define N 5float average(float*p,int n)/*求平均分的函数*/float sum=0.;int i;for(i=0;in;i+)sum=sum+*(p+i);return sum/n;)void main()float scoreMN,aveM;/*定义数组score5用来放6 个学生5 门课成绩*/int i,j;for(i=0;iM;i+)printf(输入第d 个学生的d 门课的成绩:,i+1,N);for(j=0;jN;j+)scanf(%f,&scoreij);printf(n);)for(i=0;iM;i+)avei=average(scorei,N);printf(第d 个学生的平均。












