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 写一个函数,判断一字符串是否回文回文是指顺序和倒读都一样的字符串include#includeint hw(char f[25]) { int a, b; a = 0; //初始化a 指向f的首地址 b = strlen(f)-1; //指向f的最后一个 while (a <= b) { if (f[a++] != f[b--]) { printf("No!\n"); return 0; //程序结束 } } printf("Yes!\n"); return 1; //a>=b 是正确的}int main() { char f[25]; int HW;// a, b = 0; 不需要 scanf("%s", f); HW = hw(f); return 0;}6 有一篇文章,共有3行文字,每行有80个字符。
要求分别统计出其中英文大写字母,数字以及其它字符的个数7 将一个磁盘中的二进制文件复制到另一个磁盘中,两个文件名随命令行一起输入include void main(){FILE *from,*to;char in[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 -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,求解一元二次方程ax^2+bx+c=0的解,写出每个参数的含义include //包含iostream的头文件#include #include//字符串处理函数using namespace std;class FindRoot//定义类FindRoot{private: 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的根的程序:"<>a; if(a==0) cout<<"错误:a不能为0!!!:"<>b;//输入b cout<<"输入方程系数c:"; cin>>c;//输入c}void FindRoot::Find()//定义求根的函数{ float delta=b*b-4*a*c;//定义求根公式的数据类型 if(delta<0) {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: {cout<<"x1="<>m;if(strcmp(m,Y)==0||strcmp(m,y)==0)break;//如果退出则终止运行elsecout<<"请继续……"<
画出程序的流程图或者写出程序伪码,写出每个循环控制语句的用途编写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(p[i]!='\0'){ //开始循环 “\0”是字符串的结束标志 if((p[i]=='{')||(p[i]=='[')||(p[i]=='(')){ //筛选 ‘(’、‘{’、‘[’进栈 if(s.top-s.base>=s.size){ //入栈判栈满 printf("栈满\n"); return false; } *(s.top)=p[i]; s.top++; i++; }else{ switch(p[i]){ case ')' : if(s.base==s.top){ //遇到‘)’‘}’‘]’则开始匹配,要是栈顶元素能匹配成功,则继续,否则直接return,里面的一些条件可以自己想想 return false; }else if(*(--s.top)=='('){ i++; continue; }else{ return false; } case '}' : if(s.base==s.top){ return false; }else if(*(--s.top)=='{'){ i++; continue; }else{ return false; } case ']' : if(s.base==s.top){ return false; }else if(*(--s.top)=='['){ i++; continue; 。