软件学院高级语言作业参考答案-201212
- 格式:doc
- 大小:519.50 KB
- 文档页数:59
高级语言程序设计模拟试题及参考答案1.w是一个大于10的无符号整数,若w是n(n>=2)位的整数,函数求出w的低n-1位的数作为函数值返回。
如输入790404,输出为90404。
#include<stdio.h>unsigned fun(unsigned w){int j=1;unsigned sum=0;while (w!=0){if (w<10) break;sum=sum+w%10*j;j=j*10;w=w/10;}return sum;}int main(){unsigned x;printf("enter a unsigned integer number:");scanf("%u",&x);printf("the original data is :%d\n",x);if (x<10) printf("data error!");elseprintf("the result :%u\n",fun(x));printf("\n");return 0;2.完成decrypt函数,实现解密功能:将任意密文实现解密输出。
加密规则:字符串中所有小写英文字母循环加密。
如a到b,b到c,…,z到a。
如输入az ibwf b mjuumf bqqmf!,输出为:zy have a little apple!#include<stdio.h>#include<string.h>void decrypt(char *s){while (*s){if (*s>='a'&& *s<='z')if (*s=='a') *s='z';else*s=*s-1;s++;}}int main(){char t1[80],ch;gets(t1);printf("\nthe original data is :%s",t1);decrypt(t1);printf("\nthe resulted data is :%s",t1);printf("\n");return 0;3. 用选择法实现对10个整数按从大到小的顺序排序输出(要求用指针实现)。
《软件工程练习题及参考答案》一、单向选择题(四选一、每小题3分,共18分)1、面向对象(Object Oriented)方法是将现实世界的事物以对象的方式(B )到计算机世界的方法。
对应映射反映反射2、盒图也称为(D)或Chapin图。
这种表达方式取消了流程线,它强迫程序员以结构化方式思考和解决问题。
流程图框图判定表N-S图3、面向数据的设计方法就是根据问题的数据结构定义一组映射,把问题的数据结构转换为问题解的(A)结构。
程序数据逻辑物理4、人机界面的风格大致经过了(B)代的演变。
三四五六5、以下不属于白盒测试技术的是(D)逻辑覆盖基本路径测试循环覆盖测试等价类划分6、为改正软件系统中潜藏的错误而进行的维护活动称为(A)。
纠错性维护适应性维护改善性维护预防性维护二、填空题(每空2分,共18分)1.文档—一种数据媒体和其上所记录的(数据)。
2.机器语言、汇编语言:依赖于机器,面向(机器)3.软件有效性,指软件系统的时间和(空间)效率。
4.软件定义过程可通过软件系统的(可行性研究)和需求分析两个阶段来完成。
5.软件定义的基本任务是确定软件系统的工程(需求),也就是要搞清“做什么”。
6.为了使用户需求逐步精细化、完全化、一致化,通常采用(需求建模技术)。
04027.一个软件的深度是指其控制的(层数)。
8.以详细设计说明书为输入,将该输入用某种程序设计语言翻译成计算机可以理解并最终可运行的代码的过程叫(编码)过程。
9.软件维护是软件生命周期的(最后)一个阶段。
三、判断题(每小题2分,共24分,错误打X、正确打√)1.缺乏有力的方法学的指导和有效的开发工具的支持,这往往是产生软件危机的原因之一。
(√)2.一个好的开发人员应具备的素质和能力不包括具有良好的书面和口头表达能力。
(X)3.在用户需求分析时观察用户手工操作过程不是为了模拟手工操作过程,而是为了获取第一手资料,并从中提取出有价值的需求。
(√)4.快速原型技术的适用于软件产品要求大量的用户交互、或产生大量的可视输出、或设计一些复杂的算法等场合。
北邮高级语言程序设计j a v a作业集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]第一阶段作业一、多项选择题(共1道小题,共分)1.windows 下安装Java开发工具包时需要配置路径修改的变量名为____A.ClasspathB.PathC.TEMPD.windir知识第一单元过关习题点:学生答[A;B;]案:得分:[10]试题分值:提示:多选题2.二、单项选择题(共9道小题,共分)1.利用Java开发工具包编译和运行Java程序需要用到哪两个命令____A.java、javacB.java、javaC.javac、javadocD.javadoc、java知识第一单元过关习题点:学生答[A;]案:试题分得分:[10]值:提示:2.(错误)用Java虚拟机执行类名为Hello的应用程序的正确命令是____A.javaB.C.javaD.java Hello知识第一单元过关习题点:学生答[C;]案:得分:[0]试题分值:提示:3.4.编译一个Java程序的正确命令形式是____A.javac HelloB.Javac HelloC.javacD.知识第一单元过关习题点:学生答[C;]案:试题分得分:[10]值:提示:5.6.只包含一个带public方法的Java类Abc的java程序的正确命名是____A.AbcB.C.D.一个任意的标识符后带后缀.java知识第一单元过关习题点:学生答[B;]案:试题分得分:[10]值:提示:7.8.JVM机制的意义在于可以确立Java程序的____A.平台无关B.简单性C.安全性D.多线程知识第一单元过关习题点:学生答[A;]案:试题分得分:[10]值:提示:9.10.最早的程序语言是____A.机器语言B.汇编语言C.面向对象的程序语言D.面向过程的程序语言知识第一单元过关习题点:学生答[A;]案:试题分得分:[10]值:提示:11.12.小王编了一个打印他名字的程序public classic Hello{public void main (String[] args){ 你好,王凯”);}}该程序有如下哪种可能的结果____A.执行时产生异常B.程序不能编译C.执行后输出:“你好,王凯”D.执行后不输出任何东西知识第一单元过关习题点:学生答[A;]案:试题分得分:[10]值:提示:13.一般来说,程序的执行方式有____A.解释执行B.编译执行C.解释执行和编译执行D.上述都不正确知识第一单元过关习题点:学生答[C;]案:试题分得分:[10]值:提示:14.15.Java语言的特点不包括_____A.平台无关B.面向对象C.多重继承D.多线程知识第一单元过关习题点:学生答[C;]案:试题分得分:[10]值:提示:16.第二阶段作业一、多项选择题(共1道小题,共分)下列变量的声明中,正确的是____1int $x;1int 123;1int _123;1int #dim;1int %percent;1int *divide;1int central_sales_region_Summer_2005_gross_sales;知识点:第二单元过关自测学生答案:[A;C; G;]得分:[5]试题分值:提示:二、单项选择题(共19道小题,共分)阅读分析下列程序段:if(x>0){System .out .println(“first”);}else if (x<20) {System .out .println(“second”);}else {System .out .println(“third”)}当程序输出“second”时,x的范围为____ 1x<=01x<20&&x>01x>01x>=20知识点:主题5自测学生答案:[A ;]得分:[5]试题分值:提示:下列程序片段输出的是什么_____1 int a=3;1 int b=1;1 if(a=b)1编译错误,没有输出1正常运行,但没有输出知识点:主题5自测学生答案:[C ;]得分:[5]试题分值:提示:所有的程序均可用几种控制类型控制结构编写____ 1顺序结构、选择结构、循环结构1顺序结构、循环结构1顺序结构、选择结构1选择结构、循环结构知识点:主题5自测学生答案:[A ;]得分:[5]试题分值:提示:char的数值范围是____10~3276710~655351-256~2551-32768~32767知识主题3自测点:学生答案:[B ;]得分:[5]试题分值:提示:使整数变量x加1,下面表达式错误的是____ 1x++1++x1x=x+11x=+1知识点:主题4自测学生答案:[D ;]得分:[5]试题分值:提示:编译执行下列程序段后,c与result的值是____ boolean a=false;boolean b=true;boolean c=(a&b)&&(!b);int result=b= =false1:2;1c=false; result=1;1c=true; result=2;1c=true; result=1;1c= false; result=2;知识点:主题4自测学生答案:[D ;]得分:[5]试题分值:提示:(错误)下列对数组初始化的语句中不正确的是____ 1int x[] = {1,2,3};1int x[3] = {1,2,3};1int[] x = {1,2,3};1int x[] = new int[]{1,2,3};知识第二单元过关自测点:学生答案:[B ;]得分:[0]试题分值:提示:下列语句执行后,k的值为____ int j=4,i,k=10;for(i=2;i!=j;i++)k=k-i;14151617知识点:第二单元过关自测学生答案:[B ;]得分:[5]试题分值:提示:下列语句执行后,i,j的值是____ int i=1,j=8;do{if(i++>--j) continue; }while(i<4);1i=4,j=51i=5,j=41i=4,j=61i=5,j=6知识点:第二单元过关自测学生答案:[A ;]得分:[5]试题分值:提示:分割for语句的各个部分的符号是____ 1逗号1分号1圆点1顿号知识点:第二单元过关自测学生答案:[B ;]得分:[5]试题分值:提示:下列语句执行后,z的值为____ int x=3,y=4,z=0;switch(x%y+2){case 0:z=x*y ;break ; case 6:z=x/y ;break;case 12:z=x-y;break; default:z=x*y-x;}115191-2112知识点:第二单元过关自测学生答案:[B ;]得分:[5]试题分值:提示:下列语句执行后,x的值为____ int a=4,b=5,x=3;if(++a==b) x=x*a;13112115120知识点:第二单元过关自测学生答案:[C ;]得分:[5]试题分值:提示:14当条件为真和条件为假时,下列控制结构可以执行不同的动作的是_____ 1switch1while1for1if/else知识点:第二单元过关自测学生答案:[D ;]得分:[5]试题分值:提示:15在switch语句块中,用于处理其他所有情况的语句是____1default1otherwise1else if1else知识点:第二单元过关自测学生答案:[A ;]得分:[5]试题分值:提示:执行下列程序段后,ch,x,y的值正确的是____ int x=3,y=4 ;boolean ch ;ch=x < y||((++x)== (--y));1true,3,41true,4,31false , 3 ,41false , 4, 3知识点:第二单元过关自测学生答案:[A ;]得分:[5]试题分值:提示:有程序段:int x=2;int y=(x++)*5;执行后,y的值是____110114115116知识点:第二单元过关自测学生答案:[A ;]得分:[5]试题分值:提示:下面的程序段中,有两行是错误的,请指出____ class hello{public void main(){Boolean isok=’false’;}}11,312,312,413,4知识第二单元过关自测点:学生[D答案:;]得分:[5]试题分值:提示:变量名不能用哪些字符打头_____1美元符号1双斜线1字母1下划线知识点:第二单元过关自测学生答案:[B ;]得分:[5]试题分值:提示:第三阶段一、单项选择题(共20道小题,共分)下面哪个修饰符修饰的变量是所有同一个类生成的对象共享的____ 1public1private1static1final知识点:第三单元过关自测学生答案:[A ;]得分:[5]试题分值:提示:关于接口和抽象类,正确的是____1抽象类可以有构造方法1接口可以有构造方法1可以用new操作符操作一个抽象类1可以用new操作符操作一个接口知识点:第三单元过关自测学生答案:[A ;]得分:[5]试题分值:提示:下列说法正确的是____1子类只能覆盖父类的方法,而不能重载1子类只能重载父类的方法,而不能覆盖1子类不能定义和父类名同名同形参的方法,否则,系统将不知道使用哪种方法1重载就是一个类中有多个同名但有不同形参和方法体的方法知识点:第三单元过关自测学生答案:[D ;]得分:[5]试题分值:提示:关于抽象类,正确的是____1抽象类不可以有非抽象类1某个非抽象类的父类是抽象类,则这个子类必须重载父类的所有抽象方法1绝对不能用抽象类去创建对象1接口和抽象类是一回事知识点:第三单元过关自测学生答案:[C ;]得分:[5]试题分值:提示:在调用构造函数时,____1子类可以不加定义就使用父类的所有构造函数1不管类中是否定义了何种构造函数,创建对象时都可以使用默认构造函数1先调用父类的构造函数1先调用形参多的构造函数知识点:第三单元过关自测学生答案:[A ;]得分:[5]试题分值:提示:方法的作用不包含____1使程序结构清晰1功能复用1代码简洁1重复代码知识第三单元过关自测点:学生答案:[D ;]得分:[5]试题分值:提示:构造函数在____时被调用1创建对象时1类定义时1使用对象的方法时1使用对象的属性时知识点:第三单元过关自测学生答案:[A ;]得分:[5]试题分值:提示:return语句____1可以让方法返回数值1方法都必须包含1方法中不可以有多个return语句1不能用来返回对象知识点:第三单元过关自测学生[A答案:;]得分:[5]试题分值:提示:被声明为private,protected及public的类成员,在类外部____ 1只能访问声明为public的成员1只能访问到声明为protected和public的成员1都可以访问1都不可以访问知识点:第三单元过关自测学生答案:[A ;]得分:[5]试题分值:提示:分析下列程序:1 public class X {2 public Object m(){3 object o=new Float;4 object [] oa=new Object [1];5 oa[0]=o;6 o=null;7 oa[0]=null;8 return o;9 }10 }当第三行的Float对象产生后,在哪一行会作为垃圾被回收 ____ 1在第5行之后1在第6行之后1在第7行之后1不会在该方法中进行知识点:第三单元过关自测学生答案:[C ;]得分:[5]试题分值:提示:下列说法正确的是____1一个程序可以包含多个源文件1一个源文件中只能有一个类1一个源文件中可以有多个公共类1一个源文件只能供一个程序使用知识点:第三单元过关自测学生答案:[A ;]得分:[5]试题分值:提示:(错误)下列声明中哪一种可防止该类产生子类____ 1static public FooBar{}1private class FooBar{}1abstract class FooBar{}1final public class FooBar{}知识点:第三单元过关自测学生答案:[B ;]得分:[0]试题分值:提示:分析下列程序public class Test{public static void main(String[] args){ String s1=new String("true");boolean b1=new Boolean(true);if(b1)){"Equal");}}}以上程序的输出结果是____1无输出1输出“Equal”1在第5行出现编译错误1程序执行后产生异常知识点:第三单元过关自测学生答案:[A ;]得分:[5试题]分值:提示:下述概念中不属于面向对象方法的是______ 1对象、消息1继承、多态1类、封装1过程调用知识点:主题8自测学生答案:[D ;]得分:[5]试题分值:提示:关于被私有访问控制符private修饰的成员变量,以下说法正确的是_____1可以被三种类所引用:该类自身、与它在同一个包中的其他类在其他包中的该类的子类1可以被两种类访问和引用:该类本身、该类的所有子类1只能被该类自身所访问和修改1只能被同一个包中的类访问知识点:主题8自测学生答案:[C ;]得分:[5]试题分值:提示:关于方法的说法正确的是_____1方法中的形参可以和方法所属类的属性同名1方法必须有形参1同类不同的方法中不能有同名的自变量,否则会产生不可预测的结果1没有返回值的方法可以用void来表示,也可以不加知识点:主题8自测学生答案:[A ;]得分:[5]试题分值:提示:17下列关于修饰符混用的说法,错误的是1abstract不能与final并列修饰同一个类1abstract类中不可以有private的成员1abstract方法必须在abstract类中1static方法中能处理非static的属性知识点:主题9自测学生答案:[D ;]得分:[5]试题分值:提示: 18下列关于构造方法的叙述中,错误的是____1Java语言规定构造方法名与类名必须相同1Java语言规定构造方法没有返回值,但不用void声明1Java语言规定构造方法不可以重载1Java语言规定构造方法只能通过new自动调用知识点:主题9自测学生答案:[C ;]得分:[5]试题分值:提示:下列说法正确的是_____1Java中允许一个子类有多个父类。
《高级语言程序设计C++》平时作业答案————————————————————————————————作者:————————————————————————————————日期:一、分析程序,写输出结果1.#include<iostream.h>#include<math.h>void main(){int m, k, i ;for( m=1; m<=10; m+=2 ){ k = m/3;for( i=2; i<=k; i++ )if( m%i ) cout << m << " ";}}运行结果:7 92.#include<iostream.h>void fun();void main(){int i;for(i=1;i<5;i++) fun();cout<<endl;}void fun(){ static int a;int b=2;a += 2 ;cout<< a+b <<'\t';}运行结果:4 6 8 103.#include<iostream.h>int fun(int n){ if(n==0) return 1;return 2*fun(n-1);}void main(){ int a=5;cout<<fun(a)<<endl;}运行结果:324.#include<iostream.h>void main(){ char *cp="word";for (int i=0 ; i<4; i++ )cout<<cp+i << '\t';}运行结果:word ord rd d二、.根据程序功能填空。
1. 程序把10个数存储到一维数组a中,并求该数组中最大值。
1. 输入两个整数,要求用两个函数求出其最大公约数和最小公倍数,最大公约数和最小公倍数都在主函数中输出。
#include<stdio.h>int main(){int i,j,t;int max(int,int);int min(int,int);scanf("%d%d",&i,&j);if(i<j){t=i;i=j;j=t;}printf("%d %d\n",max(i,j),min(i*j,max(i,j)));return 0;}int max(int i,int j){int t;while(j){t=i%j;i=j;j=t;}return i;}int min(int p,int q){return p/q;}2. 输入4个整数,找出其中最大的数。
用函数的嵌套调用来处理。
#include<stdio.h>int main(){int max4(int,int,int,int); //对max4的函数声明int a,b,c,d;scanf("%d%d%d%d",&a,&b,&c,&d); //输入4个数printf("max=%d\n",max4(a,b,c,d));//调用4个数中的最大者return 0;}int max4(int a,int b,int c,int d) //定义max4函数{int max2(int,int); //对max2的函数声明return max2(max2(max2(a,b),c),d); //调用max2把作为函数值带回main函数}int max2(int a,int b){return(a>b?a:b); //返回条件表达式的值,即a和b中的大者}3. 用递归调用的方法求5!。
#include<stdio.h>int main(){int fac(int);int n;scanf("%d",&n);printf("%d!=%d\n",n,fac(n));return 0;}int fac(int n){if(n==0||n==1)return 1;elsereturn fac(n-1)*n;}4. 按以下递归公式求函数的值。
C语言程序设计课后习题参考答案(模块2-12)1.#include <stdio.h>main(){ printf(“school student study”);getch();}2.#include <stdio.h>main(){ printf(“*******\n”);printf(“*\n”);printf(“*\n”);printf(“*****\n”);printf(“*\n”);printf(“*\n”);printf(“*******\n”);getch();}3. #include <stdio.h>int sum(int x,int y){return x+y;}main(){ int x,y;scanf("%d%d",&x,&y);printf("%d",sum(x,y));getch();}一、选择题1.C2.C3.A4.C5.C二、根据前面所学的关于变量定义和格式控制等的相关知识,指出下面程序的错误,修改后上机调试。
1.#include <stdio.h>2.#define N3.144.{ char *name=”Lucy”;5.int x_1; float x_2=3,x_3=4;short s;7.scanf(“%d”,&x_1);10.printf(“%s’s result is:”,name);11.printf(“x_1=%d,s=%d\n”,x_1,s);三、指出下列printf()函数的输出结果1.65535,-12.123.a4.05.ffff6.2.1000007.2.800000e+008.2.89.c 10.65 11.a 12.abcd 13.student 14.0x15 15.0142 16.good 17.3.1416一、选择题1.A2.B3.D4.D5.B6.A7.D8.B9.A 10.B 11.B 12.D13.D 14.B 15.A二、填空题①&a,&b,&c②(a+b+c)/3③s>=80||(a>=80&&b>=80&&c>=80)三、程序分析1.a=5,x=62.a=6,b=0,c=123.104.-15.c=146.a=0,b=0,c=1四、程序分析填空题①&k②5③2<k&&k<=10④1.5*k+2⑤2*k-3五、程序设计实践1. #include<stdio.h>main(){ int n,x,y,z;scanf("%d",&n);while(1){ if(n<100||n>=1000){ printf("请输入三位数\n");scanf("%d",&n);}else break;}if(n>=100&&n<1000){ x=n/100;y=n%100/10;z=n%100%10;printf("x=%d,y=%d,z=%d",x,y,z);}elseprintf("请输入3位数!");getch();}2. #include <stdio.h>#include <string.h>main(){ char ch[10]="Beijin";int i;for(i=0;i<strlen(ch);i++)if((ch[i]>='x'&&ch[i]<='z')||(ch[i]>='X'&&ch[i]<='Z'))ch[i]=ch[i]-23;elsech[i]=ch[i]+3;puts(ch);getch();}一、写出下列程序的输出结果1.32.633.64.10 8 6 4 25.*##*6.k=6,k=-17.864208.x=11,i=109.x=10,i=610 .***************二、程序填空1.①0 ②sum+=I2.①0 ②1 ③8-i-j3.①flag ②(x-1)%5==0&&(x+1)%6==0&&(x+3)%7==0&&(x-1)%11==0 ③04.①i%10 ②i%100/10 ③i/100 ④g*g*g+s*s*s+b*b*b==i三算法分析与编程1. #include <stdio.h>main(){ long i=10000;int j,count=0;while(i<100000){ j=i%10;if(j==6&&i%3==0)count++;i++;}printf(“%d”,count);getch();}2. #include <stdio.h> main(){ int a,b,c;scanf("%d%d",&a,&b);if(a>b)c=a*a+a*b-6;else if(a==b)c=2*a*b*b;elsec=a*a-2*b+6;printf("c=%d",c);getch();}3. #include <stdio.h>main(){ float a,b,c;char ch;scanf("%f%c%f",&a,&ch,&b);while(1){if(b==0&&ch=='/'){printf("分母不能为零,请重输!\n");scanf("%f%c%f",&a,&ch,&b);}elsebreak;}switch(ch){case '+':c=a+b;break;case '-':c=a-b;break;case '*':c=a*b;break;case '/':c=a/b;break;default:printf("请输入+,-,*,/");break;}printf(“%g”,c);getch();}4. #include <stdio.h>main(){ float a,pf;int j;scanf("%f",&pf);while(1){ if(pf<0){ printf("请输入正确的数!\n");scanf("%f",&pf);}else break;}if(pf>0&&pf<=10)j=1;else if(pf>10&&pf<=20)j=2;else if(pf>20&&pf<=40)j=3;elsej=4;switch(j){ case 1:a=pf*0.1;break;case 2:a=10*0.1+(pf-10)*0.075;break;case 3:a=10*0.1+10*0.075+(pf-20)*0.05;break;default:a=10*0.1+10*0.075+20*0.05+(pf-20)*0.03;}printf("%g",a);getch();}5. #include <stdio.h>main(){ float x,x1=0;int i;for(i=5;i>0;i--){ x=(x1+1000)/(1+0.0063*12);x1=x;}printf("%g万",x);getch();}6. #include <stdio.h>main(){ int a,b,c,count=0;for(a=1;a<20;a++)for(b=1;b<32;b++)for(c=1;c<=100;c++){ if((a*5+b*3+c/3.0==100)&&(a+b+c==100)){printf("a=%d,b=%d,c=%d,%g\n",a,b,c,a*5+b*3+c/3.0);count++;}}printf("有%d种方法",count);getch();}一、选择题1.D2.D3.C4.D5.B6.B7.B二、填空题1.-12.ch=6,ck=53.94.45.while—when6.197.a[1][0]三、程序填空1.①i==j||i+j==2 ②sum+a[i][j]2.①a[j]%a[i]==0 ②a[i]!=0 ③03.①j++ ②a[i+1] ③a[j]=b[k]四、算法分析与编程1. #include <stdio.h>main(){ int a[4][3],b[5];int i,j,max,t;for(i=0;i<4;i++){ max=-32768;for(j=0;j<3;j++){ scanf("%d",&a[i][j]);if(a[i][j]>max)max=a[i][j];}b[i]=max;}for(i=0;i<4;i++)for(j=0;j<4-i;j++)if(b[j]>b[j+1]){ t=b[j];b[j]=b[j+1];b[j+1]=t;}for(i=0;i<4;i++)printf("%d\t",b[i]);getch();}2. #include <stdio.h>main(){ int a[10];int max=-32768,max2=-32768,i;for(i=0;i<10;i++){ scanf("%d",&a[i]);if(a[i]>max)max=a[i];}for(i=0;i<10;i++){ if(a[i]>max2&&a[i]!=max)max2=a[i];}printf("最大值=%d,次大值=%d",max,max2);getch();}3. #include <stdio.h>main(){ int a=1,b=1,c;int i;for(i=3;i<=10;i++){ c=a+b;a=b;b=c;}printf("%d",c);getch();}4. #include <stdio.h>#include <string.h>main(){ char t[10],s[5][10]={"China","America","France","English","German"};int i,j;for(i=0;i<5;i++)for(j=0;j<5-i;j++)if(strcmp(s[j],s[j+1])>0){ strcpy(t,s[j]);strcpy(s[j],s[j+1]);strcpy(s[j+1],t);}for(i=0;i<5;i++)printf("%s\n",s[i]);getch();}一、指出下列程序的运行结果1.1 3 62.-5 -4 -13.104.s=165.126.810127.98.34389.678二、程序设计1. #include <stdio.h>long f(int n);long fun(int n){ if(n==1||n==0)return 1;elsereturn fun(n-1)+f(n);}long f(int n){ if(n==1)return 1;elsereturn f(n-1)*n;}main(){ int i;scanf("%d",&i);printf("%ld",fun(i));getch();}2. #include <stdio.h>main(){ int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};int year,month,day,sum=0,i,flag=0;scanf("%d%d%d",&year,&month,&day);while(1){ if(year<=0||month<=0||month>12||day<=0||day>31||(month==2 &&day>29)){ printf("请输入正确的年月日\n");scanf("%d%d%d",&year,&month,&day);}else break;}if((year%4==0&&year%100!=0)||year%400==0) flag=1;for(i=0;i<month-1;i++)sum+=a[i];sum+=day;if(flag==1&&month>2)sum+=1;printf("是本年的第%d天",sum);getch();}3. #include <stdio.h>#include <math.h>float fun(int a,int b){if(b==0) return 1;else if(b<0)return 1.0/(fun(a,abs(b)-1)*a);elsereturn fun(a,b-1)*a;}int main(){ int x,y;float t;scanf("%d%d",&x,&y);t=fun(x,y);printf("%g",t);}一、指出下列程序的运行结果1.1052.98768763.ENGLISH4.63855.studyhardeveryday6.dog,d cat,a horse,r7.sum=368.bghmdrd9.s=8206 10.14 11.z二、改错⑤temp=name[0];⑨printf(“%s”,temp);⑦if(strcpy(temp,name[i])>0②#incude <string.h)三、程序填空1.①.gets(str2)②.m<0③.copystr(str1,str2,m)④.m-1⑤.p2++⑥.*p1=*p2⑦.p1++⑧’\0’2.①.0②.a[j]&&b[k]>a[j]③.i>=j④.补充a[i+1]=a[i];⑤a[j]=b[k]四、算法与编程1. #include <stdio.h>#include <string.h>main(){ char *t,*s[5]={"China","America","France","English","German"};int i,j;for(i=0;i<5;i++)for(j=0;j<5-i;j++)if(strcmp(s[j],s[j+1])>0){ t=s[j];s[j]=s[j+1];s[j+1]=t;}for(i=0;i<5;i++)printf("%s\n",s[i]);getch();}2. #include <stdio.h>#include <string.h>main(){char*month[12]={"January","February","March","April","May","June","July ","August","september","October","November","December"};int i,n;scanf("%d",&n);while(1){ if(n<=0||n>12){ printf("错误!请输入1-12之间的整数\n");scanf("%d",&n);}else break;}printf("%s",month[n-1]);getch();}一、指出下面程序输出的结果1.6,6,3,4,2.41 443.0-7二、程序填空1.strcmp(b[2].name,x)!=0&&i<n2.i<m3.strcmp(xm,”#”)==04.strcpy(s[i].name,xm)5.strcpy(s[i].telephone,telph)三、程序设计1.#include <stdio.h>struct course{ char name[20];int data;char teacher[20];}a[2]={{"math",8,"mathteacher"},{"English",7,"Englishteacher"}}; main(){ int i;printf("course\tscore\tteacher\n");for(i=0;i<2;i++)printf("%s\t%d\t%s\n",a[i].name,a[i].data,a[i].teacher);getch();}2.#include <stdio.h>struct date{ int year;int month;int day;}a;main(){ int day[12]={31,28,31,30,31,30,31,31,30,31,30,31};int sum=0,i,flag=0;scanf("%d%d%d",&a.year,&a.month,&a.day);while(1){ if(a.year<=0||a.month<=0||a.month>12||a.day<=0||a.day>31) { printf("请输入正确的年月日");scanf("%d%d%d",&a.year,&a.month,&a.day);}else break;}if((a.year%4==0&&a.year%100!=0)||a.year%400==0) flag=1;for(i=0;i<a.month-1;i++)sum+=day[i];sum+=a.day;if(flag==1&&a.month>2)sum+=1;printf("是本年的第%d天",sum);getch();}一、指出下面程序输出的结果1.302.63.114.155.2 4 166.314.000000二、程序设计1. #include <stdio.h>#include <math.h>#define S(a,b,c) ((a+b+c)/2)#define AREA(s,a,b,c) sqrt(s*(s-a)*(s-b)*(s-c)){ float a,b,c;scanf("%f%f%f",&a,&b,&c);printf("%g\n",S(a,b,c));printf("%g",AREA(S(a,b,c),a,b,c));getch();}2. #include <stdio.h>#include <string.h>#define CHANGEmain(){ char ch[100];int i,j;gets(ch);#ifdef CHANGEfor(i=0;i<strlen(ch);i++){ if(ch[i]>=97&&ch[i]<122)ch[i]=ch[i]+1;if(ch[i]==122)ch[i]='a';}printf("%s",ch);printf("%s",ch);#endifgetch();}3. #include <stdio.h>#define R(x) ((x%4==0&&x%100!=0)||x%400==0)main(){ int year;scanf("%d",&year);if(R(year)==1)printf("闰年");elseprintf("平年");getch();}1.①h ②n>1 ③p->next ④q->next ⑤p->next ⑥p->code ⑦h ⑧n2.①h->next ②t->next ③p->next ④head->next!=NULL ⑤head->next⑥head!=t ⑦head ⑧p ⑨q->next3.①p1->num==m ②p1 ③p->next=p1 ④p1->next4.①h ②p1 ③p ④p2->next一、选择题1.B2.B3.B4.D5.D二、程序填空1.①fputc()、fputs()、fprintf()、fwrite() ②fgetc()、fgets()、fscanf()、fread()2.①r ②fgetc(fp) ③count++ ④q->next ⑤fclose(fp)3.①w ②(ch=getchar()) ③ch,fp三、程序设计1.#include <stdio.h>#include <windows.h>main(){ FILE *fp;char ch;int I;fp=fopen(“d:test.txt”,”w+”);while((ch=getchar())!=’!’){ if(ch>=97&&ch<=122)ch=ch-32;fputc(ch,fp);fclose(fp);getch();}2.#include <stdio.h>#include <windows.h>main(){ FILE *fp;char ch;int x,i;fp=fopen("d:\\test.dat","w+"); for(i=1;i<=3;i++){ scanf("%d",&x);fprintf(fp,"%d",x);}rewind(fp);while(!feof(fp)){ ch=fgetc(fp);putchar(ch);}fclose(fp);getch();。
第1章一、选择题1. C2. C3. B二、填空题1. main2. { }3. ;(分号)4. 机器语言5. 编译6. 链接7. 运行8. 单行注释块注释三、思考题1. 特定的机器语言较难理解,不易于人们编写相关的程序。
2. 计算机程序设计语言从机器语言发展到结构化程序设计语言极大地提高了编写程序的效率,但到了20世纪90年代,结构化程序设计对软件危机的缓解已起不到太大的作用,大型软件的投资失败,软件系统的不可维护性与不可靠性等现象依然存在。
在抽象数数据类型和交互式环境设计思想的基础上,出现了面向对象的程序设计技术。
3. 面向对象的程序设计是以所处理的数据为中心,而不是以函数功能为中心来编写程序的,它采用对象作为描述问题的实体。
对象是包含现实世界事物特征的抽象实体,反映了系统的信息交互的能力,因此,用面向对象的程序设计方法设计出的程序具有较强的稳定性。
4. 预处理命令、输入输出、语句、函数、常量、变量、类。
5. 通过输入输出的函数来完成。
6.(1)建立应用项目。
①建立项目及工作区。
②建立主程序文件。
(2)运行程序。
选择“编译”菜单中的“编译程序名.cpp”,编译源程序;然后选择“编译”菜单中的“编译文件名.exe”连接目标文件。
四、上机操作题1. 写出运行结果:(1)This is a C++ program。
(2)请输入两个数字:3 23+2=52. 程序如下:#include <iostream>using namespace std;void main(){cout<<"* * * * * * * * * * * * * *\n";cout<<" Hello World! \n";cout<<"* * * * * * * * * * * * * *\n";}第2章一、选择题1. C2. A3. B4. C5. B二、填空题1. 按位取反2. 等于3. 0~42949672954. 0x开头的整数5. \n6. 以‘\0’作为结束标志7. short -> int ->long -> float -> double三、思考题1. C++基本数据类型有char(字符型)、int(整型)、float(浮点型)、double(双精度型)。
第六章一、单选题二、分析下列各程序的运行结果1.该程序实现了两个字符串的连接。
2.该程序统计输入结束后数组中的字符个数。
三、程序设计1.答案:(1) float *fptr;(2) fptr=&number1;(3) printf("%f\n",*fptr);(4) number2=*fptr;(5) printf("%f\n",number2);(6) printf("%p\n",&number1);(7) printf("%p\n",fptr);打印出来的值相等2.答案:#include <stdio.h>void main(){char s1[10]="1234567";char s2[10]="";char *p1;char *p2;p1=s1;p2=s2;for(;*p2=*p1;p1++,p2++){}printf("%s \n",s2);}3.答案:#include <stdio.h>#include <string.h>{char str[100],ch;char *p;int j=0;while(1){scanf("%c",&ch);if(ch=='\n'){str[j]='\0';break;}else str[j]=ch;j++;}p=str;int H_letter=0,L_letter=0,space=0,number=0,other=0,i;int len=strlen(str);printf("%d \n",len);for(i=0;i<strlen(str);i++){if(*p>=65&&*p<=90)++H_letter;else if(*p>=97&&*p<=122)++L_letter;else if(*p==' ')++space;else if(*p>=48&&*p<=57)++number;else++other;p++;}printf("H_letter=%d\nL_letter=%d\nspace=%d\nnumber=%d\nother=%d\n",H_letter ,L_letter,space,number,other);}4.答案:#include <stdio.h>void main(){int a[3][3];int b[3][3];for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("转置之前的矩阵如下:\n");for(i=0;i<3;i++){printf(" ");for(j=0;j<3;j++)printf("%d ",a[i][j]);printf(" \n");}printf("转置之后的矩阵如下:\n");for(i=0;i<3;i++){for(j=0;j<3;j++){b[i][j]=a[j][i];printf("b[%d][%d]=%d\n",i,j,b[i][j]);}}for(i=0;i<3;i++){printf(" ");for(j=0;j<3;j++)printf("%d ",b[i][j]);printf(" \n");}}5.答案:#include <stdio.h>#include <string.h>void main(){char str[10];int i;scanf("%s",str);for(i=strlen(str);i>=0;i--){printf("%c",str[i-1]);}}。
软件学院 高级语言程序设计作业参考答案
2012年12月 目录 第二章 简单程序 .......................................................... 1 第三章 分支程序设计 .................................................. 3 第四章 循环程序设计 .................................................. 9 第五章 模块化程序设计——函数 ............................ 15 第六章 批量数据组织——数组 ................................ 20 第七章 指针 ................................................................ 34 第八章 表单数据组织——结构体 ............................ 46 第九章 再论函数 ........................................................ 50 第十章 外部数据组织——文件 ................................ 51 第十一章 程序开发 .................................................... 54 第十二章 动态数据组织 ............................................ 55 《程序设计基础》课后作业参考答案 第二章 简单程序
1 第二章 简单程序
P44:2.1,2.5,2.8 2.1 用赋值表达式表示下列计算 1) cbaxy 2) 2/5262)(lnedax 3) yXaXXsincos2
4) RRRR1111123
5)232)4(7)2(5)2(31xxxxxy
参考答案: 1) y=pow(x,a+pow(b,c)) 2) x=pow(log(sqrt(a+d*d))-exp(26),5.0/2) 3) y=sin(x)/(a*x)+fabs(cos(3.1415926*x/2)) 4) R=1.0/(1.0/R1+1.0/R2+1.0/R3) 5) y=x/(1+(x/(3+(pow(2*x,2)/(5+(pow(2*x,3)/(7+pow(4*x,2)))))))
2.5 编写程序,输入两个整数,分别求它们的和、差、积、商、余数并输出。 参考答案: #include void main() { int m,n; printf("请输入2个整数\n"); scanf("%d%d",&m,&n); printf("%d+%d=%d\n",m,n,m+n); printf("%d-%d=%d\n",m,n,m-n); printf("%d*%d=%d\n",m,n,m*n); printf("%d除以%d:%f\n",m,n,(float)m/n); printf("%d除以%d的余数:%d\n",m,n,m%n); }
2.8 已知摄氏温度C与华氏温度F的转换关系是)32(95FC,编写一个摄氏温度与华氏温度转换的程序,输入C,输出F. 《程序设计基础》课后作业参考答案 第二章 简单程序 2 参考答案: #include void main() { float f,c; printf("请输入摄氏温度的值:\n"); scanf("%f",&c); //输入33 //f=9*c/5+32; //结果为91.4 f=9.0/5*c+32; //结果为91.4 //f=9/5*c+32; //结果为65 printf("转换为华氏温度是:%f\n",f); }
} 《程序设计基础》作业参考答案 第三章 分支程序设计
3 第三章 分支程序设计
P61:3.2,3.8,3.9,3.10,练习题1 3.2 编写程序,输入一个字母,若其为小写字母,将其转换成相应的大写字母,然后输出。 参考答案: #include void main() { char c1; printf("请输入一个小写字母:\n"); scanf("%c",&c1); if(c1>=97&&c1<=122) // if(c1>='a'&&c1<='z') { c1=c1-32; // c2=c1-('a'-'A'); printf("该字母对应的大写字母是:%c\n",c1); } else printf("该字符不是小写字母\n"); } 程序运行结果:
3.8 编写程序,判断给定的3位数是否为Armstrong数,Armstrong数是指其值等于它本身每位数字立方和的数,如153就是一个Armstrong数。 333351153
参考答案: #include #include void main() { int data; //变量声明,用来存储输入的三位整数 int bit0,bit1,bit2; //变量声明,分别用来存储每一位上的数字 int tmp0; //临时变量 printf("请输入一个三位整数:\n"); scanf("%d",&data); 《程序设计基础》作业参考答案 第三章 分支程序设计 4 if(data>999||data<100) //检验数据 { printf("输入数据错误.\n"); return; //退出当前函数 } bit0=data%10; tmp0=data/10; bit1=tmp0%10; bit2=tmp0/10; if(pow(bit2,3)+pow(bit1,3)+pow(bit0,3)==data) printf("%d是Armstrong数.\n",data); else printf("%d不是Armstrong数.\n",data); } 程序运行结果:
3.9 编写程序,读入一个点的X、Y,计算
在第四象限当在第三象限当在第二象限当在第一象限当YXYXYXYXYXYXYXZYX,),(tan,,ee,,sinsin,,lnln
32 参考答案: #include #include #define EPS 1e-6 void main() { float x,y,z; printf("请输入x和y的值:\n"); scanf("%f%f",&x,&y); if(fabs(x){ printf("输入错误,该点在坐标轴上.\n"); return; } if(x>0) { if(y>0)//第一象限 z=log(x)+log(y); 《程序设计基础》作业参考答案 第三章 分支程序设计 5 else//第四象限 z=tan(x+y); } else { if(y>0)//第二象限 z=sin(x)+cos(x); else//第三象限 z=exp(2*x)+exp(3*y); } printf("z=%f\n",z); }
3.10 编程序,输入一个整数,判断它能否被3 、5 、7整除,并输出如下信息。 A. 能同时被3 、5 、7整除; B. 能同时被两个数整除,并指明是哪两个数; C. 能被一个数整除,并指明是哪个数; D. 不能被所有数整除。 参考答案1: #include "stdio.h" void main (){ int n; int a,b,c; printf("please input n:"); scanf("%d",&n); a=b=c=0; //important! if (n%3==0) a=1; if (n%5==0) b=1; if (n%7==0) c=1; switch (a+b+c){ case 3: printf("3,5,7"); break; case 2: if (a==0) printf("5,7"); if (b==0) printf("3,7"); if (c==0) printf("3,5"); break; case 1: if (a==1) printf("only 3"); if (b==1) printf("only 5"); if (c==1) printf("only 7"); break; default:printf("never can be!"); } } 参考答案二: #include void main()