C语言考研试题.doc_第1页
C语言考研试题.doc_第2页
C语言考研试题.doc_第3页
C语言考研试题.doc_第4页
C语言考研试题.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

2006年北京师范大学452C语言考研试题1 设圆的半径r=1.5,圆锥高h=3,求圆的周长和椎体体积。用scanf输入数据,输出计算结果。输出时要求有文字说明,取小数点后两位数字。2 输入两个整数,求它们相除的余数。用带参的宏来实现。3 求100200之间的全部素数之和。4 计算圆周率的近似值,直到最后一项的绝对值小于10的-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(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 -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:Input()cout这是一个求解ax2+bx+c=0的根的程序:endl;/总述程序 for(; ;) couta; if(a=0) cout错误:a不能为0!:endl; else break; /输入a,并对a的可能情况进行判断 coutb;/输入b coutc;/输入cvoid FindRoot:Find()/定义求根的函数 float delta=b*b-4*a*c;/定义求根公式的数据类型 if(delta0) jud=0; r=-b/(2*a); q=sqrt(-delta)/(2*a);/有两个共轭复数根的情况 else if(delta=0) x1=-b/(2*a); jud=1;/有两个相同的根的情况 else x1=(-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=x1endl;break;/显示有一实根时的解case 2:coutx1=x1nx2=x2endl;break;/显示有两不同根情况的解void main()/主函数while(1) FindRoot f;/定义类型 f.Input(); f.Find(); f.Display();/以上各函数按顺序执行 cout是否退出?(Y退出,其它任意键继续)m;if(strcmp(m,Y)=0|strcmp(m,y)=0)break;/如果退出则终止运行elsecout请继续endl;/如果不退出则继续执行 二、输入若干行文本,包括圆括号,方括号,字母,数字,以空符结束文本的输入,找出括号不匹配(包括圆括号、方括号)的文本行并输出。画出程序的流程图或者写出程序伪码,写出每个循环控制语句的用途编写c/c+函数,验证一个字符串形式的表达式中的括号是否匹配,其中括号包括圆括号、方括号和花括号。(2) 编写main函数从键盘读入表达式,并调用你编写的函数。#include#includetypedef struct char *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) /开始循环 “0”是字符串的结束标志if(pi=)|(pi=)|(pi=() /筛选 (、进栈if(s.top-s.base=s.size) /入栈判栈满printf(栈满n);return false;*(s.top)=pi;s.top+;i+;else switch(pi)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;case : 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)&(s1)|(s8)x=3;else x=1;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的二维数组赋予 2 3 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三编程实现以下功能:读入两个运算数(data1和data2)及一个运算符(op),计算表达式data1 op data2 的数值,其中op可为+,*,/,(用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; /*定义数组score65用来放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个学生的平均分为:%.2fn,i+1,avei); 五,定义一个含有30个整形元素的数组,按顺序分别赋值从2开始的偶数,然后按顺序每5个数求出一个平均值,放在另一个数组中并输出。试编程。#include void main()int a30,i,j=0;float b6,s=0;for(i=1;i31;i+)ai-1=i*2;for(i=0;i30;i+)s+=ai;if(i+1)%5=0&i)bj+=s/5.0;s=0;for(i=0;i30;i+)printf(%d ,ai);printf(n);for(i=0;i6;i+)printf(%f ,bi);printf

温馨提示

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

评论

0/150

提交评论