2007年福建專升本C語言模擬試題及參考答案4
2008-04-10 11:40:11 來源:
一、選擇題(1-30每小題1分,31-45每小題2分,共60分)下列各題 A),B),C),D)四個選項,只有一個選項是正確的,請將正確的選項在答題卡相應(yīng)位置上涂黑。答在試卷上不得分。
【1】.二進(jìn)制數(shù)101110轉(zhuǎn)換為等值的八進(jìn)制數(shù)是 【1】 。
A) 45 B) 56 C) 67 D) 78
【2】.CPU是由 【2】 組成的�!尽�
A) 內(nèi)存儲器和控制器 B) 控制器和運算器
C) 內(nèi)存儲器和運算器 D) 內(nèi)存儲器、控制器和運算器
【3】.DOS是為IBM PC系列微型計算機(jī)及其兼容機(jī)所配置的 【3】 磁盤操作系統(tǒng)。
A) 多用戶多任務(wù) B) 單用戶單任務(wù) C) 分時 D) 分布式
【4】.啟動MS-DOS操作系統(tǒng)后, 【4】 已駐留內(nèi)存。
A) COMMAND.COM B) DISKCOPY.COM C) FORMAT.COM D) CCCC.EXE
設(shè)驅(qū)動器B中軟盤上的目錄結(jié)構(gòu)如下圖所示。
【5】設(shè)當(dāng)前目錄為F2,則把A盤根目錄下的PROG.BAS文件復(fù)制到B盤F3子目錄中的命令是 【5】 。
A) COPY PROG.BAS B: B) COPY A:PROG.BAS B:\
C) COPY A:\PROG.BAS B:\F3 D) COPY A:PROG.BAS B:\F3\
【6】下面四組DOS命令中,意義完全相同的一組是 【6】 。
A) COPY和DISKCOPY B) COMP和DISKCOMP
C) DEL和RD D) RENAME和REN
【7】防止軟盤感染病毒的有效方法是 【7】 。
A) 不要把軟盤和有毒軟盤放在一起 B) 在寫保護(hù)缺口上貼上膠條
C) 保持機(jī)房清潔 D) 定期對軟盤格式化
【8】雙面高密度5英寸軟磁盤的容量是 【8】 。
A) 360KB B) 720KB C) 1.2MB D) 1.44MB
【9】在FOXBASE中,可以使用的兩類變量是 【9】 。
A) 內(nèi)存變量和字段變量 B) 全局變量和局部變量
C) 字段變量和簡單變量 D) 內(nèi)存變量和自動變量
【10】建立一個新子目錄的DOS命令是 【10】 。
A) CREATE B) RD C) MD D) CD
【11】在C語言中,如果下面的變量都是int類型,則輸出的結(jié)果是 【11】 。
sum=pad=5; pAd=sum + + ,pAd + + , + + pAd;
printf("%d\n",pad);
A) 7 B) 6 C) 5 D) 4
以下程序的輸出結(jié)果是 【12】 。
【12】# include <stdio.h>
main()
{ int i=010 , j = 10;
printf("%d,%d\n",+ +i , j - -); }
A) 11,10 B) 9,10 C) 010,9 D) 10,9
【13】已知在ASCII代碼中,字母A的序號為65,以下程序的輸出的結(jié)果是 【13】 。
# include <stdio.h>
main()
{ char c1='A', c2='Y';
printf("%d,%d\n",c1,c2); }
A) 因輸出格式不合法,輸出錯誤信息 B)65,90 C)A,Y D)65,89
【14】指針s所指字符串的長度為 【14】 。
char *s="\\"Name\\Address\n";
A) 19 B) 15 C) 18 D) 說明不合法
【15】設(shè)有說明int(*ptr)[m];其中的標(biāo)識符ptr是 【15】 。
A)M個指向整型變量的指針
B)指向M個整型變量的函數(shù)指針
C)一個指向具有M個整型元素的一維數(shù)組的指針
D)具有M個指針元素的一維指針數(shù)組,每個元素都只能指向整型量
【16】語句while(!E);中的條件!E等價于 【16】 。
A)E = = 0 B)E!=1 C)E!=0 D)~E
【17】以下程序的輸出結(jié)果是 【17】 。
# include <stdio.h>
main()
{ printf("%d\n",NULL); }
A) 不確定的(因變量無定義) B)0 C)-1 D)1
【18】以下函數(shù)調(diào)用語句中含有 【18】 個實參。
func((exp1,exp2),(exp3,exp4,exp5));
A) 1 B) 2 C) 4 D) 5
【19】設(shè)有以下語句:
char a=3,b=6,c;
c=a^b<<2;
則c的二進(jìn)制值是 【19】 。
A) 00011011 B)00010100 C)00011100 D)00011000
【20】 下面的程序中 【20】 有錯誤(每行程序前面的數(shù)字是行號)。
1 #include <stdio.h>
2 main()
3 {
4 float a[3]={0,0};
5 int i;
6 for(i=0;i<3;i + + ) scanf("%d",&a[i]);
7 for(i=1;i<3;i + + ) a[0]=a[0]+a[i];
8 printf("%f\n",a[0]);
9 }
A) 沒有 B)第4行 C)第6行 D)第8行
【21】設(shè)有語句int a=3;則執(zhí)行了語句a+=a-=a*a;后,變量a的值是 【21】 。
A)3 B)0 C)9 D)-1
【22】以下的for循環(huán) 【22】 。
for(x=0,y=0; (y!=123)&&(x<4); x + + );
A) 是無限循環(huán) B)循環(huán)次數(shù)不定 C)執(zhí)行4次 D)執(zhí)行3次
【23】設(shè)有語句char a='\72';則變量a 【23】 。
A)包含1個字符 B)包含2個字符 C)包含3個字符 D)說明不合法
【24】以下程序的輸出結(jié)果是 【24】 。
# include <stdio.h>
# include <math..h>
main()
{ 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;
pritnf("%f\n",z); }
A) 14.000000 B) 015.400000 C) 13.700000 D) 14.900000
【25】sizeof(double)是 【25】 。
A)一種函數(shù)調(diào)用 B)一個雙精度型表達(dá)式
C)一個整型表達(dá)式 D)一個不合法的表達(dá)式
【26】C語言中 【26】 。
A)不能使用do-while語句構(gòu)成的循環(huán)
B)do-while語句構(gòu)成的循環(huán)必須用break語句才能退出
C)do-while語句構(gòu)成的循環(huán),當(dāng)while語句中的表達(dá)式值為非零時結(jié)束循環(huán)
D)do-while語句構(gòu)成的循環(huán),當(dāng)while語句中的表達(dá)式值為零時結(jié)束循環(huán)
【27】以下程序的輸出結(jié)果是 【27】 。
# include <stdio.h>
# include <string.h>
main()
{ char str[12]={'s','t','r','i','n','g'};
printf("%d\n",strlen(str)); }
A) 6 B) 7 C) 11 D) 12
【28】以下程序的輸出結(jié)果是 【28】 。
# include <stdio.h>
main()
{ int a=2,c=5;
printf("a=%%d,b=%%d\n",a,c); }
A) a=%2,b=%5 B) a=2,b=5 C) a=%%d,b=%%d D) a=%d,b=%d
【29】以下程序的輸出結(jié)果是 【29】 。
# include<stdio.h>
main()
{ int a ,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b); }
A) 6,1 B) 2,1 C) 6,0 D) 2,0
【30】以下程序的輸出結(jié)果是 【30】 。
# include <stdio.h>
main()
{ int i;
for ( i=1;i<=5;i + + ) {if ( i%2 ) printf("*");
else continue; printf("#");}
printf("$\n"); }
A) *#*#*#$ B) #*#*#*$ C) *#*#$ D) #*#*$
【31】以下for語句構(gòu)成的循環(huán)執(zhí)行了 【31】 次。
# include <stdio.h>
# define N 2
# define M N+1
# define NUM (M+1)*M/2
main()
{ int i , n=0;
for ( i=1;i<=NUM;i + + );
{n + + ; printf("%d",n); }
printf("\n"); }
A) 5 B) 6 C) 8 D) 9
【32】設(shè)有以下語句,則 【32】 不是對a數(shù)組元素的正確引用,其中0≤i<10。
int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a;
A) a[p-a] B) *(&a[i]) C) p[i] D) *(*(a+i))
有以下程序:
# include <stdio.h>
# define N 6
main()
{ char c[N]; int i=0;
for ( ;i<N ; c[i]=getchar () , i + + );
for ( i=0 ; i<N ; putchar(c[i]) , i + + ); }
【33】輸入以下三行,每行輸入都是在第一列上 開始,<CR>代表一個回車符:
a<CR>
b<CR>
cdef<CR>
程序的輸出結(jié)果是 【33】 。
A) abcdef B) a C) a D) a
二、填空題(每空2分,共40分)請將每空的正確答案寫在答題卡1-20序號后的橫線上,答在試卷上不得分。
結(jié)構(gòu)化程序設(shè)計所規(guī)定的三種基本控制結(jié)構(gòu)是 【1】 結(jié)構(gòu).選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。
在七位ASCII碼中,除了表示數(shù)字、英文大小寫字母外,還有 【2】 個其它符號。
把B盤BAS子目錄下第三個字符為A,且沒有擴(kuò)展名的全部文件拷貝到C盤ABC子目錄下的命令是 【3】 。
微機(jī)中ROM的中文意義是 【4】 存儲器。
啟動MS-DOS系統(tǒng)后,能自動執(zhí)行的批處理文件是 【5】 .BAT。
設(shè)當(dāng)前盤為C盤,刪除B盤FOX子目錄中擴(kuò)展名為.TXT的所有文件的命令是 【6】 。
十進(jìn)制數(shù)53轉(zhuǎn)換為十六進(jìn)制數(shù)為 【7】 。
數(shù)據(jù)庫管理系統(tǒng)常見的數(shù)據(jù)模型有層次、網(wǎng)狀和 【8】 三種。
買來一張新盤后,在存入文件前,必須進(jìn)行 【9】 處理。
在微機(jī)中,字符的比較就是對它們的 【10】 碼進(jìn)行比較。
以下C語言程序?qū)⒋疟P中的一個文件復(fù)制到另一個文件中,兩個文件名在命令行中給出。
#include <stdio.h>
main(argc,argv)
int argc; char *argv[];
{ FILE *f1,*f2; char ch;
if(argc< 【11】 )
{ printf("Parameters missing!\n"); exit(0); }
if( ((f1=fopen(argv[1],"r")) = = NULL)||((f2=fopen(argv[2],"w")) = = NULL))
{ printf("Can not open file!\n"); exit(0);}
while( 【12】 )fputc(fgetc(f1),f2);
fclose(f1); fclose(f2); }
以下程序中的trap函數(shù)是一個用梯形法求定積分的通用函數(shù)。梯形法求定積分的公式為:
n-1 a-b
s=((f(a)+f(b))/2+∑ f(a+i*h))*h , h=|----|
i=1 n
其中,n為積分小區(qū)間數(shù)。以下程序調(diào)用trap函數(shù)求定積分,被積函數(shù)是:
f(x)=x*x+3*x+2,且n=1000,a=0,b=4。
#include <stdio.h>
3include <math.h>
double trap(fun,a,b)
double (*fun)(),a,b;
{ double t,h;
int i,n=1000;
t=0.5*((*fun)(a)+(*fun)(b)); h=fabs(a-b)/(double)(n);
C語言參考答案
一、選擇題([1]——[30]每個選項1分,[31]——[45]每個選項2分,共60分)
(1)B (2)B (3)B (4)A (5)C (6)D (7)B (8)C (9)A (10)C
(11)C (12)B (13)D (14)B (15)C (16)A (17)B (18)B (19)A (20)C
(21)D (22)C (23)A (24)C (25)C (26)D (27)A (28)D (29)B (30)A
(31)C (32)D (33)C (34)D (35)A (36)A (37)C (38)B (39)B (40)A
(41)A (42)C (43)A (44)D (45)C
二、填空題(每空2分,共40分)
(1)順序
(2)66
(3) COPY B:\BAS\??A*.C:\ABC(或COPY B:\BAS\??A*.,C:\ABC)
(4)只讀
(5)AUTOEXEC
(6)DEL B:\FOX\*.TXT
(7)35
(8)關(guān)系
(9)格式化(或初始化、FORMAT)
(10)ASCII
(11)3
(12)!feof(f1)或feof(f1)==0
(13)(*fun)(a+i*h)
(14) mypoly
(15)I
(16)return 1 或 return (1)
(17)i+1
(18) I
(19) struct list *
(20) q
for(i=1;i<=n-1;i + + ) t=t+ 【13】 ;
t=t*h; return(t); }
double mypoly(x)
double x;
{ return(x*x+3.0*x+2.0); }
main()
{ double y,(*pf)(); pf= 【14】 ;
y=trap(pf,0.0,4.0); printf("%f\n",y); }
以下程序求a數(shù)組中的所有素數(shù)的和,函數(shù)isprime用來判斷自變量是否為素數(shù)。素數(shù)是只能被1和本身整除且大于1的自然數(shù)。
#include <stdio.h>
main()
{ int i,a[10],*p=a,sum=0;
printf("Enter 10 num:\n");
for(i=0;i<10;i + + ) scanf("%d",&a[i]);
for(i=0;i<10;i + + )
if(isprime(*(p+ 【15】 )) = = 1){ printf("%d",*(a+i)); sum+=*(a+i); }
printf("\nThe sum=%d\n",sum); }
isprime(x)
int x;
{ int i; for(i=2;i<=x/2;i + + )
if(x%i = = 0) return (0); 【16】 ; }
以下程序調(diào)用invert函數(shù)按逆序重新放置a數(shù)組中元素的值。a數(shù)組中的值在main函數(shù)中讀入。
#include <stdio.h>
#define N 10
invert(s,i,j)
int *s,i,j;
{ int t; if(i<j){ t=*(s+i); *(s+j)=(s+j);*(s+j)=t; invert(s, 【17】 ,j-1);}}
main()
{ int a[N],i;
for(i=0;i<N;i + + ) scanf("%d",a+ 【18】 );
invert(a,0,N-1);
for(i=0;i<N;i + + ) printf("%d",a[i]);
printf("\n"); }
以下程序建立了一個帶有頭結(jié)點的單向鏈表,鏈表結(jié)點中的數(shù)據(jù)通過鍵盤輸入,當(dāng)輸入數(shù)據(jù)為-1時,表示輸入結(jié)束(鏈表頭結(jié)點的data 域不放數(shù)據(jù),表空的條件是ph->next = = NULL).
#include<stdio.h>
struct list { int data;struct list *next;};
【19】 creatlist()
{ struct list *p,*q,*ph; int a;
ph=(struct list *) malloc(sizeof(struct list));
p=q=ph; printf("Input an integer number,enter –1 to end:\n");
scanf("%d",&a):
while(a!=-1)
{ p=(struct list *)malloc(sizeof(struct list));
p->data=a; q->next=p; 【20】 =p; scanf("%d",&a); }
p->next='\0'; return(ph); }
main()
{ struct list *head; head=creatlist();}
b b b
c cd cdef
d
e
f
【34】以下程序調(diào)用findmax函數(shù)求數(shù)組中值最大的元素在數(shù)組中的下標(biāo),請選擇填空。
# include <stdio.h>
findmax ( s , t , k )
int *s , t , *k;
{ int p; for(p=0,*k=p;p<t;p + + )
if ( s[p] > s[*k] )_________; }
main()
{ int a[10] , i , k ;
for ( i=0 ; i<10 ; i + + ) scanf("%d",&a[i]);
findmax ( a,10,&k );
printf ( "%d,%d\n" , k , a[k] ); }
A) k=p B) *k=p-s C) k=p-s D) *k=p
【35】有以下程序:
#include<stdio.h>
union pw
{ int i; char ch[2]; } a;
main()
{ a.ch[0]=13; a.ch[1]=0; printf("%d\n",a.i); }
程序的輸出結(jié)果是 【35】 。(注意: ch[0]在低字節(jié),ch[1]在高字節(jié)。)
A) 13 B) 14 C) 208 D) 209
有以下程序:
# include<stdio.h>
main()
{ int c;
while((c=getchar())!='\n')
{ switch(c-'2')
{ case 0:
case 1: putchar(c+4);
case 2: putchar(c+4);break;
case 3: putchar(c+3);
case 4: putchar(c+2);break; } }
printf("\n"); }
從第一列開始輸入以下數(shù)據(jù),<CR>代表一個回車符。
2743<CR>
【36】程序的輸出結(jié)果是 【36】 。
A) 668977 B) 668966 C) 6677877 D) 6688766
【37】以下程序的輸出結(jié)果為 【37】 。
main()
{ char *alpha[6]={"ABCD","IJKL","MNOP","QRST","UVWX"};
char **p; int i;
p=alpha;
for(i=0;i<4;i + + ) printf("%s",p[i]); printf("\n"); }
A) ABCDEFGHIJKL B) ABCD C) ABCDEFGHIJKLMNOP D) AEIM
【38】以下程序的輸出結(jié)果是 【38】 。
# include<stdio.h>
# define FUDGE(y) 2.84+y
# define PR(a) printf("%d",(int)(a))
# define PRINT1(a) PR(a);putchar('\n')
main()
{int x=2; PRINT1(FUDGE(5)*x); }
A) 11 B) 12 C) 13 D) 15
【39】以下程序的輸出結(jié)果是 【39】 。
# include<stdio.h>
main()
{ int i=1,j=3;
printf("%d",i + + );
{ int i=0; i+=j*2; printf("%d,%d",i,j); }
printf("%d,%d\n",i,j); }
A) 1,6,3,1,3 B) 1,6,3,2,3 C) 1,6,3,6,3 D) 1,7,3,2,3
【40】以下程序的輸出結(jié)果是 【40】 。
# include <stdio.h>
main()
{ int k=4,m=1,p;
p=func(k,m); printf("%d,",p); p=func(k,m); printf("%d\n",p);}
func(a,b)
int a,b;
{ static int m=0,i=2;
i+=m+1; m=i+a+b; return(m); }
A) 8,17 B) 8,16 C) 8,20 D) 8,8
【41】設(shè)有以下語句:
char str[4][12]={"aaa","bbbb","ccccc","dddddd"},
*strp[4];
int i;
for(i=0;i<4;i + + )strp[i]=str[i];
不是對字符串的正確引用,其中0≤k<4。
【41】 A) strp B) str[k] C) strp[k] D) *strp
【42】設(shè)有以下語句:
char str1[]="string",str2[8],*str3,*str4="string";
則 【42】 不是對庫函數(shù)strcpy的正確調(diào)用,此庫函數(shù)用業(yè)復(fù)制字符串。
A) strcpy(str1,"HELLO1"); B) strcpy(str2,"HELLO2");
C) strcpy(str3,"HELLO3"); D) strcpy(str4,"HELLO4");
【43】C語言中形參的缺省存儲類別是 【43】 。
A)自動(auto) B)靜態(tài)(static) C)寄存器(register) D)外部(extern)
【44】設(shè)有以下語句:
struct st {int n; struct st *next;};
static struct st a[3]={5,&a[1],7,&a[2],9,'\0'},*p;
p=&a[0];
則表達(dá)式 【44】 的值是6。
A)p + + ->n B) p->n + + C) (*p).n + + D) + + p->n
【45】以下四個程序中, 【45】 不能對兩個整型變量的值進(jìn)行交換。
A)# include <stdio.h>
main()
{ int a=10,b=20; swap(&a,&b);
printf("%d %d\n",a,b);
}
swap(p,q)
int *p,*q;
{
int *t;
t=(int )malloc(sizeof(int));
t=p;*p=*q;*q=*t; }
B) # include <stdio.h>
main()
{
int a=10,b=20;
swap(&a,&b);
printf("%d %d\n",a,b);
}
swap(p,q)
int p,q;
{
int *t;
t=*p;*p=*q;*q=t;
}
C) # include <stdio.h>
main()
{
int *a,*b;
*a=10,*b=20;
swap(a,b);
printf("%d %d\n",*a,*b);
}
swap(p,q)
int *p,*q;
{
int t;
t=*p;*p=*q;*q=t;
}
D) # include<stdio.h>
main()
{
int a=10,b=20;
int x=&a,y=&b;
swap(x,y);
printf("%d %d\n",a,b);
}
swap(p,q)
int *p,*q;
{
int t;
t=*p;*p=*q;*q=t;
}