詳細解答:
一、選擇題
1、BD C語言要經過編譯成二進制代碼,再經過連接形成.exe可執行文件。
2、D 3種遍歷方式的互推。
3、D 私有成員只能本類訪問
4、CD 索引不是越多越好,尤其是組合索引。
5、B 主要看SQL語句where后是否為ture。
6、B abcd直接過得A;依次全入棧再出棧得C;a入棧,bcd直接過,a出棧得D。
7、DA 值調用表示方法接收的是調用者提供的值,不改變實參;引用調用表示方法接收的是調用者提供的變量的地址,改變實參。
8、D 因為D最抽象,C是錯的,還有鏈式、樹等。
9、C 1000|0001=1001>>1=0100=4。
10、CD d表示目錄,w是寫,r是讀,x是執行,沒3個一組,分別是所有着、用戶組或其他用戶,即用戶組為r-x,擁有讀和執行權限。
二、Java語言部分
1、B
2、C
3、AB A申明了字符串,B字符多了,CD正常,可以用中文和Unicode編碼申明。
4、AC (-5)%2=-1,B錯;D超過int范圍。
5、C 常考題,http://www.cnblogs.com/dingshilei/p/4107583.html的23題解析。
三、數據庫
1、select distinct S.Sname from S,C,SC where SC.Sno=S.Sno and SC.Cno=C.Cno and C.Cname="數據庫" order by S.Sname DESC;
2、select distinct SC.Sno,C.Ccredit from SC,C where C.Ccredit >80 and SC.Grade>60;
3、alter table SC add Teacher varchar(20) not null;
4、create view SCSum as select Sno,sum(Grade) from SC group by Sno ;
5、delect from SC where Sno not in(select Sno from S);
四、編程題
注意要判斷是否為閏年,閏年的2月份要多加一天。
#include <stdio.h> struct date { int year; int month; int day; }; int leap_year(int a); int cal_day(struct date a); /*判斷閏年*/ int leap_year(int a) { if(a%400==0||(a%4==0&&a%100!=0)) return 1; else return 0; } /*計算一年中的第幾天*/ int cal_day(struct date a) { int sum=0,b[]={31,28,31,30,31,30,31,31,30,31,30,31} ; for(int i=0;i<a.month-1;i++) sum+=b[i]; if(a.month>2) sum=sum+a.day+leap_year(a.year); else sum=sum+a.day; return sum; } void main() { struct date a; int n; printf("\n請輸入日期(年 月 日)\n"); scanf("%d%d%d",&a.year,&a.month,&a.day); n=cal_day(a); printf("該日在本年中是第%d天\n",n); }
五、算法題
1、基本思路就是判斷合數的因子是否為素數,然后for循環迭代完成。
import java.util.Scanner; public class Try { static boolean is_odd(int n) //判斷是否為素數 { if(n==2||n==3) return true; if(n%2==0) return false; int i; for(i=3;i<=n/2;i+=2) if(n%i==0) return false; return true; } public static void main(String[] args) { Scanner in=new Scanner(System.in); System.out.println("輸入數值"); int n=in.nextInt(); int i; System.out.print(n+"="); for(i=2;i<=n;i++) { if(!is_odd(i)) continue; if(n%i==0) { while(true) { System.out.print(i); n/=i; if(n!=1) System.out.print("*"); if(n%i!=0) break; } } } System.out.println(); } }
還可以用遞歸的方法來實現http://blog.csdn.net/YidingHe/article/details/3952651
import java.util.List; import java.util.ArrayList; /** * 分解質因數 */ public class GetFactor { public static void main(String[] args) { List<Long> factors = getFactors(5555566666L, 2); System.out.println(factors); } /** * 通過遞歸實現分解質因數 * * @param n 要分解的數字 * @param factor 起始因子 * * @return 分解結果 */ private static List<Long> getFactors(long n, long factor) { // 不斷增大 factor 直到能整除 n while (n % factor != 0 && factor < n) { // 得到 2,3,5,7,9,11,13,... factor = factor < 2 ? 2 : factor == 2 ? 3 : factor + 2; } List<Long> result; if (factor >= n) { // 因子已經漲到和 n 一樣大,說明 n 本身就是因子。這時遞歸完成。 result = new ArrayList<Long>(); } else { // 因子能夠整除 n,於是繼續分解除以因子后的結果 result = getFactors(n / factor, factor); // 向下遞歸 } result.add(factor); return result; } }