13本程序设计语言基础复习题16页

13本程序设计语言基础复习题16页
13本程序设计语言基础复习题16页

一、判断题

1.C语言中,为了区别一般的变量,符号常量必须用大写字母表示。错

2.C语言中,强制类型转换后,原变量的值和数据类型不变。对

3.switch…case结构中条件表达式和常量表达式值可以为float类型。错

4.C语言中,do-while语句构成的循环只能用break语句退出。错

5.C语言中,数组元素的下标是从1开始的,下标不能越界。错

6.一个数组中的所有元素可以具有不相同的数据类型。错

7.C语言中,实参的个数、类型和位置必须与形参的定义一一对应。对

8.所有的函数调用前都必须进行函数原型说明。错

9.C语言通过文件指针对它所指向的文件进行操作。对

10.在程序运行过程中,可通过赋值语句改变常量的值。错

11.在一个循环体中,break和continue只能出现一次。错

12.C语言中,字符串以字符数组形式存放,且规定了用’\0’作为结束标记。对

13.常量、表达式可以做为函数的形参。错

14.C语言程序是函数体程序,main()是主函数。对

15.在程序运行过程中,可通过重定义改变变量的类型。错

16.在if语句中使用break,可退出选择结构。错

17.函数的递归调用同样适用于主函数main()。对

18.指针变量存放的是地址信息,所以对指针变量进行加、减等算术运算是没有意义的。错

19.C语言数据文件由二进制数据序列组成,C语言中能读写二进制文件。对

20.C语言中的文本文件以ASCII码形式存储数据。对

二、单项选择题

1.下面各选项中,均是C语言合法标识符的选项组是(B)。

A. 33 we auto

B. _23 me _3ew

C. _43 3e_ else

D. ER -DF 32

2.若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是(C)。

A. scanf("%d",&p);

B. scanf("%d%d%d",a,b,c);

C. scanf("%d",p);

D. scanf("%d",a,b,c);

3.表达式:(int)((double)9/2)-(9)%2的值是(B )。

A.0

B.3

C.4

D.5

4.以下程序段的描述,正确的是(C )。

x=-1;

do

{x=x*x;} while(!x);

A. 是死循环

B. 循环执行两次

C. 循环执行一次

D. 有语法错误

5.在下述程序中,判断i>j共执行的次数是(D )。

main()

{ int i=0, j=10, k=2, s=0;

for (;;)

{ i+=k;

if(i>j)

{ printf("%d",s);

break;

} s+=i;

A. 4

B. 7

C. 5

D. 6

6.有以下结构体说明、变量定义和赋值语句(D)。

struct STD

{char name[10];

int age;

char sex;

}s[5],*ps;

ps=&s[0];

则以下scanf函数调用语句中错误引用结构体变量成员的是(D)。

A. scanf(“%s”,s[0].name);

B. scanf(“%d”,&s[0].age);

C. scanf(“%c”,&(ps->sex));

D. scanf(“%d”,ps->age);

7.下列关系表达式中,结果为“假”的是(D)

A.(3+4)>6 B.(3!=4)>2

C.3<=4||3 D.(3<4)==1

8.下列关于开关语句中的描述中,错误的是(D )。

A.开关语句中,case子句的个数是不受限制的。

B.开关语句中,default子句的语句可以省略。

C.开关语句中,右花括号具有退出开关语句的功能。

D.开关语句中,case子句的语句序列中一定要有break语句。

9.语句int *p=&k;定义了指针变量p,与这个语句等效的语句是(C)。

A.int *p;p=k; B.int *p;*p=&k

C.int *p;p=&k ; D.int p;*p=k

10.设有定义:int x[2][3];则以下关于二维数组x的叙述错误的是(D )。

A.x[0]可看作是由3个整型元素组成的一维数组

B.x[0]和x[1]是数组名,分别代表不同的地址常量

C.数组x包含6个元素

D.可以用语句x[0]=0;为数组所有元素赋初值0

11.下列关于编译预处理的描述,错误的是(B )。

A.预处理在编译前执行

B.预处理指令需要分号结束

C.每条预处理指令要单独占一行

D.预处理指令可以出现在程序的任何地方

12.设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是(C)。

A.if(a>b) c=a,a=b,b=c;

B.if(a>b) {c=a,a=b,b=c;}

C.if(a>b) c=a;a=b;b=c;

D.if(a>b) {c=a;a=b;b=c;}

13.有以下定义语句,编译时会出现编译错误的是(C )。

A.char a=’a’

B.char a=’\n’;

C.char a=’aa’;

D.char a=’\x2d’;

14.若有定义语句:int a[4][10],*p,*q[4];且0≤i<4,则错误的赋值是(A)。

A.p=a

B.q[i]=a[i]

C.p=a[i]

D.p=&a[2][1]

15.下面是有关C语言字符数组的描述,其中错误的是(D)。

A.不可以用赋值语句给字符数组名赋字符串

B.可以用输入语句把字符串整体输入给字符数组

C.字符数组中的内容不一定是字符串

D.字符数组只能存放字符串

16.下列程序的运行结果为( A)。

#include

int main()

char a[]="morning";

int i, j=0;

for(i=1; i<7; i++)

if(a[j]

j=i;

a[j]=a[7];

puts(a);

return 0;

A.mo B.mogninr C.morning D.mornin

17.变量的指针,其含义是指该变量的( A)。

A.地址B.值C.名D.一个标志

18.若有说明:int *p,m=5,n;以下程序段合法的是( D)。

A.p=&n ; B.p = &n ;

scanf(“%d”, &p);scanf(“%d”,*p);

C.scanf(“%d”, &n);D.p = &n ;

*p=n ; *p = m ;

19.对定义语句:int a[10]={5,6,7,8,9,10};的正确理解是( C)。

A. 将6个初值赋给a[1]至a[6]

B. 将6个初值赋给a[5]至a[10]

C. 将6个初值赋给a[0]至a[5]

D. 此语句不正确

20.当定义一个结构体变量时,系统分配给它的内存是( A )。

A.各成员所需内存量的总和

B.结构体中第一个成员所需内存量

C.成员中占内存量最大的容量

D.结构体中最后一个成员所需内存量

三、填空题

1.C语言程序的三种基本结构,分别是顺序结构、选择结构和循环结构。

2.若x=1,y=2,z=3,则表达式x

3.若x=12,z=0;执行语句z+=++x+1;则z的值为14 。

4.有字符数组定义char str[80]; 从键盘接收一个字符串存入该数组中,语句应是getchar(str) 。

5.在循环过程中,若要跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定,应使用

continue语句。

6.有以下程序段,且变量已正确定义和赋值

for(s=1.0,k=1;k<=n;k++)

s=s+1.0/(k*(k+1));

printf("s=%f\n",s);

请填空,使下面程序段的功能与其完全相同。

s=1.0;k=1;

while( k<=n){ s=s+1.0/(k*(k+1)); k++;}

printf("s=%f\n\n",s);

7.以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最

小的数与第一个数对换,把最大的数与最后一个数对换。请填空。

#include

viod f(int x[],int n)

{ int p0,p1,i,j,t,m;

i=j=x[0]; p0=p1=0;

for(m=0;m{ if(x[m]>i) {i=x[m]; p0=m;}

else if(x[m]}

t=x[p0]; x[p0]=x[n-1]; x[n-1]=t;

t=x[p1];x[p1]= x[n]; x[n]=t;

main()

{ int a[10],u;

for(u=0;u<10;u++) scanf("%d",&a);

f(a,10);

for(u=0;u<10;u++) printf("%d",a);

printf("\n");

8.下列程序中的函数strcpy2()实现字符串两次复制,即将t所指字符串复制两次到s所指内存空间中,

合并形成一个新的字符串。例如,若t所指字符串为efgh,调用strcpy2后,s所指字符串为efghefgh。

请填空。

#include

#include

void strcpy2(char *s,char *t)

{ char *p=t;

while(*s++=*t++);

s= s-1;

while( *s++ =*p++);

main()

{ char str1[100]="abcd",str2[]="efgh";

strcpy2(str1 ,str2); printf("%s\n",str1);

9.以下程序统计从终端输入的字符中大写字母的个数,num[0]中统计字母A的个数,num[1]中统计字

母B的个数,其它依次类推.用#号结束输入,请填空。

#include

#include

main()

{ int num[26]={0},i; char c;

while(( c=getchar() )!='#')

if(isupper(c)) num[c-‘A’]+= 1 ;

for(i=0;i<26;i++)

printf("%c:%d\n",i+'A',num);

10.以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

请填空。

#include "math.h"

double fun(double x) { return(x*x-2*x+6); }

main()

double x,y1,y2;

printf("Enter x:"); scanf("%lf",&x);

y1=fun( 8+x );

y2=fun( sin(x) );

printf("y1=%lf,y2=%lf\n",y1,y2);

11. 有一个链表结构,如图所示:

下列代码段实现的功能是在p1结点和p2结点之间插入结点p ,根据功能填空。

if ( p == NULL )

printf("Can Not Insert a NULL Node into Link List!\n");

else{

p->next = p2 ; p1->next =p ;

12. C 语言中调用 fopen() 函数来打开文件,C 语言中调用 fclose() 函数来关闭文件。

13. 程序中有语句 c=sqrt(n); 则在程序的首部必须写上 #include

14. 指针P 用于指向整型数据,则该变量的定义语句为 int i = 0;int* p = &i; 。

15. 在循环体中,continue();语句的作用是 跳过循环体中剩余的语句而进行下一次循环 。

16. 定义二维整型数组a,4行10列,定义语句是 int a[4][10] 。

17. 若a 、b 和c 均是int 型变量,则计算表达式a=(b=4)+(c=2)后,a,b,c 的值分别是为 a=6,b=4,c=2 。

18. 表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))结果的数据类型为 int 。 19. 数学表达式2()a b 等价的C 语言表达式是 pow((a-b),2) 。

20. 至少执行一次循环体的循环语句是 do-while 语句 。

21. 若有定义语句:int a[4]={0,1,2,3},*p;p=&a[1];则++(*p)的值是 2 。

22. 若有 int a[10]; 则a 数组的最后一个元素表示为 a[9] 。

23. 若有定义int a,b ;则“a,b 中只有一个大于零”的表达式是 (a>0&&b<0)||(a<0&&b>0) 。

24. 静态变量如果没有指定初值,则其初值为 0 。

25. 设有以下定义:

#define N 10 #define M(x) x*N

执行语句a=M(1+1)后,a 的值为 20 。

26. C 源程序的基本单位是 函数 。

27. 下面程序的功能是对3个浮点数进行从大到小排序,请填空。 #include

int main( ){

float a,b,c,t;

scanf("%f,%f,%f",&a,&b,&c);

if ( a-b <0 ){

t=a;a=b;b=t;

if ( a-c<0 ){

t=a;a=c;c=t;

if ( b-c <0 ){

t=b

;

b=c;

c=t ;

printf("%5.2f,%5.2f,%5.2f\n",a,b,c);

return 0;

28. 以下程序是利用“辗转相除法”,求两个正整数的最大公约数。

#include

int main(){

int r,m,n;

scanf(“%d,%d,”,&m,&n);

if(m

r=m; m=n; n=r;

r=m%n;

while( ( r=m%n) !=0 ){

m=n; n=r; r= m ;

printf(“最大公约数:%d\n”,n);

retrun 0;

29. 下面程序用变量num 统计文件中字符的个数。补足所缺语句。

#include

int main( ) {

FILE*fp ;

long num=0;

if((fp=fopen("file.txt","r"))==NULL) {

printf("cannot open the file\n");

exit(0);

while(!feof(fp)) {

fgetc(fp);

num++ ;

printf("num=%ld\n",num);

fclose(fp);

return 0;

30. 下列程序实现的功能是求分数数列Λ,5

8,35,23,12--前20项之和。 #include

int main()

int s=1,i;

double a=2.0,b=1.0;

double sum=0;

for(i=1;i<=20;i++)

sum=sum+s*a/b;

a=a+b;

b=a-b;

s=(-1)*s;

printf("数列的和为:%.4lf\n",sum);

return 0;

四、 程序阅读题

1. 若运行时输入:246<回车>,写出以下程序运行后的输出结果。

#include

int main(void)

int x[3][2]={0},i;

for(i=0;i<3;i++)

scanf("%d",x[i]);

printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]);

return 0;

2.写出以下程序运行后的输出结果。

#include

int main(void)

int a[3][3], *p,i;

p=&a[0][0];

for(i=1; i<9; i++)

p[i]=i+1;

printf("%d\n",a[1][2]);

return 0;

3.以下程序运行时,当输入Nanjing University of Information & Technology回车,写出程序的运行结果。#include

int main( ){

char str[80];

scanf("%s",str);

printf("%s\n",str);

return 0;

4.写出下面程序的输出结果。

#include

int main ( ){

int k=1,n=263 ;

do { k *= n%10 ; n/=10 ; } while (n) ;

printf("%d\n",k);

return 0;

5.当运行以下程序时,从键盘输入:Aha Aha回车,写出程序的运行结果。

#include

int main(){

char s[80],c='a';

int i=0;

scanf("%s",s);

while(s[i]!='\0'){

if(s[i]==c) s[i]=s[i]-32;

else if(s[i]==c-32) s[i]=s[i]+32;

i++;

puts(s);

return 0;

6.写出下面程序的输出结果。

#include

int a=3 , b=5;

int max(int a,int b){

int c;

c=a>b?a:b;

return (c);

int main( ) {

int a=8;

printf(“%d”,max(a,b));

return 0;

7.输入5回车后,写出下面程序的执行结果。

#include

long int fac(int );

int main(){

int n;

scanf("%d",&n);

printf("%d\n",fac(n));

return 0;

long int fac(int m){

long int f;

if(m<0)

printf("data error!\n");

else if(m==0||m==1)

f=1;

else

f=fac(m-1)*m;

return f;

8.从键盘输入27回车,写出下面程序执行的结果。

#include

int main(){

int x,y,i,a[8],j,u;

scanf("%d",&x);

y=x;i=0;

do{

u=y/2;

a[i]=y%2;

i++;y=u;

}while(y>=1);

for(j=i-1;j>=0;j--)

printf("%d",a[j]);

return 0;

9.写出以下程序运行后的输出结果。

#include

void fun(char *t,char *s)

while(*t!=0)t++;

while((*t++=*s++)!=0);

int main(void)

char ss[10]=”acc”,aa[10]=”bbxxyy”;

fun(ss,aa);

printf(“%s,%s\n”,ss,aa);

相关主题
相关文档
最新文档