2006年北京师范大学452C语言考研试题_第1页
2006年北京师范大学452C语言考研试题_第2页
2006年北京师范大学452C语言考研试题_第3页
2006年北京师范大学452C语言考研试题_第4页
2006年北京师范大学452C语言考研试题_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2006年北京师范大学452C语言考研试题

1设圆的半径片1.5,圆锥高h=3,求圆的周长和椎体体积。用scanf输入数据,输出计算结

果。输出时要求有文字说明,取小数点后两位数字。

2输入两个整数,求它们相除的余数。用带参的宏来实现。

3求100~200之间的全部素数之和。

4计算圆周率的近似值,直到最后一项的绝对值小于10的-6为止,圆周率=4*

(1-1/3+1/5-1/7+1/9-....)

5写一个函数,判断一字符串是否回文。回文是指顺序和倒读都一样的字符串。

#include<stdio.h>

#include<string.h>

inthw(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将一个磁盘中的二进制文件复制到另一个磁盘中,两个文件名随命令行一起输入。

#include<stdio.h>

voidmain()

{

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(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为文本文件名;参数[句表示要打印的行数,该参数是可选

的,缺省值为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的解,写出每个参数的含义。

#include<iostream>//包含iostream的头文件

#include<math.h>

#include<string>〃字符串处理函数

usingnamespacestd;

classFindRoot//定义类FindRoot

{

private:

floata,b,c;

doubler,q,x1,x2;〃定义数据成员类型

intjud;

public:

voidInput。;//输入函数

voidDisplay。;//显示函数

voidFind。;//求根函数

);

〃以上是类的声明部分,以下是类的实现部分

voidFindRoot::lnput()

(

cout<<"这是一个求解ax2+bx+c=0的根的程序:"<<endl;〃总述程序

for(;;)

{

cout<<"输入方程系数a:

cin»a;

if(a==O)

coutvv"错误:a不能为0!!!:"«endl;

elsebreak;

}〃输入a,并对a的可能情况进行判断

coutvv"输入方程系数b:

cin»b;〃输入b

coutvv"输入方程系数c:

cin»c;〃输入c

)

voidFindRoot::Find()〃定义求根的函数

(

floatdelta=b*b-4*a*c;〃定义求根公式的数据类型

if(delta<0)

{jud=O;

r=-b/(2*a);

q=sqrt(-delta)/(2*a);〃有两个共辗复数根的情况

elseif(delta==O)

{

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:

{cout«"x1="«r<<"+"«q«"i"«endl;

cout<<"x2="<<r<<"-"<<q<<"i"<<endl;}break;〃显示有共辗复数根

时的解

case1:

cout«"x1=x2="«x1<<endl;break;〃显示有——实根时的解

case2:

coutvv"x1="<vx1vv'\n'v<"x2="vvx2v<endl;break;〃显示有两不同根情况的解

voidmain()〃主函数

{

while(1)

{

FindRootf;//定义类型

f.lnput();

f.FindQ;

f.Display。;//以上各函数按顺序执行

cout<<"是否退出?(Y退出,其它任意键继续)"<<endl;〃程序是否退出

charm[2];charY[]="Y";chary[]="y";〃定义字符串

cin»m;

if(strcmp(m,Y)==O||strcmp(m,y)==O)

break;//如果退出血终止运行

else

cout<<"请继续..."<<endl;〃如果不退出则继续执行

二、输入若干行文本,包括圆括号,方括号,字母,数字,以空符结束文本的输入,找

出括号不匹配(包括圆括号、方括号)的文本行并输出。画出程序的流程图或者写出程

序伪码,写出每个循环控制语句的用途

编写C/C++函数,验证一个字符串形式的表达式中的括号是否匹配,其中括号包括圆括号、方括号和

花括号。(2)编写main函数从键盘读入表达式,并调用你编写的函数。

#include<stdio.h>

#include<stdlib.h>

typedefstruct{

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]=='{')ll(P[i]=='DJ|(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;

else

returnfalse;

)

intmain(){

charstr[50];

inti=0;

char*p;

p=str;

printf("请输入字符串

gets(str);

if(match(p))

printf("匹配成功!\n");

else

printf("匹配失败……\n");

return0;

中国矿业大学2007年硕士研究生入学试题

三.请将一下语法改写成为switch语句。

if((s>0)&&(s<=10))

if((s>=3)&&(s<=6))x=2;

elseif((s>l)||(s>8))x=3;

elsex=l;

elsex=0;

四.试编程序,找出1至99之间的全部同构数。同构数是这样一组数:它出现在平方数的

右边。例如5是25右边的数,25是625右边的数,5和25都是同构数.(25分)

voidmain()

{

inti,j,s;

intcount=0;

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

{

if(i<10)

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;i<2;i++)

for(j=0;j<3;j++)

num[i][j]=2*((3*i)+j+1);

for(j=0;j<3;j++)

{

for(i=0;i<2;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的最大值。编写程序求每天平均花多少钱?

#include<stdio.h>

main()

{

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中,试

编写程序。

中国矿业大学(北京)采矿工程专业考研真题——计算机语言基础2006

三.编程实现以下功能:读入两个运算数(datal和data2)及一个运算符(op),

计算表达式datalopdata2的数值,其中op可为+,—,*,I,(用switch语句实现)

四.编写程序,从键盘输入6名学生的5门成绩,分别统计出每个学生的平均成绩。

#include<stdio.h>

#defineM6

#defineN5

floataverage(float*p,intn)/*求平均分的函数*/

{floatsum=0.;

inti;

for(i=0;i<n;i++)

sum=sum+*(p+i);

returnsum/n;

)

voidmain()

{floatscore[M][N],ave[M];/*定义数组score⑹[5]用来放6个学生5门课成绩*/

inti,j;

for(i=0;i<M;i++)

{printf("输入第%d个学生的%d门课的成绩:",i+1,N);

for(j=0;j<N;j++)

scanf("%f",&score[i][j]);

printf("\n");

)

for(i=0;i<M;i++)

{ave[i]=average(score[i],N

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论