内容导读:导航目录:1、Java编程常见面试题目,要求正确答案?2、一些编程习题3、200分找人用C语言编程10个题目4、200分找人做C语言编程11个题目5、数控编程试题及答案Java编程常见面试题目,要求正确答案...……
导航目录:
Java编程常见面试题目,要求正确答案?
之一,谈谈final, finally, finalize的区别。
final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或 *** 声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的 *** 也同样只能使用,不能重载finally?再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
finalize? *** 名。Java 技术允许使用 finalize() *** 在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个 *** 是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() *** 以整理系统资源或者执行其他清理工作。finalize() *** 是在垃圾收集器删除对象之前对这个对象调用的。
第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。
第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类更大的不同就在于是否有指向外部的引用上。具体可见http: //;page=1
注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象
第四,和的区别。
是位运算符。是布尔逻辑运算符。
第五,HashMap和Hashtable的区别。
都属于Map接口的类,实现了将惟一键映射到特定的值上。
HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。
Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。
第六,Collection 和 Collections的区别。
Collections是个java.util下的类,它包含有各种有关 *** 操作的静态 *** 。
Collection是个java.util下的接口,它是各种 *** 结构的父接口。
第七,什么时候用assert。
断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为 false,那么系统会报告一个 AssertionError。它用于调试目的:
assert(a 0); // throws an AssertionError if a = 0
断言可以有两种形式:
assert Expression1 ;
assert Expression1 : Expression2 ;
Expression1 应该总是产生一个布尔值。
Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。
断言在默认情况下是禁用的。要在编译时启用断言,需要使用 source 1.4 标记:
Javac -source 1.4 Test.java
要在运行时启用断言,可使用 -enableassertions 或者 -ea 标记。
要在运行时选择禁用断言,可使用 -da 或者 -disableassertions 标记。
要系统类中启用断言,可使用 -esa 或者 -dsa 标记。还可以在包的基础上启用或者禁用断言。
可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有 *** 的参数。不过,断言不应该用于验证传递给公有 *** 的参数,因为不管是否启用了断言,公有 *** 都必须检查其参数。不过,既可以在公有 *** 中,也可以在非公有 *** 中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。
第八,GC是什么? 为什么要有GC? (基础)。
GC是垃圾收集器。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的 *** 之一:
System.gc()
Runtime.getRuntime().gc()
第九,String s = new String("xyz");创建了几个String Object?
两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;
第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。
第十二,sleep() 和 wait() 有什么区别? 搞线程的更爱
sleep() *** 是使线程停止一段时间的 *** 。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级,(b)正在运行的线程因为其它原因而阻塞。
wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
第十三,Java有没有goto?
Goto?java中的保留字,现在没有在java中使用。
第十四,数组有没有length()这个 *** ? String有没有length()这个 *** ?
数组没有length()这个 *** ,有length的属性。
String有有length()这个 *** 。
第十五,Overload和Override的区别。Overloaded的 *** 是否可以改变返回值的类型?
*** 的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某 *** 与其父类有相同的名称和参数,我们说该 *** 被重写 (Overriding)。子类的对象使用这个 *** 时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的 *** ,它们或有不同的参数个数或有不同的参数类型,则称为 *** 的重载(Overloading)。Overloaded的 *** 是可以改变返回值的类型。
第十六,Set里的元素是不能重复的,那么用什么 *** 来区分重复与否呢? 是用==还是equals()? 它们有何区别?
Set里的元素是不能重复的,那么用iterator() *** 来区分重复与否。equals()是判读两个Set是否相等。
equals()和== *** 决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。
第十七,给我一个你最常见到的runtime exception。
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException,
ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException
第十八,error和exception有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
第十九,List, Set, Map是否继承自Collection接口?
List,Set是
Map不是。
第二十,abstract class和interface有什么区别?
声明 *** 的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明 *** ,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态 *** 。Abstract 类的子类为它们父类中的所有抽象 *** 提供实现,否则它们也是抽象类为。取而代之,在子类中实现该 *** 。知道其行为的其它类可以在类中实现这些 *** 。
接口(interface)是抽象类的变体。在接口中,所有 *** 都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有 *** 都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的 *** 。然后,它可以在实现了该接口的类的任何对象上调用接口的 *** 。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
都不能
第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
第二十三,启动一个线程是用run()还是start()?
启动一个线程是调用start() *** ,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run() *** 可以产生必须退出的标志来停止一个线程。
第二十四,构造器Constructor是否可被override?
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。
第二十五,是否可以继承String类?
String类是final类故不可以继承。
第二十六,当一个线程进入一个对象的一个synchronized *** 后,其它线程是否可进入此对象的其它 *** ?
不能,一个对象的一个synchronized *** 只能由一个线程访问。
第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
会执行,在return前执行。
第二十八,编程题: 用最有效率的 *** 算出2乘以8等於几?
有C背景的程序员特别喜欢问这种问题。
2 3
第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
不对,有相同的hash code。
第三十,当一个对象被当作参数传递到一个 *** 后,此 *** 可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到 *** 中时,参数的值就是对该对象的引用。对象的内容可以在被调用的 *** 中改变,但对象的引用是永远不会改变的。
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。
第三十二,编程题: 写一个Singleton出来。
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
一般Singleton模式通常有几种种形式:
之一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance *** 获取对它的引用,继而调用其中的 *** 。
public class Singleton {
private Singleton(){}
//在自己内部定义自己一个实例,是不是很奇怪?
//注意这是private 只供内部调用
private static Singleton instance = new Singleton();
//这里提供了一个供外部访问本class的静态 *** ,可以直接访问
public static Singleton getInstance() {
return instance;
}
}
第二种形式:
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//这个 *** 比上面有所改进,不用每次都进行生成对象,只是之一次
//使用时生成实例,提高了效率!
if (instance==null)
instance=new Singleton();
return instance; }
}
其他形式:
定义一个类,它的构造函数为private的,所有 *** 为static的。
一般认为之一种形式要更加安全些
第三十三 Hashtable和HashMap
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许
还有就是,HashMap把Hashtable的contains *** 去掉了,改成containsvalue和containsKey。因为contains *** 容易让人引起误解。
更大的不同是,Hashtable的 *** 是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的 *** 实现同步,而HashMap就必须为之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。
一些编程习题
1.标识符的定义。
4ab{开头不能用数字}
end{系统保留字}
b(3){含有括号}
m+n{含有加号}
class{系统保留字}
2.数据类型。
101{整型}
10.32{实型}
1.67E+8{实型}
8.3E+0.6{非法}
0.7E3{非法}
345600{整型}
0.075E-32{实型}
234.001E+12{实型}
3.常量定义。
Ch:’name’{冒号改等号}
-x=31{负号}
N=m+12{m}
Y=8-x{x}
4.变量说明。
(1)VAR
A,b,c:integer;
Bookname,b,y:char;
X,y:real;
{错!b重复定义}
(2) VAR
X1,x2,x3:integer;
A,b,tel:character;
M;n:bool;
{正确}
5.表达式的值。
(1)13*6*8 div 3 {0}
(2)5/4*2.5/1.25*(4+6) {25}
(3)24 div 4*sar(6.0)/3.6 {???sar是什么???}
(4)28 div 4 mod 3*trunk(3.674) {0}
(5)12 mod 5*ord(succ(‘N’))div 3-ord(True) {1}
(6)98 div 12/ord(pred(‘F’))*Trunc(2.45+3.6*4)*round(23.56*3-6.75) {29.681159420289855072463768115942}
(7)2312 {ture}
(8)(‘A’’B’)Or(Succ(‘E’)=’F’) {ture}
(9)Pred(True)=False {ture}
(10)Succ(5)=5 {ture}
6.代数式改写表达式。
(1)(x+y)(x-y) {(x+y)*(x-y)}
(2)Log10(m+4*n) {ln(10*(m+4*n))/ln(10)}
(3) b2-4ac {b*2-4*a*c}
(4)a3b+ab3 {a*3*b+a*b*3}
(5) 5sin(x)-3cos(y) {5*sin(x)-3*cos(y)}
老大,终于打完了!不看功劳看苦劳,来两分吧!
还有,学习要努力,不要动不动问人,自己的汗水最珍贵!
200分找人用C语言编程 10个题目
// 2.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
1./*编写程序,求四位数的偶数中,所有各位数字之和是15的倍数的数的和。*/
#include "stdio.h"
int main(void)
{
int i,Sum=0;
for(i=1000;i9999;i+=2)
{
if((i/1000+((i/100)%10)+((i/10)%10)+(i%10))%15==0)
{
#ifdef _DEBUG
printf("%d\t",i);
#endif
Sum+=i;
}
}
printf("四位数的偶数中,所有各位数字之和是15的倍数的数的和为%d",Sum);
return 0;
}
2./*已知AB, A和B均为正整数,且A*B=716699,求A+B的最小值。*/
#include "stdio.h"
/*因为716699是奇数所以A和B都是奇数;
A和B是成对出现的,只考虑A的话只要判断A小于716699的平方根的情况就可以了716699开平方的值为847*/
int main(void)
{
int i,Min=1+716699;//以之一个符合条件的值来初始化
for(i=1;i847;i+=2)
{
if(716699%i==0)
{
#ifdef _DEBUG
printf("%d*%d\t",i,716699/i);
#endif
if(i+(716699/i)Min) Min=i+(716699/i);
}
}
printf("A+B的最小值为%d",Min);
return 0;
}
3./*编写程序,求在四位数的奇数中,所有各位数字之和是25的倍数的数的和。*/
#include "stdio.h"
int main(void)
{
int i,Sum=0;
for(i=1001;i=9999;i+=2)
{
if((i/1000+((i/100)%10)+((i/10)%10)+(i%10))%25==0)
{
#ifdef _DEBUG
printf("%d\t",i);
#endif
Sum+=i;
}
}
printf("四位数的奇数中,所有各位数字之和是25的倍数的数的和为%d",Sum);
return 0;
}
4./*一个数如果刚好与它所有的因子之和相等,则称该数为一个"完数",如:6=1+2+3,则6就是一个完数。求出1000以内的完数的个数。*/
#include "stdio.h"
int main(void)
{
int i,j,Value,Sum=0;
for(i=1;i=1000;i++)
{
Value=0;
for(j=1;ji;j++)
{
if(i%j==0) Value+=j;
}
if(Value==i)
{
#ifdef _DEBUG
printf("%d\t",i);
#endif
Sum++;
}
}
printf("1000以内的完数的个数为%d",Sum);
return 0;
}
5./*已知f(0)=f(1)=1,f(2)=0,f(n)=f(n-1)-2*f(n-2)+f(n-3) (n2),求f(0)到f(50)中的更大值。*/
#include "stdio.h"
int f(int n)
{
if(n2) return 1;
else if(n==2) return 0;
else return f(n-1)-2*f(n-2)+f(n-3);
}
int main(void)
{
int i,Value,Max=0;
for(i=0;i=50;i++)
{
Value=f(i);
#ifdef _DEBUG
printf("%d\t",i);
#endif
if(ValueMax)
{
Max=Value;
}
}
printf("f(0)到f(50)中的更大值为%d",Max);
return 0;
}
6./*一个数如果刚好与小于它的所有因子之和相等,则称该数为一个“完数”,如:6=1+2+3,则6就是一个完数。求出400以内的所有完数之和。*/
#include "stdio.h"
int main(void)
{
int i,j,Value,Sum=0;
for(i=1;i=400;i++)
{
Value=0;
for(j=1;ji;j++)
{
if(i%j==0) Value+=j;
}
if(Value==i)
{
#ifdef _DEBUG
printf("%d\t",i);
#endif
Sum+=i;
}
}
printf("400以内的完数的和为%d",Sum);
return 0;
}
7./*斐波那契数列的前二项是1,1,以后每一项都是前面两项之和。求前30个斐波那契数之和。*/
#include "stdio.h"
int main(void)
{
int i,Data1=1,Data2=1,Sum=0,Temp;
Sum+=Data1+Data2;
for(i=2;i30;i++)
{
Temp=Data2;
Data2+=Data1;
Data1=Temp;
Sum+=Data2;
}
printf("前30个斐波那契数之和为%d",Sum);
return 0;
}
8./*某些分数的分子和分母都是二位正整数的真分数具有下列特点:如果将该分数的分子的两位数字相加作分子,而将该分数的分母的两位数字相加作分母,得到的新分子跟原分子相等。例如,63/84=(6+3)/(8+4)。试求所有具有这种特点的真分子(非约简真分数)的分子与分母之和的和。*/
#include "stdio.h"
int main(void)
{
int i,j,Sum=0;
for(i=10;i100;i++)
{
for(j=10;ji;j++)
{
if(j*1.0/i==((j/10)+(j%10))*1.0/((i/10)+(i%10)))
{
#ifdef _DEBUG
printf("%d/%d\t",j,i);
#endif
Sum+=i+j;
}
}
}
printf("所有具有题设特点的真分子的分子与分母之和的和为%d",Sum);
return 0;
}
10./*编写程序,求出100到500之间同时满足除5余4和除7余2条件的数的个数。*/
#include "stdio.h"
int main(void)
{
int i,Sum=0;
for(i=100;i500;i++)
{
if(i%5==4 i%7==2)
{
#ifdef _DEBUG
printf("%d\t",i);
#endif
Sum++;
}
}
printf("100到500之间同时满足除5余4和除7余2条件的数的个数为%d",Sum);
return 0;
}
11./*[300,800]范围内同时满足以下两个条件的十进制数.⑴其个位数字与十位数字之和除以10所得的余数是百位数字 ;⑵该数是素数;求满足上述条件的更大的三位十进制数 */
#include "stdio.h"
int IsPrime(int n)
{
int i;
for(i=3;in/2+1;i+=2)
{
if(n%i==0) return 0;
}
return 1;
}
int main(void)
{
int i,Max=0;
for(i=301;i=800;i+=2)
{
if(((((i/10)%10)+(i%10))%10)==i/100 IsPrime(i))
{
#ifdef _DEBUG
printf("%d\t",i);
#endif
if(iMax) Max=i;
}
}
printf("300到800之间满足上述条件的更大的三位十进制数为%d",Max);
return 0;
}
200分找人做C语言编程 11个题目
你自己调试吧。
#ifdef _DEBUG
printf("%d\t",i);
#endif
类似这样的代码,是调试时输出中间值用的,你可以当它不存在
29./*已知 f(n)=f(n-1)+2f(n-2)-5f(n-3),f(0)=1,f(1)=2,f(2)=3,求f(0)+f(1)+…f(30)。*/
#include "stdio.h"
int f(int n)
{
switch(n)
{
case 0:
return 1;
case 1:
return 2;
case 2:
return 3;
default:
return f(n-1)+2*f(n-2)-5*f(n-3);
}
return 0;
}
int main(void)
{
int i,Sum=0;
for(i=0;i30;i++) Sum+=f(i);
printf("f(0)+f(1)+...+f(30)=%d",Sum);
return 0;
}
30./*已知S1=2, S2=2+4, S3=2+4+6, S4=2+4+6+8,S5=2+4+6+8+10,…,求S=S1+S2+S3+S4 +S5+…+S20的值。*/
#include "stdio.h"
int main(void)
{
int i,Data=0,Sum=0;
for(i=1;i21;i++)
{
Data+=i*2;
Sum+=Data;
}
printf("S1+S2+...+S20=%d",Sum);
return 0;
}
31./*求出以下分数序列的前35之和,2/1,3/2,5/3,8/5,13/8,21/13,......给出程序结果(保留6位小数)。*/
#include "stdio.h"
int main(void)
{
int i;
double Sum=0.0,Data1=1.0,Data2=2.0,Temp;
for(i=0;i35;i++)
{
Sum+=Data2/Data1;
Temp=Data2;
Data2+=Data1;
Data1=Temp;
}
printf("2/1+3/2+5/3+8/5+13/8+21/13...=%0.6lf",Sum);
return 0;
}
32./*计算A15值。A1=1, A2=1/(1+A1), A3=1/(1+A2), A4=1/(1+A3), ......(保留10位小数)。*/
#include "stdio.h"
int main(void)
{
int i;
double Data1=1.0;
for(i=0;i15;i++)
{
Data1=1.0/(Data1+1.0);
}
printf("A15=%0.10lf",Data1);
return 0;
}
33./*求[1,800]之间能被3和8整除的数的个数。*/
#include "stdio.h"
int main(void)
{
int i,Sum=0;
for(i=1;i=800;i++)
{
if(i%8==0 i%3==0)
{
#ifdef _DEBUG
printf("%d\t",i);
#endif
Sum++;
}
}
printf("[1,800]之间能被3和8整除的数的个数为",Sum);
return 0;
}
34./*求[2000,20000]之间同时满足除以7余5,除以5余3,除以3余1的整数的个数。*/
#include "stdio.h"
int main(void)
{
int i,Sum=0;
for(i=2000;i=20000;i++)
{
if(i%7==5 i%5==3 i%3==1)
{
#ifdef _DEBUG
printf("%d\t",i);
#endif
Sum++;
}
}
printf("[2000,20000]之间同时满足除以7余5,除以5余3,除以3余1的整数的个数为",Sum);
return 0;
}
28./*[100,999]范围内同时满足以下两个条件的十进制数: ⑴其个位数字与十位数字之和除以10所得的余数是百位数字;⑵该数是素数; 求有多少个这样的数? */
#include "stdio.h"
int IsPrime(int n)
{
int i=0;
for(i=3;in/2;i+=2)
{
if(n%i==0) return 0;
}
return 1;
}
int main(void)
{
int i,Sum=0;
for(i=101;i=999;i+=2)
{
if(((i%10)+((i/10)%10)==(i/100)) IsPrime(i))
{
#ifdef _DEBUG
printf("%d\t",i);
#endif
Sum++;
}
}
printf("[100,999]范围内同时满足以下两个条件的十进制数: ⑴其个位数字与十位数字之和除以10所得的余数是百位数字;⑵该数是素数; 有%d个",Sum);
return 0;
}
29./*猴吃桃:有一天小猴子摘下了若干个桃子,当即吃掉一半,还觉得不过瘾,又多吃了一个。第二天接着吃了剩下的桃子中的一半,仍不过瘾,又多吃了一个。以后每天都是吃尚存桃子的一半零一个。到第10天早上小猴子再去吃桃子时,看到只剩下一个桃子了。问小猴子之一天共摘下了多少个桃子。*/
#include "stdio.h"
int main(void)
{
int i,Sum=1;
for(i=9;i=1;i--)
{
Sum=(Sum+1)*2;
}
printf("The number of peach is %d in the first day",Sum);
return 0;
}
30./*数列E(1)=E(2)=1,E(n)=(n-1)*E(n-1)+(n-2)*E(n-2) (n2) 称为E数列,每一个E(n),(n=1,2,…)称为E数。求不超过30000的更大E数的值(注: 是求E30000的更大E数值)。*/
#include "stdio.h"
int E(int n)
{
if(n=2) return 1;
else return E(n-1)*(n-1)+(n-2)*E(n-2);
}
int main(void)
{
int i=1,LastE=0,CurrentE=0;
do
{
i++;
LastE=CurrentE;
CurrentE=E(i);
}while(CurrentE30000);
printf("The number of the Max. E that lass than 30000 is %d.",LastE);
return 0;
}
31./*求7到2156之间的所有奇数的平方和。(保留整数位)*/
#include "stdio.h"
int main(void)
{
int i,Sum=0;
for(i=7;i2156;i+=2)
{
Sum+=i*i;
}
printf("7到2156之间的所有奇数的平方和为%d.",Sum);
return 0;
}
32./*求出将十进制整数98765432等值转换为二进制形式表示后其中数字1的个数。(提示:模拟人工计算的“2除取余”法*/
#include "stdio.h"
int main(void)
{
int Data=98765432,Sum=0;
while(Data0)
{
if(Data%2) Sum++;
Data/=2;
}
printf("98765432表示为二进制后其中数字1的个数为%d.",Sum);
return 0;
}
或者
#include "stdio.h"
int main(void)
{
int Data=98765432,Sum=0;
while(Data0)
{
if(Data0x01) Sum++;
Data=1;
}
printf("98765432表示为二进制后其中数字1的个数为%d.",Sum);
return 0;
}
数控编程试题及答案
数控加工工艺与编程考试题(6)
注 意 事 项
1. 请首先按要求在试卷的标封处填写您的姓名、考号和所在单位的名称。
2. 请仔细阅读各种题目的回答要求,在规定的位置填写您的答案。
3. 不要在试卷上乱写乱画,不要在标封区填写无关内容。
一、判断题(第1~20题。将判断结果填入括号中。正确的填“√”,错误的填“×”。每题1.0分。满分10分)
( )1、高速钢车刀的韧性虽然比硬质合金高,但不能用于高速切削。
( )2、硬质合金是一种耐磨性好,耐热性高,抗弯强度和冲击韧性多较高的一种刀具材料。
( )3、在工具磨床上刃磨刀尖能保证切削部分具有正确的几何角度和尺寸精度及较小的表面粗糙度。
( )4、程序编制的一般过程是确定工艺路线、计算刀具轨迹的坐标值、编写加工程序、程序输入数控系统、程序检验。
( )5、切削用量包括进给量、背吃刀量和工件转速。
( )6、铸件的壁厚相差太大,毛坯内部产生的内应力也越大,应当先采用时效处理的 *** 来加以消除,然后再进行切削加工。
( )7、难加工材料主要是指切削加工性差的材料,不一定简单地从力学性能上来区分。在难加工材料中,有硬度高的,也有硬度低的。
( )8、数控机床伺服系统将数控装置的脉冲信号转换成机床移动部件的运动。
( )9、G00指令中可以不加“F”也能进行快速定位。
( )10、闭环系统比开环系统具有更高的稳定性。
( )11、三角带传递功率的能力,A型带最小,O型更大。
( )12、只要将交流电通入三相异步电动机定子绕组,就能产生旋转磁场。
( )13、尺寸链封闭环的基本尺寸,是其它各组成环基本尺寸的代数差。
( )14、步进电机在输入一个脉冲时所转过的角度称为步距角。
( )15、数控机床所加工的轮廓,与所采用程序有关,而与所选用的刀具无关。
( )16、基准不重合和基准位置变动的误差,会造成定位误差。
( )17、数控机床的插补过程,实际上是用微小的直线段来通近曲线的过程。
( )18、数控机床加工的加工精度比普通机床高,是因为数控机床的传动链较普通机床的传动链长。
( )19、程序 N100 G01 X100 Z80; N110 G01 X90 Z60;
可以用 N100 G01 X100 Z80; N110 X90 Z60 代替。
( )20、G00, G01指令的运动轨迹路线相同,只是设计速度不同。
二、选择题(第21~60 题。选择正确的答案,将相应的字母填入题内的括号中。每题1.0分。满分40分):
21、8255芯片是_____。
A、可编程并行接口芯片; B、不可编程并行接口芯片;
C、可编程串行接口芯片; D、可编程定时接口芯片。
22、在机床上,为实现对鼠笼式感应电动机的连续速度调节,常采用_____。
A、转子回路中串电阻法:B、改变电源频率法:
C、调节定子电压法; D、改变定于绕组极对数法。
23、数字积分插补法的插补误差_____。
A、总是小于1个脉冲当量; B、总是等于1个脉冲当量;
C、总是大于1个脉冲当星; D、有时可能大于1个脉冲当量。
24、设计夹具时,定位元件的公差应不大于工件的公差的______。
A、主要定位基准面;B、加工表面; C、未加工表面; D、已加工表面。
25、为避免齿轮发生根切现象,齿数Z≥_____。
A、20; B、17; C、15; D、21。
26、步进电机在转速突变时,若没有一个加速或减速过程,会导致电机_____。
A、发热; B、不稳定; C、丢步; D、失控。
27、位置检测元件是位置控制闭环系统的重要组成部分,是保证数控机床_____的关键。
A、精度; B、稳定性; C、效率; D、速度。
28、切削时,切屑流向工件的待加工表面,此时刀尖强度较_________。
A、好; B、差; C、一般; D、波动。
29、准备功能G90表示的功能是_____。
A、预备功能; B、固定循环; C、绝对尺寸; D、增量尺寸。
30、程序编制中首件试切的作用是_____。
A、检验零件图设计的正确性; B、检验零件工艺方案的正确性;
C、检验程序单的正确性,综合检验所加工的零件是否符合图纸要求;
D、仅检验程序单的正确性。
31、高速钢刀具切削温度超过550~600℃时,刀具材料会发生金相变化,使刀具迅速磨损,这种现象称为____。
A、扩散; B、相变; C、氧化; D、粘接。
32、闭环进给伺服系统与半闭环进给伺服系统主要区别在于_____。
A、位置控制器; B、检测单元; C、伺服单元; D、控制对象。
33、当刀具前角增大时,切屑容易从前刀面流出切削变形小,因此_____。
A、切削力增大; B切削力减小; C、切削力不变; D、切削力波动。
34、粗铣时选择切削用量应先选择较大的_____,这样才能提高效率。
A、F; B、ap;; C、V; D、F和V 。
35、编程中设定定位速度F1=5000mm/min,切削速度F2=100mm/min ,如果参数键中设置进给速度倍率为80%,则应选__。
A、F1=4000,F2=80; B、F1=5000,F2=100;
C、F1=5000,F2=80; D、以上都不对。
36、位置检测元件是位置控制闭环系统的重要组成部分,是保证数控机床_____的关键。
A、精度; B、稳定性; C、效率; D、速度。
37、为了降低加残留面积高度,以便减小表面粗糙度值,_______对其影响更大。
A、主偏角; B、副偏角; C、前角; D、后角。
38、数控加工夹具有较高的_____精度。
A、粗糙度; B、尺寸; C、定位; D、以上都不是。
39、半闭环系统的反馈装置一般装在____。
A、导轨上; B、伺服电机上; C、工作台上; D、刀架上。
40、为提高CNC系统的可靠性,可采用____。
A、单片机; B、双CPU; C、提高时钟频率; D、光电隔离电路。
41、切削用量对刀具寿命的影响,主要是通过对切削温度的高低来影响的,所以影响刀具寿命更大的是_______。
A、背吃刀量; B、进给量; C、切削速度; D、以上三方面。
42、刀具磨纯标准通常都按________的磨损值来制订。
A、月牙洼深度; B、前面; C、后面; D、刀尖。
43、当交流伺服电机正在旋转时,如果控制信号消失,则电机将会__A__。
A、立即停止转动; B、以原转速继续转动;
C、转速逐渐加大; D、转速逐渐减小。
44、粗加工时,切削液以_______为主。
A、煤油; B、切削油; C、乳化液; D、柴油。
45、镗孔的关键技术是刀具的刚性、冷却和_______问题。
A、振动; B、质量; C、排屑; D、刀具。
46、刀具切削过程中产生积屑瘤后,刀具的实际前角_____。
A、增大; B、减小; C、一样; D、以上都不是。
47、适应控制机床是一种能随着加工过程中切削条件的变化,自动地调整_____实现加工过程更优化的自动控制机床。
A、主轴转速; B、切削用量; C、切削过程; D、进给用量。
48、车削钢材的刀具材料,应选择_____硬质合金。
A、YG3; B、YG8; C、YT15; D、YG5。
49、毛坯制造时,如果_______,应尽量利用精密铸造、精锻、冷挤压等新工艺,使切削余量大大减少,从而可缩短加工的机动时间。
A、属于维修件; B、批量较大; C、在研制阶段; D、要加工样品。
50、应用刀具半径补偿功能时,如刀补值设置为负值,则刀具轨迹是_____。
A、左补; B、右补; C、不能补偿; D、左补变右补,右补变左补。
51、一般划线精度只能达到______mm。
A、0.05~0.1; B、0.1~0.2; C、0.25~0.5; D、0.5~1.0 。
52、制造较高精度、切削刃形状复杂并用于切削钢材的刀具其材料选用_______。
A、碳素合金; B、高速工具钢; C、硬质合金; D、立方氮化硼。
53、在M20×2-7g6g-40中,7g表示________公差带代号,6g表示大径公差带代号。
A、大径; B、小径; C、中径; D、多线螺纹。
54、G04在数控系统中代表________。
A、车螺纹; B、暂停; C、快速移动外; D、外圆循环。
55、通常CNC系统将零件加工程序输入后,存放在_____。
A、RAM中; B、ROM中; C、PROM中; D、EPROM中。
56、在开环系统中,影响丝杠副重复定位精度的因素有_____。
A、接触变形; B、热变形; C、配合间隙; D、共振。
57、已加工表面产生加工硬化后,硬化层的硬度比工件硬度______。
A、低; B、高; C、一样; D、以上都不是。
58、相对编程是指________。
A、相对于加工起点位置进行编程;
B、相对于下一点的位置编程;
C、相对于当前位置进行编程;
D、以方向正负进行编程。
59、数控系统中,那一组字段(地址)在加工过程中是模态的____。
A、G01 F ; B、G27 G28; C、G04; D、M02。
60、所谓联机诊断,是指数控计算机中的____。
A、远程诊断能力; B、自诊断能力; C、脱机诊断能力;
D、通信诊断能力。
三、简答题(第61~64 题,每小题7分,满分28分)
61、数控加工的基本原理是什么?
62、简述特种加工的主要优点。
63、CAD主要应用在设计中的哪几方面?
64、为了消除振动干扰的影响,保证数控加工对振动环境的要求,可采取那些具体措施?
四、分析题(12分)
65、某数控机床采用滚动导轨,由伺服电机通过一对齿轮带动滚珠丝杠驱动工作台移动,其脉冲当量为0.005mm,现CNC系统发出正向指令脉冲,工作台移动了100mm后,电动机又接到同样数量的反向指令脉冲,而工作台反向只移动了99.975mm,未能复位到原点。试分析该系统存在什么问题?应采取什么措施解决该问题,提高定位精度?
标 准 答 案 与 评 分 标 准
一、判断题(共20分,每小题1分)
评分标准: 各小题答对给1.0分;答错或漏答不给分,也不扣分。
1、√; 2、×; 3、√; 4、√;5、×;6、√;7、×; 8、√; 9、√;
10、×;11、×;12、×;13、×;14、√;15、×;16、√;17、√;18、×;19、√;20、×。
二、选择题:(将正确答案的代号填入空格内,共40分,每小题1分)
评分标准: 各小题答对给1.0分;答错或漏答不给分,也不扣分。
21、A;22、B;23、D;24、B;25、B;26、C;27、A;28、B;29、C;30、C;
31、B;32、B;33、B;34、B;35、C;36、A;37、B;38、C;39、B;40、D;
41、C;42、C;43、A;44、C;45、C;46、A;47、B;48、C;49、B;50、D;
51、C;52、B;53、C;54、B;55、A;56、A;57、B;58、C;59、A;60、B。
三、简答题(共40分,每小题8分)
评分标准: 各小题答对给8分;答错或漏答,根据标准答案内容判分。
61、答:数控加工的基本原理是把生产工(零)件的刀具和工件的合成运动分解为机床运动坐标的运动分量,由数控程序控制,自动实现刀具/工件的相对运动,按规定的加工顺序完成工(零)件的加工。
62、答:
① 加工范围不受材料物理力学性能的限制;
② 加工质量易控制;
③ 可以进行高精度细微加工了;
④ 可进行无污染的纯洁材料加工;
⑤ 能形成新加工技术系统工程。
63、答:
① 几何建模;
② 工程分析;
③ 设计审查与评价;
④ 自动绘图;
64、答:
① 对内部的振源采取相应的消振措施,如运动件的动平衡调整、设备的位置布局调整等;
②对内部的振源采取相应的隔振措施,如在设备与安装地坪间设置空气弹簧隔振、橡胶隔振器。
四、分析题(12分)
评分标准:根据标准答案内容判分。
65、答:
⑴ 该系统的问题是:
① 传动元件(齿轮间、丝杠螺母间)有间隙;
② 传动元件有弹性变形,如丝杠刚度不足。
⑵ 解决措施为:
① 齿轮采取消隙措施并预紧滚珠丝杠,减小反向死区;
② 加大滚珠丝杠直径,减小弹性变形;
③ 通过软件补偿误差的 *** 消除或减小误差。