第一篇:内师大《JAVA语言程序设计》期末考试试题及答案5(应考必备题库)
《JAVA语言程序设计》期末考试试题及答案5(应考
必备题库)
一、单选题
1、当某一线程正处于休眠状态,而另一个线程用 Thread 类中的 interrupt()方法中断它时,抛出的异常类型是()。A)IOException
B)RuntimeException C)InterruptedException
D)ClassNotFoundException
2、下面的程序段的功能是()。
File file1=new File(“d:xxxyyyzzz”);file1.mkdirs();A)在当前目录下生成子目录:xxxyyyzzz
B)生成目录: e:xxxyyyzzz C)在当前目录下生成文件xxx.yyy.zzz
D)以上说法都不对
3、应用程序的main方法中有以下语句,则输出的结果是()。
String s = “xxxxxxxxxxxxxxx#123#456#zzzzz”;int n = s.indexOf(“#”);int k = s.indexOf(“#”, n+1);String s2 = s.substring(n+1, k);System.out.println(s2);
A)123456
B)123
C)xxxxxxxxxxxxxxx
D)zzzzz
4、关于下面的程序Test.java说法正确的是()。
public class Test {
String x=“1”;
int y;
public static void main(String args[]){
int z=2;
System.out.println(x+y+z);
}
} A)3
B)102
C)12
D)程序有编译错误
5、应用程序的main方法中有以下语句,则输出的结果是()。
int b[][]={{1, 1, 1}, {2,2}, {3}};
int sum=0;
for(int i=0;i for(int j=0;j sum+=b[i][j]; } } System.out.println(“sum=”+sum);A)10 B)6 C)9 D)13 6、应用程序的main方法中有以下语句,则执行后输出的结果是()。 int[] x = {125,21,5,168,98};int min = x[0];for(int i=1;i } System.out.println(min);A)125 B)5 C)98 D)168 7、应用程序的main方法中有以下语句,则输出的结果是()。 Hashtable hashtable=new Hashtable();hashtable.put(“100”,“aaa”);hashtable.put(“200”,“bbb”);hashtable.put(“300”,“ccc”); System.out.println(hashtable.get(“300”).toString() + hashtable.get(“200”).toString() + hashtable.get(“100”).toString()); A)aaa B)bbb C)ccc D)cccbbbaaa 8、以下关于java异常说法不正确的是()。 A)Throwable 类是 Java 语言中Error类和Exception类的父类。 B)当异常对象是Exception类(或其子类)的实例时,能通过 Java 虚拟机或者 throw 语句抛出该异常对象,并能通过try…catch…finally处理。if(x[i] < min)min = x[i]; C)如果只用一个catch块捕捉多个异常对象,则catch 子句中的参数类型应是所有异常对象的父类。D)以上说法都不对。 9、下面的程序创建了一个文件输出流对象,用来向文件test.txt中输出数据,假设程序当前目录下不存在文件test.txt,编译下面的程序Test.java后,将该程序运行3次,则文件test.txt 的内容是()。 import java.io.*;public class Test { } A)ABCABC B)ABCDE C)Test D)ABCDE ABCDE ABCDE 10、下面说法不正确的是()? A)列表(List)、集合(Set)和映射(Map)都是java.util包中的接口。B)List接口是可以包含重复元素的有序集合。C)Set接口是不包含重复元素的集合。 D)Map接口将键映射到值,键可以重复,但每个键最多只能映射一个值。public static void main(String args[]){ } try { } catch(IOException e){ } System.out.println(e.toString());String s=“ABCDE”;byte b[]=s.getBytes();FileOutputStream file=new FileOutputStream(“test.txt”, true);file.write(b); file.close(); 二、多选题 1、下面哪些关键字能用来控制对类成员的访问()? A)public B)protected C)private D)default 2、下面关于Java中异常处理try块的说法正确的是()? A)try块后通常应有一个catch 块,用来处理try块中抛出的异常。 B)catch 块后必须有finally块。 C)可能抛出异常的方法调用应放在try块中。 D)对抛出的异常的处理必须放在try块中 3、线程对象的生命周期中,通常经历下面哪些状态()。A)新建 B)运行 C)就绪 D)死亡 4、定义如下的二维数组b,下面的说法正确的是()。int b[][]={{1, 2, 3}, {4, 5},{6, 7, 8}}};A)b.length的值是3。B)b[1].length的值是3。 C)b[1][1]的值是5。D)二维数组b的 三、程序阅读题 1、阅读下面的程序代码,并回答问题(问3分,问3分,共6分)。 String s1 = new String(“abcde”);String s2 = new String(“abcde”);boolean b1= s1.equals(s2);boolean b2 = s1== s2; System.out.print(b1+“ ”+b2); 程序段执行后,在命令行的输出结果如何? 解释输出(1)的结果的原因? 答案: true false equals方法比较两个字符串的内容是否相等;运算符“==”判断两个对象是否指向同一个引用,即是否为同一个对象。 2、阅读下面的程序,并回答问题(问3分,问3分,共6分)。 import java.io.*;public class Test { public static void main(String args[])throws IOException { BufferedReader buf=new BufferedReader(new InputStreamReader(System.in)); while(true){ String str = buf.readLine(); if(str.equals(“quit”)) break; int x=Integer.parseInt(str); System.out.println(x*x); } } } 编译运行上面的程序: 从键盘输入10,回车后输出的结果如何? 从键盘输入exit,回车后程序能正确执行吗?为什么? 答案: 100 不能;因为方法Integer.parseInt(str)不能将字符串“exit”转化为整数,抛出异常。 3、写出下面的程序编译、运行后的结果(6分)。 public class Test{ public static void main(String args[]){ new Student(“Tom”, 'm', 90, 88); new Student(“Jack”, 'm', 66, 89); new Student(“Mary”, 'f', 76, 86); System.out.println(“nametsextchinesetenglish”); Student.print(); } } class Student { protected String name; protected char sex; protected int chinese; protected int english; protected Student next; static Student list; Student(String name, char sex, int chinese, int english) this.name=name; this.sex=sex; this.chinese=chinese; this.english=english; this.next=list; list=this; } static void print(){ Student friend=list; if(friend==null) System.out.println(“The list is empty.”); else { do{ System.out.println(friend.toString()); { friend=friend.next; }while(friend!=null); } } public String toString(){ return new String(name+“t”+sex+“t”+chinese+“t”+english); } } 答案: name sex chinese english Mary f Jack m Tom m 学弟学妹们,学长只能帮你们到这儿了!速速分享吧!保过!QQ:710214463 C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是() A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是() A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由() A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是() A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为() A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是() A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后( #include main(){ int x; float y; scanf(“%3d%f”,&x,&y); } A、12345 B、123 C、45 D、345 8、若有以下定义int a,b;float x,则正确的赋值语句是() A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x); 9、以下程序的执行结果是() #include 10、巳知字母A的ASCII码是65,以下程序的执行结果是() #include main() { char c1='A',c2='Y'; printf(“%d,%dn”,c1,c2); A、A,Y B、65,65 C、65,90 D、65,89 11、下列运算符中优先级最高的是() A、< B、十 C、% D、!= 12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是()。 A、’x’&&’y’ B、x<=y C、x||y+z&&y-z D、!((x<y)&&!z ||1) 13、判断char型变量cl是否为小写字母的正确表达式为() A、’a’<=c1<=f’z’ B、(c1>=a)&&(c1<=z) C、(‘a’>=c1)(‘z’<=c1)D、(c1>=’a’)&&(c1<=’z’) 14、字符串“a”在内存中占据的字节个数为() A、0 B、1 C、2 D、3 15、下面有关for循环的正确描述是() A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判定表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环体语句中,可以包含多条语句,但要用花括号括起来 16、下面程序的运行结果是() #include main() {int num=0; while(num<=2) {num++; printf(“%d ,num); } } A、1 B、1 2 C、1 2 3 D、1 2 3 4 17、以下描述正确的是() A、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。 B、do-while循环由do开始,用while结束,在while(表达式)后面不能写分号。 C、在do-while循环体中,一定要有能使while后面表达式的值变成零(“假”)的操作。 D、do-while循环中,根据情况可以省略while。 18、以下对一维整形数组a的正确说明是() A、int a(10);B、int n=10,a[n]; C、int n;D、int a[10]; scanf(“%d”,&n); int a[n]; 19、以下对二维数组a的正确说明是() A、inta[3][];B、float a(3,4); C、double a[1][4];D、float a(3)(4); 20、若二维数组a有m列,则在a[j]前面的元素个数为() A、j*m+i B、i*m+j C、i*m+j-1 D、i*m+j+1 二、填空题(本大题共10空,每空2分,共20分) 1、结构化设计中的三种基本结构是 ___________________ 2、在C语言中的实型变量分为两种类型,它们是________ 和 _________ 3、当a=5,b=4,c=2时,表达式 a>b!= c的值是 _______ 4、下列程序运行后的输出结果是 _____________ #include main() { int i,j; for(i=4;i>=1;i--) {printf(“*”); for(j=1;j<=4-i;j++) printf(“*”); printf(“n”); } 5、若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是___________ a[2][1]得到的初值是 ________________ 6、在C语言中,二维数组元素的内存中的存放顺序是_______________ 三、程序分析题(本大题共2题,每题4分,共8分,描述程序功能并写出程序执行结果) 1、#include main() {int a,s,n,count; a=2;s=0;n=1;count=1; while(count<=7){n=n*a;s=s+n;++count;} printf(“s=%d”,s); } 2、#include main() {int a=[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) if(i==j)sum=sum+a[j]; printf(“sum=%dn”,sum); } 四、编程题(本大题共4题,每题8分,共32分) 1、编写摄氏温度、华氏温度转换程序。要求:从键盘输入一个摄氏温度,屏幕就显示对应的华氏温度,输出取两位小数。转换公式:F=(C+32)×9/5。 2、试编程判断输入的正整数是否既是5又是7的正倍数。若是,则输出yes;否则输出no。 3、判断数m是否为素数(只能被1和它本身整除的整数)? 4、对15个数进行排序,按从小到大的顺序输出。 《C语言程序设计》期末考试试卷(A卷)评分标准及标准答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、B 2、D 3、B 4、B 5、C 6、D 7、B 8、B 9、A 10、D 11、C 12、D 13、D 14、C 15、D 16、C 17、C 18、D 19、C 20、B 二、填空题(本大题共10空,每空2分,共20分) 1、顺序结构 分支结构 循环结构 2、单精度型(或:float型)双精度型(或;double型] 3、1 4、* * * * * * * * * * 5、0 6 6、按行主顺序存放 三、程序分析题(本大题共2题,每题4分,共8分) 能正确表达出题目的含义、要求,即可得分,部分正确可按比例得分,否则不得分。 1、功能:求S=0+2+4+8+16+32+64+128 和。 输出结果:s=254 2、功能:出矩形阵a的主对角线上的元素之和。 输出结果:27 四、编程题(本大题共4题,每题8分,共32分) 能正确表达出题目的含义、要求,且格式正确,即可得满分,不要求形式完全相同。部分正确可按比例得分,否则不得分。 1、#include main() { float c,f; printf(“input c:”);…………………………………………….2分 scanf(“%f”,&c);…………………………………………….2分 f=(c+32.0)*9.0/5.0;…………………………………………….2分 printf(“F=%.2f n”,f);…………………………………………….2分 } 2、#include main() {int x; scanf(“%d”,&x);…………………………………………….2分 if(x%5==0&&x%7==0)…………………………………………….2分 printf(“yes”);…………………………………………….2分 else printf(“no”);…………………………………………….2分 } 3、# include # include main() {int m,i,k; scanf(“%dn”,&m); k=sqrt(m);…………………………………………….2分 for(i=2;i<=k;i++)…………………………………………….2分 {if(m%i==0) break;…………………………………………….2分 } if(i>k) printf(“m is a prime number!n”);…………………………………………….2分 } 4、# include main() {int i,j,a[15],t; printf(“input 15 numbers:n”); for(i=0;i<15;i++) scanf(“%d”,&a);…………………………………………….2分 for(j=0;j<15;j++)…………………………………………….2分 for(i=0;i<15-j;i++)…………………………………………….2分 if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;} …………………………………………….2分 for(i=0;i<15;i++)printf(“%6d”,a) 更多优质自考资料尽在百度贴吧自考乐园俱乐部 (http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........自考Java语言程序设计 (一)课后习题及答案 自考Java语言程序设计 (一)第一章Java语言概述课后习题 一、Java语言概述 1.Java语言有哪些特点? 2.什么叫做类?什么叫做对象? 3.简述Java的运行机制。 4.简述Java应用程序的开发流程。 5.当初Sun公司发展Java的原因是:来源:www.xiexiebang.comumber_1 = new ComplexNumber(3,-5); ComplexNumber cNumber_2 = 本文来源:考试大网 new ComplexNumber(2,2); double d = 10.0; System.out.println(cNumber_1.toString()+ “ 加 ” + cNumber_2.toString()+ “ 等于 ” + cNumber_1.complexAdd(cNumber_2).toString()); System.out.println(cNumber_1.toString()+ “ 加 ” + d + “ 等于 ” + cNumber_1.complexAdd(d).toString()); System.out.println(cNumber_1.toString()+ “ 减 ” + cNumber_2.toString()+ “ 等于 ” 更多优质自考资料尽在百度贴吧自考乐园俱乐部 (http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........+ cNumber_1.complexMinus(cNumber_2).toString());System.out.println(cNumber_1.toString()+ “ 减 ” + d + “ 等于 ” + cNumber_1.complexMinus(d).toString());System.out.println(cNumber_1.toString()+ “ 乘 ” + cNumber_2.toString()+ “ 等于 ” + cNumber_1.complexMulti(cNumber_2).toString());System.out.println(cNumber_1.toString()+ “ 乘 ” + d + “ 等于 ” + cNumber_1.complexMulti(d).toString());} } class ComplexNumber { //域 private double m_dRealPart;private double m_dImaginPart;//构造方法 ComplexNumber(){ m_dRealPart = 0.0;m_dImaginPart = 0.0;} ComplexNumber(double r,double i){ m_dRealPart = r;m_dImaginPart = i;} ComplexNumber(ComplexNumber c){ m_dRealPart = c.getRealPart();m_dImaginPart = c.getImaginaryPart();} //get,set方法 double getRealPart(){ return m_dRealPart;} double getImaginaryPart(){ return m_dImaginPart;} void setRealPart(double d){ 更多优质自考资料尽在百度贴吧自考乐园俱乐部 (http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........m_dRealPart = d;} void setImaginaryPart(double d){ m_dImaginPart = d;} //复数运算方法 ComplexNumber complexAdd(ComplexNumber c){ return new ComplexNumber(this.m_dRealPart + c.getRealPart(), this.m_dImaginPart + c.getImaginaryPart());} ComplexNumber complexAdd(double c){ return new ComplexNumber(this.m_dRealPart + c, this.m_dImaginPart);} ComplexNumber complexMinus(ComplexNumber c){ return new ComplexNumber(this.m_dRealPartc.getImaginaryPart());} ComplexNumber complexMinus(double c){来源:www.xiexiebang.com return new ComplexNumber(this.m_dRealPart-c, this.m_dImaginPart);} ComplexNumber complexMulti(ComplexNumber c){ return new ComplexNumber(this.m_dRealPart * c.getRealPart() -this.m_dImaginPart * c.getImaginaryPart(), this.m_dRealPart * c.getImaginaryPart()+ this.m_dImaginPart * c.getRealPart());} ComplexNumber complexMulti(double c){ return new ComplexNumber(this.m_dRealPart * c, this.m_dImaginPart * c);} //toString()public String toString() 更多优质自考资料尽在百度贴吧自考乐园俱乐部 (http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........{ return “(” + m_dRealPart + “ + ” + m_dImaginPart + “ i” + “)”; } } 8.答:接口是用来实现类间多重继承功能的结构。接口与类相似,但是接口中只能包括常量和抽象方法。定义接口相当于定义了一组抽象的功能、属性集合,可以使了ava程序的类层次结构更加合理,并实现多重继承。 9.答:使用关键字implements可以定义类实现某接口。实现某接口的类如果不是抽象类,则需要通过重载来实现该接口中的所有抽象方法;如果这个类是抽象类,则它可以不必实现该接口中的所有抽象方法。 10.答:接口可以被继承。 SubInterface中的抽象方法有:public abstract int supMethod();和public abstract string subMethod();两个。 自考Java语言程序设计 (一)第七章Java常用类库介绍课后习题 七、Java 常用类库介绍 1.指出下列陈述是对还是错,并做出解释。 (1)当String对象用= = 比较时,如果String包括相同的值则结果为true。 (2)一个String类的对象在其创建后可被修改。 2.对于下列描述,各写出一条语句完成要求的任务 (1)比较s1中的串和s2中的串的内容的相等性; (2)用+=向串s1附加串; (3)判断s1中串的长度;来源:考试大 3.说明capacity()与length()用法上的差异? 4.如果ch为StringBuffer对象,ch=“Java Apple”,下列结果为何? (1)ch.insert(3,’p’)(2)ch.append(“Basic”) (3)ch.setlength(5)(4)ch.reverse() 5.Math类中提供用来常数π和e的静态属性分别是什么? 6.下面关于Vector类的说法正确的是() (1)类Vector在java.util包中。 (2)一个向量(Vector)对象存放的是一组有序的对象。 (3)一个向量(Vector)对象大小可以根据存放的元素个数的增加而自动增加。 (4)一个向量(Vector)对象中每个元素可以是不同类型的对象。 7.有三个字符串,编写程序找出其中最大者。 8.编写一个程序,设定一个有大小写字母的字符串,先将字符串的大写字符输出,再将字符串中的小写字符输出。 9.设定5个字符串,要求只打印那些以字母“b”开头的串,编写程序完成。 10.设定一个有大小写字母的字符串和一个查找字符,使用类 String方法IndexOf()来判断在该字符串中该字符出现的次数。 参考答案 更多优质自考资料尽在百度贴吧自考乐园俱乐部 (http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........1.答: (1)错。用= =操作符比较String对象实际上是判断它们在内存中是否为同一对象,并不是判断它们的值是否相同。 (2)错。String类的对象是常量。它们被创建后不可被修改。 2.答: (1)s1.equals(s1,s2); (2)s1+=s2; (3)s1.length(); 3.答:capacity()返回字符串对象的当前缓冲区的长度,length()返回字符串对象字符的长度。考试大收集整理 4.答: (1)结果:Javpa Applet (2)结果:Javpa AppletBasic (3)结果:ch长度变为5 (4)结果:apvaJ 5.答:PI、E 6.答:(3) 7.public class max1 { public static void main(String args[]) { String s1= “Hello Java”; String s2= “Java Applet”; String s3= “Java”; String s; if(s1.compareTo(s2)<0) s=s2; else s=s1; if(s.compareTo(s3)<0) s=s3; Systrm.out.println(“big=”+s); } } 8.public class out { public static void main(String args[]) { String s1= “Hello Java”; StringBuffer bufup=new StringBuffer(); StringBuffer buflow=new StringBuffer(); for(int I=0;I {if(s1.charAt(i)<97) 更多优质自考资料尽在百度贴吧自考乐园俱乐部 (http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........{bufup.append(s1.charAt(i));bufup.append(' ');} else { buflow.append(s1.charAt(i));buflow.append('');} } System.out.println(“s1= ”+s1);System.out.println(“ uppercase= ”+bufup);System.out.println(“ lowercase= ”+buflow);} } 9. public class prin_b { public static void main(String args[]){ String s1=“hello”;String s2=“bee”;String s3=“java”;String s4=“brove”;String s5=“bag”;if(s1.indexOf('b')= =0)System.out.println(s1);if(s2.indexOf('b')= =0)System.out.println(s2);if(s3.indexOf('b')= =0)System.out.println(s3);if(s4.indexOf('b')= =0)System.out.println(s4);if(s5.indexOf('b')= =0)System.out.println(s5);} } 10. public class ppp { public static void main(String args[]){ String s1=“abcdefghi”;int num=0;for(int i=0;i {i=s1.indexof('e',i);num++; 更多优质自考资料尽在百度贴吧自考乐园俱乐部 (http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........} System.out.print(“ s1=”+s1+“e=”); if(num= =0) System.out.println(“ no found”); else System.out.println(num); } } 自考Java语言程序设计 (一)第八章Java异常处理及输入输出流简介课后习题 八、Java异常处理及输入输出流简介 1.列出5个常见的异常。 2.写出Java语言的异常处理机制的优点。 3.为什么异常处理技术不应该用于常规的程序控制? 4.引起异常产生的条件是什么? 5.异常没有被捕获将会发生什么? 6.编写一个程序,以说明catch(Exception e)如何捕获各种异常。 7.下面的代码段中finally语句块会被执行吗? public class ExceptionExam3 { public static void main(String [] args) { try { int [] a=new int[3]; System.exit(0); } catch(ArrayIndexOutOfBoundsException e) {System.out.println(“发生了异常”);} finally {System.out.println(“Finally”);} } } 8.throws的作用是什么? 9.应在程序的什么地方使用异常处理? 10.下面的代码有什么错误吗? class ExceptionExam{„} throw new ExceptionExam(); 11.异常类型匹配的处理方式。程序功能:首先输出“这是一个异常处理的例子”,然后在你程序中主动地产生一个 ArithmeticException 类型被0 除而产生的异常,并用catch 语句捕获这个异常。最后通过ArithmeticException类的对象e的方法getMessage 给出异常的具体类型并显示出来。 12.根据所给创建自定义异常类的使用格式,编写一个自定义异常的小程序。 更多优质自考资料尽在百度贴吧自考乐园俱乐部 (http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........13.什么叫流?流式输入输出有什么特点? 14.Java流被分为字节流、字符流两大流类,两者有什么区别? 15.File类有哪些构造函数和常用方法? 16.利用文件输入输出流编写一个实现文件拷贝的程序,源文件名和目标文件名通过命令行参数传入。 17.编写一个程序,在当前目录下创建一个子目录test,在这个新创建的子目录下创建一个文件,并把这个文件设置成只读。 18.位置指针的作用是什么?RandomAccessFile类提供了哪些方法实现对指针的控制? 19.编写一个程序,从键盘输入一串字符,统计这串字符中英文字母、数字、其他符号的字符数。 20.编写一个程序,从键盘输入一串字符,从屏幕输出并将其存入a.txt文件中。采集者退散 21.编写一个程序,从键盘输入10个整数,并将这些数据排序后在标准输出上输出。 参考答案 1.答:内存耗尽、数组下标超出边界、被0除、非法的方法参数、算法溢出处。来源:考试大的美女编辑们 2.答:(1)Java通过面向对象的方法进行异常处理,把各种异常事件进行分类,体现了良好的层次性,提供了良好的接口,这种机制对于具有动态特 性的复杂提供了强有力的控制方式。(2)Java的异常处理机制使得处理异常的代码和“常规”代码分开,减少了代码的数量,增强了程序的可读性。(3)Java的异常处理机制使得异常事件可以沿调用栈自动向上传播,而不是C语言中通过函数的返回值来传播,这样可以传递更多的信息,并且简化了代码的编写。(4)由于把事件当成事件处理,利用类的层次性我们可以把多个具有相同父类的异常统一处理,也可以区分不同的异常分别处理,使用非常灵活。 3.答:a.异常处理用于不经常发生但通常导致程序终止的情况,因此要求编程人员为编译器的优化执行实现异常处理。b.常规控制结构的控制流程通常比异常的更为清晰、交流更高。c.在发生异常,并且没有释放异常发生之前分配的资源时,堆栈是展开的,所以会出现一些问题。d.“额外的”异常会妨碍真正错误类型的异常。这种使程序员更难 以跟踪大量的异常。 4.答:异常产生的方式有3种。第一种是在某些内部错误时,Java虚拟机可以产生异常,该异常不在你的程序控制范围内,通常不作处理。第二种是由程序代码中的错误引起,这种异常需要你的程序处理。第三种是通过使用throw语句手动生成的异常。 5.答:未捕获的异常最终会导致程序非正常终止。 6.public class ExceptionExam { public static void main(String [] args) { try { int i=0; i=3/i;//将产生算术异常。 } catch(ArithmeticException e)//找到了匹配的异常,执行该catch块。 更多优质自考资料尽在百度贴吧自考乐园俱乐部 (http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........{ System.out.println(“发生了ArithmeticException异常”); } catch(AarryIndexOutOfBoundsException e)//不是匹配的异常,且不会再捕获 //异常,如果发生数组索引超出范围所产生的异常,将执行该catch块。 { System.out.println(“发生了AarryIndexOutOfBoundsException异常”); } catch(Exception e) //前两个catch块均无法捕获try块中发生的异常时,才会执行该catch块。 { System.out.println(“发生了异常”); } finally { System.out.println(“执行d Finally”);} } } 7.答:无论是出于何种原因,只要执行离开try/catch代码块,就会执行finally代码块。即无论try是否正常结束,都会执行 finally定义的最后的代码。如果try代码块中的任何代码或它的任何catch语句从方法返回,也会执行finally代码块。但本题中在try代 码块中执行了“System.exit(0);”语句,执行了这一语句后,Java虚拟机(JVM)将被终止。那么finally语句块一定不会被执行。 8.答:在某些情况下,如果一个方法产生自己不处理或无法处理的异常,它就必须在throws子句中声明该异常。 9.答:通常,可以采用两种方式来报告错误:返回值和异常。在Java中异常处理很常用,虽然返回错误代码在某些情况下是一种有效的方式,但是异常处理可以提供强大的结构化方法来处理异常。所以需要处理代码中的错误时就可以采用异常的方法进行处理。 10.答:ExceptionExam不是继承(扩展)Throwable的子类,只有Throwable的子类可以由throw抛出。所以,这一段代码会出错。 11.public class ExceptionExam1 { public static void main(String [] args) { try {int i=0; i=3/i; } catch(ArithmeticException e) { System.out.println(“异常是:”+e.getMessage()); } finally { 更多优质自考资料尽在百度贴吧自考乐园俱乐部 (http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........System.out.println(“finally 语句被执行”); } } } 注意:如果在catch 语句中声明的异常类是Exception,catch 语句也能正确地捕获,这是因为Exception 是ArithmeticException 的父类。如果不能确定会发生哪种情况的异常,那么最好指定catch的参数为Exception,即说明异常的类型为Exception。 12.class Excp1 extends Exception {} class Excp2 extends Excp1 {} public class ExceptionExam7 { public static void main(String [] args)throws Exception { try { throw new Excp2(); } catch(Excp2 e) { System.out.println(“catch1”); throw new Excp1(); } catch(Excp1 e) { System.out.println(“catch2”); throw new Exception(); } catch(Exception e) { System.out.println(“catch3”); } finally { System.out.println(“finally”); } } } 说明:自定义异常类,关键是选择继承的超类——必须是Exception或者其子类。用异常代表错误,而不要再使用方法返回值。 13.答:所谓流是指同一台计算机或网络中不同计算机之间有序运动着的数据序列,Java把这些不同来源和目标的数据都统一抽象为数据流。数据流可分为输入流和输出流,输 更多优质自考资料尽在百度贴吧自考乐园俱乐部 (http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........入流代表从其他设备流入计算机的数据序列,输出流代表从计算机流向外部设备的数据序列。 流式输入输出的特点是数据的获取和发送沿数据序列的顺序进行,即每一个数据都必须等待排在它前面的数据,等前面的数据读入或送出之后才能被读写。所以流和队列一样,只能以“先进先出”的方式对其中的数据进行读写,而不能随意选择读写的位置。 14.答:两者都作为Object类的直接子类,基本输入流(无效Stream)和基本输出流(OutputStream)是处理以8位字节为基本单位的字节流类;Reader和Writer类是专门处理16位字符流的类。 15.答:构造函数有: (1)public File(String pathname):创建一个对应于参数pathname的File类对象。参数pathname是包含目录和文件名的字符串。如果没有文件名,则代表目录。 (2)public File(String parent , String child):该构造函数将pathname分成两部分parent和child,参数parent表示目录或文件所在路径,参数child表示目录或文件名称。 (3)public File(File parent, String child):该构造函数与上面一个不同在于将parent的参数类型由String变为File,代表parent是一个已经创建的File类文件对象(指向目录)。 常用方法有: (1)public boolean canWrite():返回文件是否可写。 (2)public boolean canRead():返回文件是否可读。 (3)public boolean createNewFile():当文件不存在时创建文件。 16.import java.io.*; class CopyFile{ public static void main(String[] args){ String file1,file2; int ch = 0; try { file1=args[0]; file2=args[1]; File无效Stream fis = new File无效Stream(file1); FileOutputStream fos=new FileOutputStream(file2); while((ch=fis.read())!=-1) fos.write(ch); fis.close(); fos.close(); } catch(FileNotFoundException e){ System.out.println(“源文件:未找到!”); }catch(ArrayIndexOutOfBoundsException e){ System.out.println(“缺少运行参数!”); System.exit(-1); } catch(IOException e){ System.out.println(e.toString()); } 更多优质自考资料尽在百度贴吧自考乐园俱乐部 (http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........} } 17.答: import java.io.*; public class NewFile{ public static void main(String args[]){ File f=new File(“test”); if(f.exists()&&f.isDirectory()) System.err.println(“目录:”+f.toString()+“已经存在!”); else{ if(f.mkdir()){ System.out.println(“目录”+f.getAbsolutePath()+“创建结束!”); File f2=new File(f,“my.txt”); try{ f2.createNewFile(); f2.setReadOnly(); }catch(IOException e){ System.out.println(e.toString()); } System.out.println(“文件:”+f2.getAbsoluteFile()+“创建结束!”); } else System.out.println(“目录”+f.getAbsoluteFile()+“创建失败!”); } } } 18.答:要实现对文件的随机读取,也就是在文件的任何位置执行读写数据的操作,需要一个指针来指定读写的位置。在创建 RandomAccessFile类对象的同时,系统自动创建了一个指向这个文件开头的指针,当执行读写操作后,指针自动指向被读写数据之后的第一个字节 处。指针初始值是0,每读/写一个字节,指针自动增加1。RandomAccessFile类提供了一些控制指针移动的方法。 public long getFilePointer();获取当前指针指向文件的位置。考试大论坛 pulbic void seek(long pos);将指针移动到参数pos指定的位置。 public int skipBytes(int n);指针从当前位置向后移动n个字节位置,并返回指针实际移动的字节数。 19.答: import java.io.*; public class Count{ public static void main(String[] args) { int x=0,y=0,z=0; int ch; try{ while((ch=System.in.read())!='r'){ 更多优质自考资料尽在百度贴吧自考乐园俱乐部 (http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')x++;else if(ch>='0'&&ch<='9')y++;else z++;} }catch(IOException e){ System.out.println(e.toString());} System.out.println(“英文字母:”+x);System.out.println(“数字字符:”+y);System.out.println(“其它字符:”+z);} } 20.答: import java.io.*;public class InFile{ public static void main(String[] args){ int ch;try{ FileOutputStream out=new FileOutputStream(“a.txt”);while((ch=System.in.read())!='r'){ System.out.write(ch);out.write(ch);} out.close();System.out.write('n');}catch(IOException e){ System.out.println(e.toString());} System.out.println(“输出至文件完毕!”);} } 21.答: import java.io.*;public class Sort{ public static void main(String args[]){ int a[]=new int[10];byte b[]=new byte[10];int t;String str; 更多优质自考资料尽在百度贴吧自考乐园俱乐部 (http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........System.out.println(“请输入10个整数:”); try{ for(int i=0;i<10;i++) {System.out.print(“No.”+(i+1)+“: ”); System.in.read(b); str=new String(b); str=str.trim(); a[i]=Integer.parseInt(str); } }catch(IOException e){ System.out.println(e.toString()); } catch(NumberFormatException e){ System.out.println(e.toString()); } for(int i=0;i<9;i++) for(int j=i+1;j<10;j++) { if(a[i]>a[j]){ t=a[i]; a[i]=a[j]; a[j]=t; } } for(int i=0;i<10;i++) System.out.println(a[i]+“t”); } } 自考Java语言程序设计 (一)第九章JavaApplet概述课后习题 九、Java Applet概述 1.下列方法中,哪一个不是Applet的基本方法() A、init()B、run()C、stop()D、start() 2.在Java中判定Applet的来源的方法有() A、getcodebase()B、get文档base() C、getCodeBase()D、get文档Bade() 3.下面关于Applet的说法正确的是 A、Applet也需要main方法 B、Applet必须继承自javawt.Applet C、Applet能访问本地文件 D、Applet程序不需要编译 4.Applet类的直接父类是() 更多优质自考资料尽在百度贴吧自考乐园俱乐部 (http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........() A.Component类 B.Container类 C.Frame类 D.Panel类 5.判断:一个Applet编译后的类名是Test.class,运行此小程序的命令是Java Test。 6.编写同时具有Applet与Application的特征的程序。具体方法是:作为Application要定义main()方法,并且把 main()方法所在的类定义一个类。为使该程序成为一个Applet,main()方法所在的这个类必须继承Applet类或JApplet类。www.xiexiebang.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........A.FlowLayoutB.BorderLayout C.GridLayoutD.CardLayout 10.编写程序,创建下面的GUI(不必为各组件提供功能)。考试大收集整理 参考答案 1: false 2:true 3:true 4.true 5:版面管理器 6.图形用户界面 7.mouseReleased 8.C 9.B 10.import javawt.*; public class Chp9_3_A extends Frame{ TextField t=new TextField(); String[] op={“7”,“8”,“9”,“/”,“4”,“5”,“6”,“*”,“1”,“2”,“3”,“-”,“0”,“.”,“=”,“+”}; Button[] btn=new Button[16]; Panel p=new Panel(); public Chp9_3_A(){ setLayout(new BorderLayout()); p.setLayout(new GridLayout(4,4)); for(int i=0;i btn[i]=new Button(op[i]); p.add(btn[i]); } add(t,BorderLayout.NORTH); add(p,BorderLayout.CENTER); setSize(400,300); } public static void main(String[] args){ new Chp9_3_A().setVisible(true); } } 自考Java语言程序设计 (一)第十二章课后习题 十二、常用组件之一________命令按钮与标签框 1.判断:标签是是一个容器。() 2.判断:在Swing用户界面的程序设计中,容器可以被添加到其它容器中去。() 3.用户不能修改的文本称为_______。 4.关于awt和swing说法正确的是:来源:考试大 更多优质自考资料尽在百度贴吧自考乐园俱乐部 (http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........A、awt在不同操作系统中显示相同的风格。B、swing在不同的操作系统中显示相同的风格 C、javawt的子类 D、awt和swing都支持事件模型 5.下列_________用户图形界面组件在软件安装程序中是常见的。a.滑块 b.进度条来源:考试大 c.对话框 d.标签 6.包含可单击按钮的类的Java类库是__________。a.AWT b.Swing c.二者都有来源:www.xiexiebang.com d.二者都没有 7.下面的__________用户界面组件不是容器。a.JScrollPane b.JFrame考试大-全国最大教育类网站(www.xiexiebang.com)c.JWindows d.JScrollBar 8.创建下面的GUI,颜色列表框为红色、绿色和蓝色(不必为各组件提供功能)。参考答案 1.false 2.true 3.标签 4.B D 5.B 6.C 7.D 8.参考程序如下: import javawt.*;public class Chp9_3_B extends Frame{ Choice ch;Checkbox bg,fg;Button btnOK,btnCancel;Panel p,p1,p2;public Chp9_3_B(){ p=new Panel();p.setLayout(new GridLayout(2,1));p1=new Panel();p2=new Panel();p1.setLayout(new FlowLayout());p2.setLayout(new FlowLayout());ch=new Choice();ch.add(“红色”); 更多优质自考资料尽在百度贴吧自考乐园俱乐部 (http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........ch.add(“绿色”);ch.add(“蓝色”);bg=new Checkbox(“背景”);fg=new Checkbox(“前景”);p1.add(bg);p1.add(fg);btnOK=new Button(“确定”);btnCancel=new Button(“取消”);p2.add(btnOK);p2.add(btnCancel);p.add(p1);p.add(p2);add(ch,BorderLayout.NORTH);add(p,BorderLayout.CENTER);setSize(400,300);} public static void main(String[] args){ new Chp9_3_B().setVisible(true);} } 自考Java语言程序设计 (一)第十三章课后习题 十三、常用组件之二 _______单行文本框与多行文本框,单选框和复选框 1.判断:列表对象总包含滚动条。() 2.判断:面板的默认管理器是BorderLayout。 3.____________类用于创建一组单选按钮。来源:考试大 4.欲编写如下图的一个界面,用于显示用户指定的图像: 如果在区域A中只能放置一个 AWT组件,从各组件的本来功能角度考虑,最好使用哪种组件: A、TextArea B、Panel C、Applet D、Canvas 5.Java应用程序中的默认外观是_________。 A.Motif B.Windows C.METAl 6.创建下面的GUI,要求在文本框中输入分数,单击“求和”按钮后在结果文本框中显示总分。 7.编写一个将华氏温度转换为摄氏温度的程序。应从键盘输入华氏温度,然后通 更多优质自考资料尽在百度贴吧自考乐园俱乐部 (http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........过文本显示转换后的摄氏温度。使用下面的公式进行温度转换: 摄氏温度=5/9Χ(华氏温度-32) 8.编写一个程序,使用户能够使用鼠标在applet中绘制一个矩形。按住鼠标左键,确定矩形的左上角,然后拖动鼠标,在需要的位置(即矩形右下角)释放鼠标。另外,在状态栏中显示矩形面积。 参考答案 1.false 2.true 3.CheckboxGroup 4.D 5. C 6.参考程序如下: import javawt.*;来源:考试大 import javawt.event.*; public class Chp9_3_C extends Frame implements ActionListener{ TextField textField1,textField2,textField3; Button button1=new Button(“求和”); Panel panel1,panel2; public Chp9_3_C(){ textField1=new TextField(); textField2=new TextField(); textField3=new TextField(); panel1=new Panel(); panel2=new Panel(); panel1.setLayout(new GridLayout(3,2)); panel2.setLayout(new FlowLayout()); panel1.add(new Label(“数学: ”)); panel1.add(textField1); panel1.add(new Label(“英语: ”)); panel1.add(textField2); panel1.add(new Label(“总分: ”)); panel1.add(textField3); panel2.add(button1); add(panel1,BorderLayout.CENTER); add(panel2,BorderLayout.SOUTH); button1.addActionListener(this); setSize(300,200); setVisible(true); } public static void main(String[] args){ new Chp9_3_C(); } public void actionPerformed(ActionEvent e){ int n1,n2,sum; 更多优质自考资料尽在百度贴吧自考乐园俱乐部 (http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........n1=Integer.parseInt(textField1.getText());n2=Integer.parseInt(textField2.getText());sum=n1+n2;textField3.setText(“"+sum);} } 6.参考程序如下: import javawt.*;import javawt.event.*;public class Chp9_3_D extends Frame{ TextField textField1,textField2;Button button1;public Chp9_3_D(){ textField1=new TextField(30);textField2=new TextField(30);button1=new Button(”转换“);setLayout(new FlowLayout());add(new Label(”华氏温度:“));add(textField1);add(new Label(”摄氏温度:“));add(textField2);textField2.setEditable(false);add(button1);setSize(400,300);pack();button1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ button1_actionPerformed(e);} });addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);} });} public static void main(String[] args){ new Chp9_3_D().setVisible(true);} private void button1_actionPerformed(ActionEvent e){ double d=Double.parseDouble(textField1.getText());double h=5.0/9.0*(d-32);textField2.setText(”“+h);} 更多优质自考资料尽在百度贴吧自考乐园俱乐部 (http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........} 7.参考程序如下: import javapplet.Applet; import javawt.*; import javawt.event.*; public class Chp9_3_E MouseListener,MouseMotionListener{ int x1,y1,x2,y2; public void init(){ addMouseListener(this); addMouseMotionListener(this); } public void paint(Graphics g){ g.drawRect(x1,y1,x2,y2); int area=Math.abs(x2-x1)*Math.abs(y2-y1); showStatus(”矩形面积: "+area); } //implementation of MouseListener public void mousePressed(MouseEvent e){ x1=e.getX(); y1=e.getY(); } public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mouseReleased(MouseEvent e){} //implementation of MouseMotionEvent public void mouseDragged(MouseEvent e){ x2=e.getX(); y2=e.getY(); repaint(); } public void mouseMoved(MouseEvent e){} } extends Applet implements 第一章 基础知识 一.填空 1.每个C程序都必须有且仅有一个________ 函数。 2.C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载 和执行。 3.软件是程序,以及______、使用和维护所需要的所有文档。 4.国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5.程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6.C语言是由________组成的。 7.C语言的函数可分为主函数main、标准库函数和_________。 8.一个函数是由两部分组成的,即:________和 函数体。 9.编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10.程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动 化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程 序,统称为_________。 11.机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻 译可以直接识别和执行的程序设计语言。 12.与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。13.在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14.C程序的执行均是由执行_________开始。 15.函数体即为包含在{ }内的部分。它分为________和为完成功能任务由若干个C语句 组成的执行部分。 16.C语言程序中一条简单语句是以________字符作为结束符的。 17.18.C语言是结构化、________的程序设计语言。 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19.用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.第一个系统体现结构化程序设计思想的教学工具语言是_______语言。 解答: 1.main()2.编译 3.开发 4.指令序列 5.高级语言 6.函数 7.自定义函数 8.函数首部 9.翻译 10.应用软件 11.二进制代码 12.助记符 13.# 14.main函数 15.声明部分 16.;(或分号) 17.模块化 18.翻译 19.执行速度 20.PASCAL 二.阅读程序写结果 解答: 三.补充程序 解答: 四.改错题 解答: 五.编程一 解答: 六.编程二 解答: 第二章 常量、变量和表达式 一.填空 1.以16位计算机为例,若定义long int a;则变量a占______个字节的内存空间。 2.以16位计算机为例,若定义double a;则变量a占______ 个字节的内存空间。 3.以16位计算机为例,若定义long double;则变量a占 ______ 个字节的内存空间。 4.在______ 位机,int型占4个字节。 5.C语言的数据类型有:基本数据类型、构造数据类型、枚举类型、______ 、空类型。 6.在C语言中,基本数据类型有:______。 7.整型常量046转换为十进制数等于______。 8.整型常量054转换为十进制数等于______。 9.整型常量0x125转换为十进制数等于 ______。 10.整型常量0x7C转换为十进制数等于 ______。 11.整型常量39转换为八进制等于 ______。 12.实数473.468写成规范化指数形式,则应为 ______。 13.实数0.0453写成规范化指数形式,则应为 ______。 14.将0x123转换为二进制等于 ______。 15.字符’A’表示成十六进制等于 ______。 16.在C语言中,称代表常量的标识符为 ______。 17.C语言中是用编译预处理命令______ 来定义符号常量 18.在C语言中,以反斜杠符()开头,后跟字符的字符序列,称之为 ______ ,主 要用来表示控制及不可见的字符或者一些图形符号 19.语句printf(“106”)执行的结果输出是 ______。 20.语句printf(“b”)执行的结果输出是______。 21.语句printf(“b”)执行的结果输出是 ______。 22.语句printf(“102”)执行的结果输出是 ______。 23.若有char ch1;ch1='a'+4;则语句printf(“%c”,x)的输出结果为 ______。 24.字符串常量“Hello, everyone!”占据的内存空间为______ 个字节 25.字符串常量“Hello,Bob!”占据的内存空间为 ______ 个字节 26.十进制整型常量由0~9个数据组成,但不能以______ 开始,没有小数部分 27.十六进制常量由0~9和______ 组成 28.unsigned long类型常量通常以______ 为后缀 29.实型常量通常有小数形式和______ 两种表达方式 30.C语言中是用编译预处理命令______ 来包含其他源文件 31.为了表示字符串的结束,系统自动在字符串的最后加一个______ ,但不被输出 32.C语言中,其值可被改变的量称为变量,它具有三个基本要素:变量名、______ 和变量值 33.C语言规定,变量的标识符只能由字母、数字和下划线组成,且不能以______ 开 头。34.在16位机中,sizeof(“hellon”)等于 ______。 35.在16位机中,printf(““hello””)等于 ______。 36.字符变量在内存中占用______ 个字节的存储空间。 37.若有定义int x=27, y=6;则表达式 x/y的值为 ______。 38.若有定义int x=47, y=8;则表达式 x%y的值为 ______。 39.若有定义char ch1='A',ch2,ch3;执行ch2=ch1++;ch3=++ch1;printf(“ch1=%c, ch2=% c”,ch1,ch2);则输出为 ______。 40.若有定义char ch1='A',ch2,ch3;执行ch2=ch1++;ch3=++ch1;printf(“ch2=%c, ch3=% c”,ch2,ch3);则输出为 ______。 41.若有定义int i=5, j, k;执行j=i--;k=--i;printf(“i=%d, j=%dn”, i, j);则输 出为 ______。 42.表达式(int)(13.7+25.6)/4%5 的值是 ______。 43.表达式 3.6-5/2+1.2+5%3 的值是______。 44.表达式54%10/2+4.0*(8/5)的值是 ______。 45.若定义int x;double b=5.45;执行x=b后,则x的值为______。 46.若定义int y;char c='A';执行y=c后,则y的值为 ______。 47.若定义 int a=8;float b=2.5;则a/(int)(b)的值为 ______。 48.若a=5,则执行a*=7-3语句后,a的值是 ______。 49.若int a=1,b=0,c=4,d=2;则表达式(a>b ? a:b)&&(c-d)的值为______。 50.已知a = 0,表达式 a = 1?b = 1:b = 0;执行后,b的值是 ______。 51.若定义int m=7,n=12;则表达式n%=m-m%5的值是 ______。 52.若定义int a=8;float b=4.5;执行a*=a/=a-b后,a的值为 ______。 53.int a=2;!a++的值为 ______。 54.int a=0;!a++&++a的值为 ______。 55.int a=7;float b=4.5;则printf(“%d”,a*=a/=a-b)的值为 ______。 56.int k=7;float a=2.5,b=4.7;则表达式a+k%3*(int)(a+b)%2/4的值为 ______。 57.#define Max(a,b)(((a)-(b))&0x80000000)?(a):(b),int a=2,b=6;printf(“%dn”,M ax(a,b))的值为 ______。 58.在32位机中,int a=4,b=7;printf(“%0x”,a-b)的值为:______。 59.int x,y,z;x=y=2;z=3;y=x++-1;printf(“%d,%d”,x,y)的值为: ______。 60.int i=2,j;printf(“%d”,j=i<1)的值为:______ 解答: 1.0 2.4 3.10 4.32 5.指针类型 6.int、float、double、char 7.38 8.44 9.293 10.124 11.047 12.4.734680e+002 13.4.530000e-002 14.100100011 15.x41/41H 16.符号常量 17.#define 18.转义字符常量 19.F 20.b 21.b 22.B 23.e 24.16 25.11 26.0 27.A~F 28.U 29.指数形式 30.#include 31.“ ” 32.变量类型 33.数字 34.7 35.“hello” 36.1 37.4 38.7 39.ch1=C, ch2=A 40.ch2=A, ch3=C 41.i=3, j=5 42.4 43.4.800000 44.7.000000 45.5 46.65 47.4 48.20 49.1 50.1 51.2 52.4 53.0 54.0 55.4 56.2.500000 57.2 58.fffffffd 59.3,1 60.0 二.阅读程序写结果 解答: 三.补充程序 解答: 四.改错题 解答: 五.编程一 解答: 六.编程二 解答: 第三章 顺序结构 一.填空 1.C语言的语句可分为5类,它们是:控制语句、____________、函数语句、符合语句和空 语句。 2.常用于字符输入的函数为:________________。 3.常用于字符输出的函数为:________________。 4.常用于字符串输入的函数为:________________。 5.常用于字符串输出的函数为:________________。 6.格式输入函数的一般形式为:________________。 7.格式输出函数的一般形式为:________________。 8.printf和scanf是标准的库函数,它们的函数原型在头文件________________中。 9.有char ch,则从键盘给ch赋值的格式输入语句为:________________。 10.如果要输出字符串常量“HelloWord!”,则格式输出语句为:________________。 11.设有定义:long x=-123456L;,请写出能够正确输出变量x值的语句________________。 12.若有int a,b;,想通过scanf(“%d%d”,&a,&b);输入语句给a赋于1,给b赋于2,则从键盘 输入数据的形式是________________。 13.若有int i,j;scanf(“i=%d,j=%d”;&i,&j);,要求给i赋10,给j赋20,则应该从键盘 输入_______。 14.已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为 1、j的值为 2、k 的值为3,请写出正确的输入语句________________。 15.有int m,n,p;scanf(“m=%dn=%dp=%d”,&m,&n,&p);printf(“%d%d%dn”,m,n,p);若想 从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是_____ ___________。 16.有 int a;float b, c;scanf(“%2d%3f%4f”,&a,&b,&c);printf(“na=%d, b=%f, c= %fn”, a, b, c);,若运行时从键盘上输入9876543210<回车>,则程序的输出结果是___________________ __。 17.有 int m=0256,n=256;则 printf(“%o %on”,m,n);的输出结果是__________________ ___。 18.有int x=102,y=012;,则printf(“%2d,%2dn”,x,y);的输出结果是______________ _______。 19.有定义和语句:int a;char c=10;float f=100.0;double x;a=f/=c*=(x=6.5);,则 printf(“%d %d %3.1f %3.1fn”,a,c,f,x);的输出结果是_____________________。 20.若有定义和语句:int m=0xabc,n=0xabc;m-=n;则printf(“%on”,m);的输出结果是___ __________。 21.若有int m=32,n=032;,则printf(“%d,%xn”,m,n);执行后输出结果是______________ _____。 22.若有 int a=1234;,则 printf(“%2dn”,a);的输出结果是_____________________。 23.若变量已正确说明为float类型,要通过语句scanf(“%f %f %f ”,&a,&b,&c);给a赋于1 0.0,b赋予22.0,c赋予33.0,不正确的输入形式是_____________________。 A)10 <回车>22<回车>33<回车> B)10.0,22.0,33.0<回车> C)10.0<回车> 22.0 33.0<回车> D)10 22<回车> 33<回车> 24.若有 int x=3,y=1;则printf(“%d %dn”,x++,y+2);的输出结果是__________________ ___。 25.若有定义和语句:double d;float f;long l;int i;i=f=l=d=20/3;则 printf(“% d %ld %f %f n”, i,l,f,d);的输出结果是(小数点后只写一位)_____________________。 26.以下说法中正确的是 _____________________。 A)#define和printf都是C语句 B)#define是C语句,而printf不是 C)printf是C语句,但#define不是 D)#define和printf都不是C语句 27.若有 int k=17;,则 printf(“%d,%o,%x n”,k,k,k);的输出结果是_________________ ____。 28.以下叙述中正确的是_____________________。 A)输入项可以是一个实型常量,如:scanf(“%f”,3.5);B)只有格式控制,没有输入项,也能正确输入数据到内存,例如:scakf(“a=%d,b=%d”);C)当输入数据时,必须指明变量地址,例如:scanf(“%f”,&f); 29.若有定义和语句:int u=010,v=0x10,w=10;则printf(“%d,%d,%dn”,u,v,w);输出结果是 _____________________。 30.若有int a=1,b=4,c=2;float x=10.5, y=4.0, z;z=(a+b)/c+sqrt((double)y)*1.2/c+ x;,则printf(“%fn”,z);的输出结果是_____________________。 31.若有int a=2,c=5;,则printf(“a=%%d,b=%%dn”,a,c);的输出结果是________________ _____。 32.有char c;int n=100;float f=10;double x;x=f*=n/=(c=50);则printf(“%d %f n”,n,x);的输出结果是_____________________。 33.有int i=0,j=0,k=0;scanf(“%d%*d%d”,&i,&j,&k);printf(“%d%d%dn”,i,j,k);若 从键盘输入:10 20 30<回车>。输出结果是_____________________。 34.若有int a,b,c;a=25;b=025;c=0x25;,则printf(“%d %d %dn”,a,b,c);的输出结果 是___________。 35.有以下语句段 int n1=10,n2=20; printf(“________________”,n1,n2); 要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。 n1=10 n2=20 36.若有语句int i=-19,j=i%4;则printf(“%dn”,j);的输出结果是_____________________。 37.有int a=0;a+=(a=8);则printf(“%dn”,a);的输出结果是_____________________。 38.有int a=1, b=2;a=a+b;b=a-b;a=a-b;则printf(“%d,%dn”, a, b);的输出结果是 ______________。 39.有unsigned short a=65536;int b;,则printf(“%dn”,b=a);的输出结果是________ ______。 40.语句printf(“10289n”);的数据结果为:__________________。 解答: 1.表达式语句 2.getchar() 3.putchar() 4.gets() 5.puts() 6.scanf(“格式控制字符串”,地址表列); 7.printf(“格式控制字符串”,输出表列); 8.stdio.h 9.scanf(“%c”,&ch); 10.printf(“%s”,HelloWord!);或者:printf(“HelloWord!”); 11.printf(“x=%1dn”,x); 12.1 2 或者 1 13.i=10,j=20 14.scanf(“%d,%d,%d”,&i,&j,&k); 15.m=123n=456p=789 16.a=98, b=765.000000, c=4321.000000 17.256 400 18.102,10 19.1 65 1.5 6.5 20.0 21.32,1a 22.1234 23.B 24.3 3 25.6 6 6.0 6.0 26.D 27.17,21,11 28.C 29.8,16,10 30.13.700000 31.a=%d,b=%d 32.2 20.000000 33.10300 34.25 21 37 35.n1=%dnn2=%d 36.-3 37.16 38.2,1 39.0 40.B89 二.阅读程序写结果 解答: 三.补充程序 解答: 四.改错题 解答: 五.编程一 解答: 六.编程二 解答: 第四章 选择结构 一.填空 1.在if, while, case, do, else 等关键字中,用于选择结构的有().2.已知 a = 1;那么 if(a = 2)printf(“%d”, 2);else printf(“%d”, 1);的输出结 果是().3.已知 char a = 'A';那么 if(a > 65)printf(“%s”, “bigger”);else printf(“%s” , “smaller”);的输出结果是().4.表示“x≥ y≥ z”的C语言表达式是()。 5.在C语言中,用于实现选择结构的语句有()语句和()语句。 6.判断两个浮点型变量x和y是否相等一般用:if(<1e-6)„。 7.设有程序段: t=6;a=7;b=8;if(a=b)t=a;,这段程序执行后,t的结果是()。 8.设a=1,b=2,c=3,d=4,则表达式:a>b?a:c>d?a:d的结果为()。 9.表达式98 && 8 && 31 &&(9812; printf(“%dn”, y); return 0;} 输入:12<回车> 17.#include float x, y; char op; double r; scanf(“%c%f%f”,&op,&x,&y); switch(op) { case '+': r = x + y;break; case '-': r = x-y;break; case '*': r = x * y;break; case '/': r = x / y;break; } printf(“%.1f”, r); return 0;} 输入:3.5<回车> 18.#include “stdio.h” void main(){ int a=7; if(a>9 || a<10) a=a/3; a=a%3; printf(“a=%d”, a);} else 19.#include int a=20; switch(a%3) { case 0: printf(“0”); case 1: printf(“1”); case 2: printf(“2”); default: printf(“3”); } printf(“4”);} 20.#include int a=2,b=5,c=8,t; if(a < b){ t = a;a = b;b = t;} if(b < c){ t = b;b = c;c = t;} if(a < b){ t = a;a = b;b = t;} printf(“%d,%dn”, a++,--c);} 解答: 1.运行结果: 9,7 2.a=1,b=3 3.ch1= F 4.3,5 5.m=21 6.ch3=D 7.y=31.600000 8.Good!Best!9.A B C 10.*** 11.q=35 12.**0****2** 13.*& 14.d=20 15.**1** 16.0 17.0.6 18.a=2 19.234 20.8,1 三.补充程序 1.根据输入字符的ASCII码来判别字符的类别。由ASCII码表可知ASCII值小于32的为控制字 符。在“0”和“9”之间的为数字,在“A”和“Z”之间为大写字母,在“a”和“z”之 间为小写字母,其余则为其它字符。 #include“stdio.h” #include“string.h” int main(){ char c;printf(“input a character: ”); _____________________________________________ if(c<32)printf(“This is a control charactern”); _____________________________________________ printf(“This is a digitn”);else if _______________________________________ printf(“This is a capital lettern”);else if(c>='a'&&c<='z') printf(“This is a small lettern”); ____________________________________________ printf(“This is an other charactern”); return 0;} 2.计算器程序。用户输入运算数和四则运算符,输出计算结果.#include“stdio.h” int main(){ float a,b;____________________________________________;printf(“input expression: a+(-,*,/)b n”);scanf(“%f%c%f”,&a,&c,&b);switch(c){ case '+': printf(“%fn”,a+b);____________________________________________ case____________________________________________ printf(“%fn”,a-b);break;case '*': printf(“%fn”,a*b);break;case '/': ____________________________________________;break;default: printf(“input errorn”);} return 0;} 3.输入三个整数,输出最大数和最小数(注:max总是记录最大数,而min总是记录最小数).#include“stdio.h” int main(){ int a,b,c,max,min;printf(“input three numbers: ”);scanf(“%d%d%d”,&a,&b,&c);if(a>b){ _______________________________________ _______________________________________ } else {max=b;min=a;} ____________________________________________ max=c;if(min>c)_____________________________________ printf(“max=%dnmin=%d”,max,min);return 0;} 4.#include“stdio.h” int main(){ int a;printf(“input integer number: ”);scanf(“%d”,&a);_____________________________________________ { case 1:printf(“Mondayn”);break;_____________________________________________ printf(“Tuesdayn”);break;case 3:printf(“Wednesdayn”);break;case 4:printf(“Thursdayn”);_____________________________________________ case 5:printf(“Fridayn”);break;case 6:printf(“Saturdayn”);break;case 7:printf(“Sundayn”);break;_____________________________________________ printf(“errorn”);} return 0;} 5.判断a>b、a #include“stdio.h” int main(){ int a,b;printf(“please input a,b: ”);scanf(“%d%d”,&a,&b);_____________________________________________ printf(“A=Bn”);_____________________________________________ printf(“A>Bn”);_____________________________________________ printf(“A 6.根据以下函数关系,对输入的每个x值,计算出相应的y值。 #include“stdio.h” int main(){ int x,c,m;float y;scanf(“%d”,&x); _________________________________________c=-1;c=_____________________________________________;switch(c){ case –1 : y=0;break;case 0 : y=x;break;case 1 : y=10;break;case 2 : case 3 : y=-0.5*x+20;_____________________________________________; else 7.default : y=-2;} if(c!=2)printf(“y=%f”,y); _____________________________________________ printf(“error!”);return 0;} 找出x,y,z三个数中的最小数,并判断该数是否等于b。#include“stdio.h” int main(){ int x=4,y=5,z=8 ,b;int u,v;scanf(“%d”,&b);u = x 8.输入两个运算数x,y和一个运算符号op,输出该运算结果的值,例如输入3+5↙得到结果8.#include“stdio.h” int main() { float x,y,r; char op; scanf(“%f,%c,%f”,&x,&op,&y); switch(op) { case '+': r=x+y;_____________________________________________; _____________________________________________ r=x-y;break; case '*' :_____________________________________________;break; _____________________________________________ r=x/y;break; } printf(“%f”,r); return 0;} 9.根据输入字符的ASCII码来判别字符的类别。由ASCII码表可知ASCII值小于32的为控制字 符。在“0”和“9”之间的为数字,在“A”和“Z”之间为大写字母,在“a”和“z”之 间为小写字母,其余则为其它字符。 #include“stdio.h” int main(){ char c;printf(“input a character: ”);c=getchar();_____________________________________________ printf(“This is a control charactern”); if(c>='0'&&c<='9') printf(“This is a digitn”);_____________________________________________ printf(“This is a capital lettern”);_____________________________________________ printf(“This is a small lettern”);_____________________________________________ printf(“This is an other charactern”);return 0;} 10.找出a,b,c三个数中的最大数,并判断该数是否等于x。 #include“stdio.h” int main(){ int a=8,b=4,c=12,x;int u,v;scanf(“%d”,&x); u = a } 解答: 1.c=getchar(); (c>='0'&&c<='9') (c>='A'&&c<='Z') else 2.char c; break; '-': printf(“%fn”,a/b); 3.max=a; min=b; if(max min=c; 4.switch(a) case 2: break; default: 5.if(a==b) else if(a>b) else if(a else 6.if(x<0)c=x/10; break; else 7.x:y; u:z; (v==b) else 8.break; case '-': r=x*y; case '/': 9.if(c<32) else if(c>='A'&&c<='Z') else if(c>='a'&&c<='z') else 10.b:a c:u (v==x) else 四.改错题 解答: 五.编程一 1.求分段函数的值,输入x值,输出结果。 2.从键盘上输入一个数x,计算并输出下列分段函数y的值。 3.某运输公司运费计算时根据运输距离打折计算,折扣的计算方法如下: (其中,discount表示折扣,S表示运输距离)。 编写一完整程序,输入运输距离,统计运费并输出。每公里的运费通过符号常量定义为2.5。 4.编程输入一元二次方程的三个系数,求解一元二次方程的实根,无实根时不用求虚根,给出相应提示信息即可。 5.给定三条边,判断其是否能构成三角形,若能构成,判断其是等腰三角形、等边三角形、直角三角形还是普通三角形。 6.从键盘输入一个三角形的三条边,判断是否能组成三角形,若能组成三角形,则输出它 的面积。7.从键盘输入一个百分制的学生成绩,输出其对应的分数等级,其中90~100为A,80~89 为B,70~79为C,60~69为D,60以下为E。 8.编写一个程序,从键盘输入三个整数给a,b,c,然后交换它们中的数,把a中原来的值 给b,把b中原来的值给c,把c中原来的值给a。 9.输入一个字符,判断其是否为英文字母,若是英文字母,则将其大小写进行转换,若不 是英文字母,则不变。 10.给定三个整数型x,y,z,输出三个数中的最大值和最小值。 解答: 1.#include “stdio.h” #include “math.h” void main(){ float x,y;printf(“input xn”);scanf(“%f”,&x);if(x<0) y=1;else if(x<=5) y=2*x;else y=sqrt(x);printf(“x=%5.1fy=%8.3fn”,x,y);} 2.#include “stdio.h” #include “math.h” void main(){ float x,y;printf(“input xn”);scanf(“%f”,&x);if(x>20||x>1&&x<10){ printf(“无定义n”); return;} if(x<0) y=-x;else if(x<=1) y=sin(x)+x;else if(x>=10&&x<=20) y=x*x*x;printf(“x=%5.1fy=%8.3fn”,x,y);} 3.#include “stdio.h” #include “math.h” #define price 2.5 void main(){ float discount,cost,s;printf(“input distancen”);scanf(“%f”,&s);if(s<250) discount=0;else if(s<800) discount=0.02;else if(s<1500) discount=0.05;else discount=0.08;cost=s*(1-discount)*price;printf(“distance=%5.1f;cost=%5.1fn”,s,cost);} 4./*功能:求一元二次方程的解。*/ #include “math.h” #include “stdio.h” main(){float a,b,c,disc,x1,x2; scanf(“%f,%f,%f”, &a, &b, &c); disc=b*b-4*a*c; if(disc==0) printf(“x1=x2=%7.2fn”,-b/(2*a));/*输出两个相等的实根*/ else if(disc>0) { x1=(-b+sqrt(disc))/(2*a);/*求出两个不相等的实根*/ x2=(-b-sqrt(disc))/(2*a); printf(“x1=%7.2f,x2=%7.2fn”, x1, x2); } else printf(“无实根n”);} 5.#include “stdio.h” void main(){ float a,b,c;printf(“输入三条边:n”);scanf(“%f%f%f”,&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a){ if(a==b&&b==c) printf(“等边三角形n”); else if(a==b||b==c||c==a) printf(“等腰三角形n”); else if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==b*b+a*a) printf(“直角三角形n”);} else printf(“不能构成三角形 n”);} 6.#include “stdio.h” #include “math.h” void main(){ float a, b, c, s, area;printf(“输入三条边:n”);scanf(“%f%f%f”,&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a){ s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf(“area=%7.2fn”,area);} else printf(“不能构成三角形 n”);} 7.#include int score; char d; printf(“Input scoren”); scanf(“%d”,&score); if(score>100||score<0) { printf(“data error!n”); return; } switch(score/10) { case 10: case 9:d='A';break;case 8:d='B';break; case 7:d='C';break; case 6:d='D';break;default : d='E';break; } printf(“score=%3ddengji=%cn”,score,d);} 8.#include int a,b,c,t; printf(“Input a,b,cn”); scanf(“%d%d%d”,&a,&b,&c); t=a; a=b; b=c; c=t; printf(“a=%d;b=%d;c=%d;n”,a,b,c);} 9.#include char c1,c2; printf(“Input a letter: ”); c1=getchar(); if(c1>='a'&&c1<='z') c2=c1+'A'-'a'; else if(c1>='A'&&c1<='Z') c2=c1+'a'-'A'; else c2=c1; printf(“原字符:%c转换后为:%cn”,c1,c2);} 10.#include int a,b,c,max,min; printf(“Input a,b,cn”); scanf(“%d%d%d”,&a,&b,&c); max=a;min=a; if(b>max)max=b; else if(b if(c>max)max=c; else if(c printf(“a=%d;b=%d;c=%d;n”,a,b,c); printf(“max=%d;min=%dn”,max,min);} 六.编程二 解答: 第五章 循环结构 一.填空 1.C语言中提供了三种循环控制语句,它们是:()、do-while语句、()。 2.break语句在C程序中只能出现在两种场合:一是用于()语句中,二是用于()语句中。 3.以下程序段中的语句printf(“***”)要执行5次,请在空白处填入合适的数。 for(i=1;i<=();i=i+2) printf(“***”); 4.定义int k=10;执行语句 while(k<20)k += 1 ; 后,k的值为()。 5.在循环控制结构中break语句的作用是()。 6.在循环控制结构中continue语句的作用是:()。 7.若已知int a[5][5];并在运行过程中a数组已经赋值;要打印次对角线元素,在空白处 填入合适的值/表达式; for(i = 0;i<5;i++) for(j =();j >=0;j--) printf(“%5d”, a[i][j]);8.执行完语句sum = 0;for(i = 0;i < 10;i++){ if(i % 5 = = 0)sum += i;sum =()。 9.在使用while 语句中需要注意,为了防止“死循环”的发生,在循环体中一定要有()语句。 10.do-while 语句中,判断循环条件在(),执行循环体在()。(填“先”“后 ”) 解答: 1.2.3.4.5.6.7.8.9.10.二.阅读程序写结果 1.#include int number , digit; number = 1234; while(number!= 0) { digit = number%10; printf(“%d” , digit); number = number / 10; } } 2.#include int i; for(i=1;i printf(“%dn”,i*i);} 3.#include int i,s,x; s=0; x=15; for(i=1;i<=5;i++) if(x%i==0) s= s + i; printf(“i=%d,s=%dn”,i,s);} 4.#include int counter=1; while(counter <= 5) printf(“%d n”, counter); counter++; } } 5.#include int i,sum,m,a; sum=0; m=5; for(i=0;i<=3;i++) { scanf(“%d”,&a); if(a>m) sum+=a; } printf(“sum=%dn”,sum); return 0;} { 输入:2 10 8 3<回车> 6.#include int i,j,k; for(i=1;i<=4;i++) { for(j=1;j<5-i;j++) printf(“ ”); for(k=1;k<=i;k++) printf(“*”); printf(“n”); } return 0;} 7.#include int i,j; i=1; while(i<5) { for(j=1;j<2*i+1;j++) printf(“%c”,'#'); printf(“n”); i++; } return 0;} 8.#include int i=10,m=0,n=0; do { if(i%2!=0) m=m+i; else n=n+i; i--; }while(i>=0); printf(“m=%d,n=%dn”,m,n); return 0;} 9.#include int sum=0,n; scanf(“%d”,&n); while(n<=5) { sum+=n; n++; } printf(“sum=%d”,sum);} 输入:1<回车> 10.#include int i, j; for(i=2;i>=0;i--) { for(j=1;j<=i;j++) printf(“*”); for(j=0;j<=2-i;j++) printf(“!”); printf(“n”); } } 11.#include int a,b; for(a=1,b=1;a<=100;a++) { if(b>20)break; if(b%4==1) b=b+4; } b=b-5; } printf(“a=%dn”,a);} 12.#include { continue; { char k; int i; for(i=1;i<3;i++) { scanf(“%c”,&k); switch(k) { case '0': printf(“anothern”); case '1': printf(“numbern”); } } } 输入:01<回车> 13.#include int i, s = 0; for(i = 1;i < 10;i++) { s += i * i; if(s > 10)break; } printf(“i=%d, s=%dn”, i, s); return 0;} 14.#include char ch; while((ch=getchar())!='n') { if(ch>='A'&&ch<='Z') ch=ch+32; else if(ch>='a'&&ch<='z') ch=ch-32; printf(“%c”,ch); } } 输入:ABCdef<回车> 15.#include int a, b; for(a = 1, b = 1;a <= 100;a++) { if(b >= 9)break; if(b % 3 == 1) { b += 3; continue; } b-= 5; } printf(“%d,%dn”, a, b); return 0;} 16.#include int i = 0,j = 0; while(i < 10)i++; while(j++ < 10); printf(“i=%d,j=%dn”,i,j); return 0;} 17.#include “stdio.h” void main(){ int i,j,t; for(i=1,j=10;i<3;i++,j--) t=i+j; t++; printf(“%d,%d”,j,t);} 18.#include “stdio.h” void main(){ int i=10,j; do { j = i%2; printf(“%d”,j); i--; } while(i> 4);} 19.#include “stdio.h” void main(){ int i=7,j; while(i> 2) { j = i%2; printf(“%d”,j); i--; } printf(“%d”,i);} 20.#include int i,j,t=0; for(i=3;i>0;i--) for(j=0;j<4;j++) t+=j; printf(“t=%d”,t);} 解答: 1.4321 2.1 4 9 16 3.i=6,s=9 4.1 2 3 4 5.sum=18 6.* ** *** **** 7.## #### ###### # 8.m=25,n=30 9.sum=15 10.**!*!!! 11.a=6 12.another number number 13.i=3, s=14 14.abcDEF 15.4,10 16.i=10,j=11 17.8,12 18.010101 19.101012 20.t=18 三.补充程序 1.输出100以内能被3整除的数 #include“stdio.h” int main(){ _____________________________________________;for(_________________________;n<=100;________________________){ if(n%3!=0)________________________ printf(“%d ”,n);} return 0;} 2.输出100以内的素数。素数是只能被1 和本身整除的数。为减少循环次数,只需对数n用2 ~ 去除来判断该数是否素数。 #include“stdio.h” ________________________ int main(){ int n,i,k;for(n=2;n<=100;________________________){ k=sqrt(n);for(i=2;i<=k;________________________)if(n%i==0)________________________ if(i>k)printf(“t%2d”,n);} return 0;} 3.输出200以内能被5整除的数 #include“stdio.h” int main(){ ________________________ for(________________________;n<=200;________________________){ if(n%5!=0)________________________ printf(“%d ”,n);} return 0;} 4.求输入的十个整数中正数的个数及其平均值 #include int i,num=0,a;float sum=0; for(i=0;________________________;________________________){ scanf(“%d”,&a);if(a>=0){ ________________________;________________________;} } printf(“%d plus integer's sum: %6.0fn”,num,sum);printf(“Mean value:%6.2fn”,sum/num);return 0;} 5.求输入的十个整数中负数的个数及其平均值 #include int i,num,a;float sum=0;________________________;________________________;while(i<10){ scanf(“%d”,&a);if(a<=0){ ________________________;num++;} ________________________; } printf(“%d plus integer's sum: %6.0fn”,num,sum);printf(“Mean value:%6.2fn”,sum/num);return 0;} 6.分解并打印出X的各个素数因子.如18=1*2*3*3.#include int i,x; scanf(“%d”,&x); printf(“%d=1”,x); for(________________________;i<=x;________________________){ while________________________ { printf(“*%d”,i); ________________________;} } return 0;} 7.输出九九乘法表.#include int i,j; for(i=1;________________________;________________________) { for(________________________;________________________;j++) printf(“%2d*%2d=%2d”, j, i ,i*j); printf(“nn”); } return 0;} 8.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 #include “stdio.h” int main(){ int n,t,number=20;float a=2,b=1, ________________________;for(n=1;________________________;________________________){ s=s+a/b;t=a; a=a+b;________________________;} printf(“sum is %9.6fn”,s);return 0;} 9.求1+2!+3!+...+20!的和.#include “stdio.h” int main(){ float n, ________________________,t=1;for(n=1;________________________;________________________;){ t*=n;________________________;} printf(“1+2!+3!...+20!=%en”,s);return 0;} 10.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 #include “stdio.h” int main(){ int n,t,number=20;float a=2, ________________________,s=0;for(________________________;________________________;n++){ s=s+a/b;t=a; ________________________;b=t;} printf(“sum is %9.6fn”,s);return 0;} 解答: 1.int n; n=1; n++ continue; 2.#include“math.h” n++ i++ break; 3.int n; n=1 n++ continue; 4.i<10 i++ num++ sum+=a 5.i=0; num=0; sum+=a; i++; 6.i=1 i++ (x%i==0) x=x/i; 7.i<=9 i++ j=1 j<=i 8.s=0 n<=20 n++ b=t; 9.s=0 n<=20 n++ s+=t; 10.b=1 n=1 n<=20 a=a+b 四.改错题 解答: 第一章 基础知识 一.填空 1.每个C程序都必须有且仅有一个________ 函数。 2.C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载 和执行。 3.软件是程序,以及______、使用和维护所需要的所有文档。4.国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5.程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。6.C语言是由________组成的。 7.C语言的函数可分为主函数main、标准库函数和_________。8.一个函数是由两部分组成的,即:________和 函数体。 9..编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。10.程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动 化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11.机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻 译可以直接识别和执行的程序设计语言。12.与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。 13.在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。14.C程序的执行均是由执行_________开始。 15.函数体即为包含在{ }内的部分。它分为________和为完成功能任务由若干个C语句 组成的执行部分。 16.C语言程序中一条简单语句是以________字符作为结束符的。17.C语言是结构化、________的程序设计语言。 18.由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19.用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。20.第一个系统体现结构化程序设计思想的教学工具语言是_______语言。解答: 1.main()2.编译 3.开发 4.指令序列 5.高级语言 6.函数 7.自定义函数 8.函数首部 9.翻译 10.应用软件 11.二进制代码 12.助记符 13.# 14.main函数 15.声明部分 16.;(或分号) 17.模块化 18.翻译 19.执行速度 20.PASCAL 二.阅读程序写结果;三.补充程序;四.改错题;五.编程一;六.编程二; 第二章 常量、变量和表达式 一.填空 1.以16位计算机为例,若定义long int a;则变量a占______个字节的内存空间。2.以16位计算机为例,若定义double a;则变量a占______个字节的内存空间。3.以16位计算机为例,若定义long double;则变量a占______个字节的内存空间。4.在______位机,int型占4个字节。 5.C语言的数据类型有:基本数据类型、构造数据类型、枚举类型、______、空类型。6.在C语言中,基本数据类型有:______。 7.整型常量046转换为十进制数等于______。 8.整型常量054转换为十进制数等于______ 。9.整型常量0x125转换为十进制数等于_____。 10.整型常量0x7C转换为十进制数等于______。 11.整型常量39转换为八进制等于______。 12.实数473.468写成规范化指数形式,则应为______。 13.实数0.0453写成规范化指数形式,则应为_____。 14.将0x123转换为二进制等于______。 15.字符’A’表示成十六进制等于_____。 16.在C语言中,称代表常量的标识符为______。 17.C语言中是用编译预处理命令______来定义符号常量 18.在C语言中,以反斜杠符()开头,后跟字符的字符序列,称之为_____,主要用来表示控制及不可见的字符或者一些图形符号。 19.语句printf(“106”)执行的结果输出是______。 20.语句printf(“b”)执行的结果输出是______。 21.语句printf(“b”)执行的结果输出是______。 22.语句printf(“102”)执行的结果输出是______。 23.若有char ch1;ch1='a'+4;则语句printf(“%c”,x)的输出结果为______。 24.字符串常量“Hello, everyone!”占据的内存空间为______个字节 25.字符串常量“Hello,Bob!”占据的内存空间为 ______个字节。 26.十进制整型常量由0~9个数据组成,但不能以______开始,没有小数部分 27.十六进制常量由0~9和______组成 28.unsigned long类型常量通常以______为后缀 29.实型常量通常有小数形式和______两种表达方式 30.C语言中是用编译预处理命令______来包含其他源文件 31.为了表示字符串的结束,系统自动在字符串的最后加一个______,但不被输出 32.C语言中,其值可被改变的量称为变量,它具有三个基本要素:变量名、______和变量值。33.C语言规定,变量的标识符只能由字母、数字和下划线组成,且不能以______开头。34.在16位机中,sizeof(“hellon”)等于______。 35.在16位机中,printf(““hello””)等于_____。 36.字符变量在内存中占用______个字节的存储空间。37.若有定义int x=27, y=6;则表达式 x/y的值为______。38.若有定义int x=47, y=8;则表达式 x%y的值为______。 39.若有定义char ch1='A',ch2,ch3;执行ch2=ch1++;ch3=++ch1;printf(“ch1=%c, ch2=% c”,ch1,ch2);则输出为______。 40.若有定义char ch1='A',ch2,ch3;执行ch2=ch1++;ch3=++ch1;printf(“ch2=%c, ch3=% c”,ch2,ch3);则输出为______。 41.若有定义int i=5, j, k;执行j=i--;k=--i;printf(“i=%d, j=%dn”, i, j);则输 出为______。 42.表达式(int)(13.7+25.6)/4%5的值是______。 43.表达式 3.6-5/2+1.2+5%3的值是______。 44.表达式54%10/2+4.0*(8/5)的值是______。 45.若定义int x;double b=5.45;执行x=b后,则x的值为______。 46.若定义int y;char c='A';执行y=c后,则y的值为______。 47.若定义 int a=8;float b=2.5;则a/(int)(b)的值为______。 48.若a=5,则执行a*=7-3语句后,a的值是______。 49.若int a=1,b=0,c=4,d=2;则表达式(a>b ? a:b)&&(c-d)的值为______。 50.已知a = 0,表达式 a = 1?b = 1:b = 0;执行后,b的值是_____。 51.若定义int m=7,n=12;则表达式n%=m-m%5的值是______。 52.若定义int a=8;float b=4.5;执行a*=a/=a-b后,a的值为______。 53.int a=2;!a++的值为_____。 54.int a=0;!++a的值为______。 55.int a=7;float b=4.5;则printf(“%d”,a*=a/=a-b)的值为______。 56.int k=7;float a=2.5,b=4.7;则表达式a+k%3*(int)(a+b)%2/4的值为______。 57.#define MM(a,b)(a-b)?a:b int a=2,b=6;printf(“%dn”,MM(a,b))的值为______。 58.在32位机中,int a=4,b=7;printf(“%0x”,a-b)的值为:______。 59.int x,y,z;x=y=2;z=3;y=x++-1;printf(“%d,%d”,x,y)的值为: ______。 60.int i=2,j;printf(“%d”,j=i<1)的值为:______。 解答: 1.4;2.4;3.10;4.32;5.指针类型;6.int、float、double、char;7.38;8.44;9.293; 10.124;11.047;12.4.734680e+002;13.4.530000e-002;14.100100011;15.x41/41H; 16.符号常量;17.#define;18.转义字符常量;19.F;20.b;21.b;22.B;23.e;24.16; 25.11;26.0;27.A~F;28.U;29.指数形式;30.#include;31.“ ”;32.变量类型; 33.数字;34.7;35.“hello”;36.1;37.4;38.7;39.ch1=C, ch2=A;40.ch2=A, ch3=C; 41.i=3, j=5;42.4;43.4.800000;44.6.000000;45.5;46.65;47.4;48.20;49.1; 50.1;51.2;52.4;53.0;54.0;55.4;56.2.500000;57.2;58.fffffffd;59.3,1; 60.0 二.阅读程序写结果;三.补充程序;四.改错题;五.编程一;六.编程二; 第三章 顺序结构; 一.填空 1.C语言的语句可分为5类,它们是:控制语句、____________、函数语句、符合语句和空 语句。 2.常用于字符输入的函数为:________________。3.常用于字符输出的函数为:________________。4.常用于字符串输入的函数为:________________。5.常用于字符串输出的函数为:________________。6.格式输入函数的一般形式为:________________。7.格式输出函数的一般形式为:________________。 8.printf和scanf是标准的库函数,它们的函数原型在头文件________________中。9.有char ch,则从键盘给ch赋值的格式输入语句为:________________。10.如果要输出字符串常量“HelloWord!”,则格式输出语句为:________________。11.设有定义:long x=-123456L;,请写出能够正确输出变量x值的语句________________。12.若有int a,b;,想通过scanf(“%d%d”,&a,&b);输入语句给a赋于1,给b赋于2,则从键盘输入数据的形式是________________。 13.若有int i,j;scanf(“i=%d,j=%d”;&i,&j);,要求给i赋10,给j赋20,则应该从键盘 输入_______。 14.已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为 1、j的值为 2、k的值为3,请写出正确的输入语句________________。 15.有int m,n,p;scanf(“m=%dn=%dp=%d”,&m,&n,&p);printf(“%d%d%dn”,m,n,p);若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是___________。 16.有 int a;float b, c;scanf(“%2d%3f%4f”,&a,&b,&c);printf(“na=%d, b=%f, c=%fn”, a, b, c);,若运行时从键盘上输入9876543210<回车>,则程序的输出结果是_____________。17.有 int m=0256,n=256;则 printf(“%o %on”,m,n);的输出结果是__________________。18.有int x=102,y=012;,则printf(“%2d,%2dn”,x,y);的输出结果是____________。 19.有定义和语句:int a;char c=10;float f=100.0;double x;a=f/=c*=(x=6.5);则printf(“%d %d %3.1f %3.1fn”,a,c,f,x);的输出结果是_____________________。 20.若有定义和语句:int m=0xabc,n=0xabc;m-=n;则printf(“%on”,m);的输出结果是___。21.若有int m=32,n=032;,则printf(“%d,%xn”,m,n);执行后输出结果是______________。22.若有 int a=1234;,则 printf(“%2dn”,a);的输出结果是_________________。 23.若变量已正确说明为float类型,要通过语句scanf(“%f %f %f ”,&a,&b,&c);给a赋于1 0.0,b赋予22.0,c赋予33.0,不正确的输入形式是_____________________。 A)10 <回车>22<回车>33<回车> B)10.0,22.0,33.0<回车> C)10.0<回车> 22.0 33.0<回车> D)10 22<回车> 33<回车> 24.若有 int x=3,y=1;则printf(“%d %dn”,x++,y+2);的输出结果是________________。 25.若有定义和语句:double d;float f;long l;int i;i=f=l=d=20/3;则 printf(“%d %ld %f %f n”, i,l,f,d);的输出结果是(小数点后只写一位)_____________________。26.以下说法中正确的是 _____________________。 A)#define和printf都是C语句;B)#define是C语句,而printf不是; C)printf是C语句,但#define不是;D)#define和printf都不是C语句 27.若有 int k=17;,则 printf(“%d,%o,%x n”,k,k,k);的输出结果是________________。28.以下叙述中正确的是_____________________。 A)输入项可以是一个实型常量,如:scanf(“%f”,3.5);B)只有格式控制,没有输入项,也能正确输入数据到内存,例如:scakf(“a=%d,b=%d”);C)当输入数据时,必须指明变量地址,例如:scanf(“%f”,&f);29.若有定义和语句:int u=010,v=0x10,w=10;则printf(“%d,%d,%dn”,u,v,w);输出结果是_____________________。 30.若有int a=1,b=4,c=2;float x=10.5, y=4.0, z;z=(a+b)/c+sqrt((double)y)*1.2/c+ x;,则printf(“%fn”,z);的输出结果是_____________________。 31.若有int a=2,c=5;,则printf(“a=%%d,b=%%dn”,a,c);的输出结果是________________。32.有char c;int n=100;float f=10;double x;x=f*=n/=(c=50);则printf(“%d %f n”,n,x);的输出结果是_____________________。 33.有int i=0,j=0,k=0;scanf(“%d%*d%d”,&i,&j,&k);printf(“%d%d%dn”,i,j,k);若 从键盘输入:10 20 30<回车>。输出结果是_____________________。 34.若有int a,b,c;a=25;b=025;c=0x25;,则printf(“%d %d %dn”,a,b,c);的输出结果 是___________。35.有以下语句段 int n1=10,n2=20; printf(“________________”,n1,n2); 要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。 n1=10 n2=20 36.若有语句int i=-19,j=i%4;则printf(“%dn”,j);的输出结果是_____________________。37.有int a=0;a+=(a=8);则printf(“%dn”,a);的输出结果是_____________________。 38.有int a=1, b=2;a=a+b;b=a-b;a=a-b;则printf(“%d,%dn”, a, b);的输出结果是__________。39.有unsigned short a=65536;int b;,则printf(“%dn”,b=a);的输出结果是________。40.语句printf(“10289n”);的数据结果为:__________________。解答: 1.表达式语句;2.getchar();3.putchar();4.gets();5.puts(); 6.scanf(“格式控制字符串”,地址表列);7.printf(“格式控制字符串”,输出表列);8.stdio.h;9.scanf(“%c”,&ch);10.printf(“%s”,HelloWord!);或者:printf(“HelloWord!”);11.printf(“x=%1dn”,x);12.1 2;13.i=10,j=20;14.scanf(“%d,%d,%d”,&i,&j,&k);15.m=123n=456p=789; 16.a=98, b=765.000000, c=4321.000000;17.256 400;18.102,10;19.1 65 1.5 6.5;20.0;21.32,1a;22.1234;23.B;24.3 3;25.6 6 6.0 6.0;26.D;27.17,21,11;28.C;29.8,16,10;30.13.700000;31.a=%d,b=%d;32.2 20.000000;33.10300;34.25 21 37;35.n1=%dnn2=%d;36.-3;37.16;38.2,1;39.0;40.B89; 二.阅读程序写结果;三.补充程序;四.改错题;五.编程一;六.编程二; 第四章 选择结构 一.填空 1.在if, while, case, do, else 等关键字中,用于选择结构的有().2.已知 a = 1;那么 if(a = 2)printf(“%d”, 2);else printf(“%d”, 1);的输出结 果是().3.已知 char a = 'A';那么 if(a > 65)printf(“%s”, “bigger”);else printf(“%s” , “smaller”);的输出结果是().4.表示“x≥ y≥ z”的C语言表达式是()。 5.在C语言中,用于实现选择结构的语句有()语句和()语句。6.判断两个浮点型变量x和y是否相等一般用:if(<1e-6)„。7.设有程序段: t=6;a=7;b=8;if(a=b)t=a;,这段程序执行后,t的结果是()。8.设a=1,b=2,c=3,d=4,则表达式:a>b?a:c>d?a:d的结果为()。9.表达式98 && 8 && 31 &&(9812; printf(“%dn”, y); return 0;} 输入:12<回车> 17.#include float x, y; char op; double r; scanf(“%c%f%f”,&op,&x,&y); switch(op) { case '+': r = x + y;break; case '-': r = x1); t = *(s + i); *(s + i)= *(s + j); *(s + j)= t; } } void main(){ int a[6] = {10, 6, 23,-90, 0, 3}, i; invert(a, 0, 5); for(i = 0;i < 6;i++)printf(“%d, ”, a[i]); printf(“n”); } 32.int func(int a[][3]){ int i,j,sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++){ a[i][j]=i+j; if(i==j; sum = sum+a[i][j]; } return sum;} int main(){ int a[3][3]={1,3,5,7,9,11,13,15,17}; int sum; sum=func(a); printf(“sum=%d”,sum); return 0;} 33.# include int i=10;void fun();void main(){ int i; for(i=2;i>0;i--) fun();} void fun(){ i*=2; printf(“i=%dn”, i);} 34.#include int fun(int n) { if(n<=1) return 1; else return fun(n-1)*n; } void main() { int i,j=0; for(i=1;i<=3;i++) j+=fun(i); printf(“j=%dn”,j); } 35.#include int funa(int a, int b) { int t; if(a > b) t = a/b else t = a%22; return t; } void main(){ int a=33, b=22,c; c=funa(a,b); printf(“c=%dn”, c); } 36.# include int i; for(i=2;i>0;i--) fun(i);} void fun(int i){ i*=2; printf(“+%d+”, i);} 37.# include int x=879; fun(x);} void fun(int n){ int a,b,c,t; a = n % 10; b =(n/10)% 10;t;} if(b < c){ t = b;b = c;c = t;} if(a < b){ t = a;a = b;b = t;} printf(“%d”, b);} 38.#include int t; c =(n/100)% 10;if(a < b){ t = a;a = b;b = if(a > b) { t = a; a = b; b = t; } return t;} void main(){ int a=33, b=22,c; c=funa(a,b); printf(“c=%dn”, c);} 39.#include int swap(int x, int y) { int z; z=x%10; x=y%10; y=z; z=x; return z; } void main() { int a=38, b=29,c; c=swap(a,b); printf(“%d%dn”, a,c);} 40.#include if(n==1) printf(“*n”); else { printf(“-”); fun(n-1); } } void main(){ int i,j=0; for(i=1;i<4;i++) fun(i); printf(“XiaoXin!”);} 解答: 1.p=27;2.运行结果:12345;3.3 5;4.5 3,3 2;5.2;6.11 21 31;7.3 7; 8.6 5;9.012345;10.a1=1,a2=3,a3=2;11.10,20,30; 12.a=2,b=3;a=2,b=3;13.10,20,30;14.a=1.0000;15.567;16.4;17.3.000000;18.80,-20;19.-1;20.j=12;21.4,3,5;22.18; 23.Hello, world!Hello, world!Hello, world!;24.x=3;25.x=22; 26.i = 7;j = 6;x = 7 i = 2;j = 7;x = 5;27.7; 28.(1)x = 2 y = 3 z = 0(2)x = 4 y = 9 z = 5(3)x = 2 y = 3 z = 0 29.10, 20, 40, 40;30.125;31.3,0,-90,23,6,10;32.sum=6;33.i=20 i=40;34.j=9;35.c=1 36.+4++2+;37.8;38.c=33;39.389; 40.* -* --* XiaoXin!三.补充程序 1.定义了一个max 函数,找两个整数的最大值,其位置在main之后.#include “stdio.h” ________________________ int main(){ int x,y,z;printf(“input two numbers:n”);scanf(“%d%d”,&x,&y);________________________;printf(“maxmum=%d”,z);return 0;} int max(int a,int b){ ________________________;if(a>b)w=a;else w= b;________________________;} 2.用函数nzp判别一个整数a的值,若大于0 则输出该值,若小于等于0则输出0值。 #include “stdio.h” ________________________nzp(________________________){ if(v>0)________________________ else printf(“%d ”,0); } int main(){ int a;printf(“input number a:n”);scanf(“%d”,&a);________________________ return 0;} 3.主函数调f1计算n阶乘.#include “stdio.h” ________________________ int main(){ int n;long s;scanf(“%d”,&n); ________________________ printf(“ns=%ldn”,s);return 0;} long f2(int n){ ________________________ int i;for(i=1;i<=n;i++)c=c*i;________________________ } 4.主函数调fun计算1+1/2!+1/3!+...+1/30!的和.#include “stdio.h” ________________________ int main(){ int n;float s;________________________ printf(“1+1/2!+1/3!...+1/30!=%fn”,s);return 0;} float fun(){ int n;float t=1;________________________ for(n=1;n<=30;n++){ t*=1/n;s+=t;} ________________________ } 5.数组a中存放了一个学生5门课程的成绩,求平均成绩。 #include “stdio.h” ________________________ int main(){ float sco[5],av;int i;printf(“ninput 5 scores:n”);for(i=0;i<5;i++)scanf(“%f”,&sco[i]);________________________ printf(“average score is %5.2f”,av);return 0;} float aver(float a[]){ int i;float s=a[0];________________________ for(i=1;i<5;i++)s=s+a[i];av=s/5;________________________ } 6.用递归法计算n!#include “stdio.h” ________________________ int main(){ int n;long y;printf(“ninput a inteager number:n”);scanf(“%d”,&n);________________________ printf(“%d!=%ld”,n,y);return 0;} ________________________ff(int n) { long f; if(n<0)printf(“n<0,input error”); else if(n==0||n==1)f=1;else f=ff(n-1)*n; ________________________ } 7.输入正方体的长宽高l,w,h。求体积及三个面x*y,x*z,y*z的面积。 #include “stdio.h” int s1;________________________ int vs(int a,int b,int c){ ________________________ v=a*b*c;s1=a*b;s2=b*c;s3=a*c;________________________ } int main(){ int v,l,w,h;printf(“ninput length,width and heightn”);scanf(“%d%d%d”,&l,&w,&h);________________________ printf(“v=%d s1=%d s2=%d s3=%dn”,v,s1,s2,s3);return 0;} 8.输入两个正整数num1,num2,求其最大公约数.#include “stdio.h” ________________________ int main(){ int d;int num1,num2;printf(“please input two numbers:n”);scanf(“%d,%d”,&num1,&num2);________________________ printf(“gongyueshu:%dn”,d);return 0;} int gongyue(int a,int b){ ________________________ while(b){ temp=a%b;a=b;b=temp;} ________________________ } 9.利用递归函数调用方式,输出6个数字。 #include “stdio.h” ________________________ int main(){ int w=5;fun(w);printf(“n”);return 0;} ________________________fun(________________________){ if(k>0)________________________;printf(“%d”,k); } 10.主函数调printstar打印一串星形图案.#include “stdio.h” ________________________ int main() { ________________________; return 0;} ________________________printstar(________________________) { printf(“*************n”); } 解答: 1.int max(int a,int b);z=max(x,y);int w;return w; 2.void;int v;printf(“%d”,v);nzp(a); 3.long f2(int n);s=f2(n);long c=1;return c;4.float fun(void);s=fun();float s=0;return s;5.float aver(float a[]);av=aver(sco);float av;return av;6.long ff(int n);y=ff(n);longreturn f;7.int s2,s3;int v;return v;v=vs(l,w,h);8.int gongyue(int a,int b);d=gongyue(num1,num2);int temp;return a;9.void fun(int k);voidint k;fun(k-1);10.void printstar(void);printstar();voidvoid 四.改错题(解答)五.编程一(解答)六.编程二 1.编程实现:任意输入两个正整数,求它们的最大公约数和最小公倍数。要求最大公约数 通过自定义函数来输出。 2.编程实现:求出10~10000之内的所有素数。要求素数判断通过自定义函数来实现。3.编程实现:输出所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字立 方和等于该数本身。例如:153是一个“水仙花数”,因为。要求水仙花数的判断通过自定 义函数来实现。4.编程实现:打印出2~1000之间的所有完数。所谓完数,是指这样的数,该数的各因子之和正好等于该数本身,例如:6=1+2+3;28=1+2+4+7+14;因此,6、28都是完数。要求完数的判断通过自定义函数来实现。 5.编程实现:打印出10~9999之间的所有回文数,要求每10个数一行输出。要求回文数的判断通过自定义函数来实现。 6.编程实现:打印出1~9999之间的所有同构数,所谓同构数是指一个数如果出现在该数平方的右端,该数就是同构数。如5,25都是同构数。要求同构数的判断通过自定义函数来实现。 7.给定一5*5的整型矩阵,求所有正对角线元素之和,并以矩阵的形式输出矩阵的值。要求:对角线元素之和及矩阵输出分别通过两个自定义函数来实现。 8.编程实现:输入一4*4的矩阵的值,求出每行的最大值并输出其所在列号。要求:通过通过自定义函数实现矩阵的输入输出。 9.编程实现:任意给定一个十进制的整数,将其转换成二进制,按位将其存放到数组中,然后输出,要求数制转换通过自定义函数来实现。 10.编程实现:任意输入一个正整数,编程求出它是几位数并将其逆序输出。要求通过自定 义函数实现求是几位数,该函数原形为:int ni(int x,int a[]);函数返回值是该数是几位数,x为给定的数,a中存放该数的各个位。 11.编写程序从键盘输入x和n的值,求xn(n为大于等于零的整数),要求用 递归函数求xn。 12.编写实现:输入两个正整数m,n(m>n),计算从m个元素中任意取n个元素的组合,计算机公式为:。要求通过递归函数求阶乘。 13.编程实现:从键盘任意输入10个不相同的整数,然后,输入要查找的数x,如果在这10个数中找到x,则打印“Found!”;如果找不到,则打印“Not found!”。要求通过自定义函数实现查找功能。 14.从键盘输入某班20个学生的成绩和学号,然后从键盘任意输入一个学生的学号,查找出他的成绩并输出,若未找到,给出相应提示。要求通过自定义函数实现查找功能。 15.编程实现:从键盘任意输入某班20个学生的姓名和成绩,输出最高分及不及格学生的人数。要求分别用两个自定义函数求最高分和不及格人数。 16.编程实现:输入2个降序排列的整数数列,将这两个数列合并存放到另一个数组中,要求每个数都一次到位,不得在新数组中重新排序。要求数列合并通过自定义函数来实现。17.编程实现:输入N名职工的姓名及计算机水平考试的成绩,输出及格人数和及格的职工信息。要求:职工信息的输入和输出分别通过自定义函数来实现。 18.编程实现:从键盘输入10名学生的信息,包括学号、姓名、成绩,用一个排序函数sort 完成学生成绩降序排列,并输出学生排序后的结果。 19.编程实现:任意输入一组不多于20个的升序排列的若干个整数,任意输入不多于10个的整数(-1作为输入结束标志),将其插入到该序列中,使其依然有序。要求:通过自定义函数实现将一个整数插入到一个有序序列中,使其依然有序。 20.一个班级有30个学生,每个学生有学号、姓名及数学、语文、计算机成绩、平均成绩。要求编程实现以下功能: 1)从键盘上输入30个学生的信息,平均成绩通过公式:平均成第二篇:C语言程序设计期末考试试题(含答案)
第三篇:自考Java语言程序设计(一)课后习题及答案
第四篇:C语言程序设计试题集及其答案
第五篇:C语言程序设计试题题库