一、選擇題(每小題1分,共40分)
(1)下列敘述中,正確的是
A)線性表的鏈式存盤結構與順序存盤結構所需要的存盤空間是相同的
B)線性表的鏈式存盤結構所需要的存盤空間一般要多于順序存盤結構
C)線性表的鏈式存盤結構所需要的存盤空間一般要少于順序存盤結構
D)上述三種說法都不對
(2)下列敘述中正確的是
A)在堆疊中,堆疊中元素隨堆疊底指標與堆疊頂指標的變化而動態變化
B)在堆疊中,堆疊頂指標不變,堆疊中元素隨堆疊底指標的變化而動態變化
C)在堆疊中,堆疊底指標不變,堆疊中元素隨堆疊頂指標的變化而動態變化
D)上述三種說法都不對
(3)軟體測驗的目的是
A)評估軟體可靠性 B)發現并改正程式中的錯誤
C)改正程式中的錯誤 D)發現程式中的錯誤
(4)下面描述中,不屬于軟體危機表現的是
A)軟體程序不規范 B)軟體開發生產率低
C)軟體質量難以控制 D)軟體成本不斷提高
(5)軟體生命周期是指
A)軟體的開發程序
B)軟體的運行維護程序
C)軟體從需求分析、設計、實作到測驗完成的程序
D)軟體產品從提出、實作、使用維護到停止使用退役的程序
(6)面向物件方法中,繼承是指
A)一組物件所具有的相似性質 B)一個物件具有另一個物件的性質
C)各物件之間的共同性質 D)類之間共享屬性和操作的機制
(7)層次型、網狀型和關系型資料庫劃分原則是
A)記錄長度 B)檔案的大小
C)聯系的復雜程度 D)資料之間的聯系方式
(8)一個作業人員可以使用多臺計算機,而一臺計算機可被多個人使用,則物體作業人員與物體計算機之間的聯系是
A)一對一 B)一對多 C)多對多 D)多對一
(9)資料庫設計中反映用戶對資料要求的模式是
A)內模式 B)概念模式 C)外模式 D)設計模式
(10)有三個關系R、S和T如下:
則由關系R和S得到關系T的操作是
A)自然連接 B)交 C)投影 D)并
(11)下列關于結構化程式設計的敘述中,正確的是
A)一個結構化程式必須同時由順序、分支、回圈三種結構組成
B)結構化程式使用goto陳述句會很便捷
C)在C語言中,程式的模塊化是利用函式實作的
D)由三種基本結構構成的程式只能解決小規模的問題
(12)下列關于簡單程式設計的步驟和順序的說法中,正確的是
A)確定演算法后,整理并寫出檔案,最后進行編碼和上機除錯
B)首先確定資料結構,然后確定演算法,再編碼,并上機除錯,最后整理檔案
C)先編碼和上機除錯,在編碼程序中確定演算法和資料結構,最后整理檔案
D)先寫好檔案,再根據檔案進行編碼和上機除錯,最后確定演算法和資料結構
(13)下列敘述中,錯誤的是
A)C程式在運行程序中所有計算都以二進制方式進行
B)C程式在運行程序中所有計算都以十進制方式進行
C)所有C程式都需要編譯鏈接無誤后才能運行
D)C程式中整型變數只能存放整數,實型變數只能存放浮點數
(14)有以下定義:int a; long b; double x,y;則以下選項中正確的運算式是
A)a% (x-y) B)a=x!=y;
C)(a*y)%b D)y=x+y=x
(15)以下選項中能表示合法常量的是
A)O115 B)0118 C)-5e1.5 D)115L
(16)運算式a+=a-=a=9的值是
A)-9 B)0 C)9 D)18
(17)若變數已正確定義,在if (W) printf(”%d\n,k”);中,以下不可替代W的是
A)a<>b+c B)ch=getchar() C)a==b+c D)a++
(18)有以下程式
#include <stdio.h>
main()
{
int a=1,b=0;
if(!a) b++;
else if(a==0)
if(a)b+=2;
else b+=3;
printf(”%d\n”,b);
}
程式運行后的輸出結果是
A)0 B)1 C)2 D)3
(19)若有定義陳述句int a, b;double x;則下列選項中沒有錯誤的是
A)switch(x%2) B)switch((int)x/2.0)
{ case 0: a++; break; { case 0: a++; break;
case 1: b++; break; case 1: b++; break;
default : a++; b++; default : a++; b++;
} }
C)switch((int)x%2) D)switch((int)(x)%2)
{ case 0: a++; break; { case 0.0: a++; break;
case 1: b++; break; case 1.0: b++; break;
default : a++; b++; default : a++; b++;
} }
(20)有以下程式
#include <stdio.h>
main()
{
int a=1,b=2;
while(a<6){b+=a;a+=2;b%=10;}
printf(”%d,%d\n”,a,b);
}
程式運行后的輸出結果是
A)6,1 B)7,1 C)5,11 D)7,11
(21)有以下程式
#include <stdio.h>
main()
{
int y=10;
while(y--);
printf(”y=%d\n”,y);
}
程式執行后的輸出結果是
A)y= -1 B)y=0 C)y=9 D)10
(22)有以下程式
#include <stdio .h>
main()
{
char s[]=”abxyz”;
printf(”%c\n”,*s+2);
}
程式運行后的輸出結果是
A)a B)c C)x D)xyz
(23)有以下程式
#include <stdio.h>
#include <string.h>
main()
{
char x[]=”STRING”;
x[0]=’0’;x[1]=’\0’;x[2]=0;
printf(”%d %d\n”,sizeof(x),strlen(x));
}
程式運行后的輸出結果是
A)6 1 B)6 3 C)7 0 D)7 1
(24)有以下程式
#include <stdio.h>
int f(int x)
{ return x*2; }
main()
{
int n=1,m;
m=f(f(f(n)));
printf(”%d\n”,m);
}
程式運行后的輸出結果是
A)1 B)2 C)4 D)8
(25)以下程式段完全正確的是
A)int *p; scanf(”%d”,&p);
B)int *p; scanf(”%d”,p);
C)int k, *p=&k; scanf(”%d”,p);
D)int k, *p; *p= &k; scanf(”%d”,p);
(26)有定義陳述句:int *p[4]; 以下選項中與此陳述句等價的是
A)int p[4]; B)int **p; C)int *(p[4]); D)int (*p)[4];
(27)下列定義陣列的陳述句中,正確的是
A) int N=10; B)#define N 10
int x[N]; int x[N];
C) int x[0..10]; D)int x[];
(28)若要定義一個具有5個元素的整型陣列,以下錯誤的定義陳述句是
A)int a[5]=﹛0﹜; B)int b[]={0,0,0,0,0};
C)int c[2+3]; D)int i=5,d[i];
(29)有以下程式
#include <stdio.h>
void f(int *p)
{ p=p+3;printf(”%d,”,*p);}
main()
{
int a[5]={1,2,3,4,5},*r=a;
f(r);
printf(”%d\n”;*r);
}
程式運行后的輸出結果是
A)1,4 B) 3,1 C) 4,1 D) 4,4
(30)有以下程式
#include <stdio.h>
void fun(int *a,int n)
{
int i,j,k,t;
for (i=0;i<n-1;i+=2)
{
k=i;
for (j=i;j<n;j+=2)
if (a[j]>a[k]) k=j;
t=a[i]; a[i]=a[k]; a[k]=t;
}
}
void main()
{
int aa[10]={1,2,3,4,5,6,7},i;
fun(aa,7);
for (i=0;i<7; i++) printf("%d,",aa[i]);
printf("\n");
}
程式運行后的輸出結果是
A) 1,6,3,4,5,2,7 B) 1,7,3,5,6;2,1 C) 7,2,5,4,3,6,1 D) 7,6,5,4,3,2,1
(31)下列選項中,能夠滿足“若字串s1等于字串s2,則執行ST”要求的是
A)if(strcmp(s2,s1)==0) ST; B)if(sl==s2) ST;
C)if(strcpy(s l ,s2)==1) ST; D)if(sl-s2==0) ST;
(32)以下不能將s所指字串正確復制到t所指存盤空間的是
A)while (*t=*s){t++;s++;} B)for (i=0;t[i]=s[i];i++);
C)do{*t++=*s++;}while(*s); D)for (i=0,j=0;t[i++]=s[j++];);
(33)有以下程式( strcat函式用以連接兩個字串)
#include <stdio.h>
#include <string.h>
main()
{ char a[20]=“ABCD\0EFG\0”,b[]=”IJK”;
strcat(a,b); printf(”%s\n”,a);
}
程式運行后的輸出結果是
A) IJK B) EFGIJK
C) ABCDIJK D) ABCDE\0FG\0IJK
(34)有以下程式
#include <stdio.h>
void main()
{
int i,n[]={0,0,0,0,0};
for (i=1;i<=4;i++)
{
n[i]=n[i-1]*3+1;
printf("%d ",n[i]);
}
}
程式運行后的輸出結果是
A)0 0 0 0 B)1 4 7 10 C) 1 4 13 40 D)4 7 10 13
(35)有以下程式
#include <stdio.h>
void fun(int x)
{
if (x/2>1) fun(x/2);
printf("%d",x);
}
void main()
{
fun(7);
printf("\n");
}
程式運行后的輸出結果是
A)1 3 7 B) 3 7 C)7 3 D) 7 3 1
(36)有以下程式
#include <stdio.h>
int fun()
{ static int x=1;
x+=1;
return x;
}
main()
{ int i,s=1;
for (i=1;i<=5;i++) s+=fun();
printf(”%d\n”,s);
}
程式運行后的輸出結果是
A) 6 B) 11 C) 21 D)120
(37)有以下程式
#inctude <stdio.h>
#include <stdlib.h>
main()
{
int *a,*b,*c;
a=b=c=(int*)malloc(sizeof(int));
*a=1;*b=2,*c=3;
a=b;
printf(”%d,%d,%d\n”,*a,*b,*c);
}
程式運行后的輸出結果是
A) 1,1,3 B) 1,2,3 C) 2,2,3 D) 3,3,3
(38)有以下程式
#include <stdio.h>
main()
{
int s,t,A=10;double B=6;
s=sizeof(A); t=sizeof(B);
printf(”%d,%d\n”,s,t);
}
在Visual Studio 2010平臺上編譯運行,程式運行后的輸出結果是
A)2,4 B)4,4 C)4,8 D)10,6
(39)若有以下陳述句
typedef struct S
{int g; char h;}T;
以下敘述中正確的是
A)可用S定義結構體變數 B)可用T定義結構體變數
C)S是struct型別的變數 D)T是struct S型別的變數
(40)有以下程式
#include <stdio.h>
main()
{ short c=124;
c=c_______;
printf(”%d\n”,C);
}
若要使程式的運行結果為248,應在下劃線處填入的是
A)>>2 B)|248 C)&0248 D)<<1
二、程式填空題(18分)
程式通過定義學生結構體陣列,存盤若干名學生的學號、姓名和三門課的成績,函式fun的功能是:將存放學生資料的結構體陣列,按姓名的字典序(從小到大)排序,
請在下畫線處填入正確的內容并將下畫線洗掉,使程式得出正確的結果,
注意:部分源程式在檔案BLANK1.C中,不得增行或刪行,也不得更改程式的結構!
試題程式:
#include <stdio.h> #include <string.h> struct student { long sno; char name[10]; float score[3]; }; void fun(struct student a[], int n) { /**********found**********/ __1__ t; int i, j; /**********found**********/ for (i=0; i<__2__; i++) for (j=i+1; j<n; j++) /**********found**********/ if (strcmp(__3__) > 0) { t = a[i]; a[i] = a[j]; a[j] = t; } } main() { struct student s[4]={{10001,"ZhangSan", 95, 80, 88},{10002,"LiSi", 85, 70, 78}, {10003,"CaoKai", 75, 60, 88}, {10004,"FangFang", 90, 82, 87}}; int i, j; printf("The original data :\n"); for (j=0; j<4; j++) { printf("\nNo: %ld Name: %-8s Scores: ",s[j].sno, s[j].name); for (i=0; i<3; i++) printf("%6.2f ", s[j].score[i]); printf("\n"); } fun(s, 4); printf("The data after sorting : \n"); for (j=0; j<4; j++) { printf("\nNo: %ld Name: %-8s Scores: ",s[j].sno, s[j].name); for (i=0; i<3; i++) printf("%6.2f ", s[j].score[i]); printf("\n"); } }
三、程式修改題(18分)
下列給定程式中函式fun的功能是:根據以下公式求π值,并作為函式值回傳,
例如,當給指定精度的變數eps輸入0.0005時,應輸出Pi=3.140578,
π/2=1+1/3+1/3×2/5+1/3×2/5×3/7+1/3×2/5×3/7×4/9+······
請改正程式中的錯誤,使它能得出正確的結果,
注意:部分源程式在檔案MODI1.C中,不得增行或刪行,也不得更改的程式的結構!
試題程式:
#include <math.h> #include <stdio.h> double fun(double eps) { double s,t;int n=1; s=0.0; /************found************/ t=0; while( t>eps) { s+=t; t=t * n/(2*n+1); n++; } /************found************/ return(s); } main() { double x; printf("Please enter a precision: "); scanf("%lf",&x); printf("\neps=%lf, Pi=%lf \n",x,fun(x)); }
四、程式設計題
學生的記錄由學號和成績組成,N名學生的資料已放入主函式中的結構體陣列s中,請撰寫函式fun,其功能是:把指定分數范圍內的學生資料放在b所指的陣列中,分數范圍內的學生人數由函式值回傳,
例如,輸入的分數是60、69,則應當把分數在60~69的學生資料輸出,包含60分和69分的學生資料,主函式中把60放在low中,把69放在heigh中,
注意:部分源程式在檔案PROG1.C中,
請勿改動主函式main和其它函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
試題程式:
#include <stdio.h> #define N 16 typedef struct { char num[10]; int s; } STREC; int fun( STREC *a,STREC *b,int l, int h ) { } main() { STREC s[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85}, {"GA001",96},{"GA007",72},{"GA008",64},{"GA006",87}, {"GA015",85},{"GA013",94},{"GA012",64},{"GA014",91}, {"GA011",90},{"GA017",64},{"GA018",64},{"GA016",72}}; STREC h[N],tt;FILE *out ; int i,j,n,low,heigh,t; printf("Enter 2 integer number low & heigh : "); scanf("%d%d", &low,&heigh); if ( heigh< low ) { t=heigh;heigh=low;low=t; } n=fun( s,h,low,heigh ); printf("The student's data between %d--%d :\n",low,heigh); for(i=0;i<n; i++) printf("%s %4d\n",h[i].num,h[i].s); printf("\n"); out = fopen("out.dat","w") ; n=fun( s,h,80,98 ); fprintf(out,"%d\n",n); for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(h[i].s>h[j].s) {tt=h[i] ;h[i]=h[j]; h[j]=tt;} for(i=0;i<n; i++) fprintf(out,"%4d\n",h[i].s); fprintf(out,"\n"); fclose(out); }
一、選擇題 ( 1)~(10) : B C D A D D D C C A (11)~(20) : C B B B D B A A C B (21)~(30) : A B D D C C B D C C (31)~(40) : A C C C B C D C B D 二、程式填空題 (1) struct student (2) n-1 (3) a[i].name, a[j].name 三、程式改錯題 (1) t=1.0; (2) return (2*s); 四、程式設計題 int i,j=0; for (i=0;i<N;i++) if (a[i].s>=l && a[i].s<=h) b[j++]=a[i]; return j;參考答案:
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/528879.html
標籤:C
