当前位置:文档之家› 13本程序设计语言基础复习题

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

一、判断题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 autoB. _23 me _3ewC. _43 3e_ elseD. ER -DF 322.若在定义语句: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.0B.3C.4D.54.以下程序段的描述,正确的是(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. 4B. 7C. 5D. 66.有以下结构体说明、变量定义和赋值语句(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)>2C.3<=4||3 D.(3<4)==18.下列关于开关语句中的描述中,错误的是(D )。

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

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

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

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

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

A.int *p;p=k; B.int *p;*p=&kC.int *p;p=&k ; D.int p;*p=k10.设有定义:int x[2][3];则以下关于二维数组x的叙述错误的是(D )。

A.x[0]可看作是由3个整型元素组成的一维数组B.x[0]和x[1]是数组名,分别代表不同的地址常量C.数组x包含6个元素D.可以用语句x[0]=0;为数组所有元素赋初值011.下列关于编译预处理的描述,错误的是(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=aB.q[i]=a[i]C.p=a[i]D.p=&a[2][1]15.下面是有关C语言字符数组的描述,其中错误的是(D)。

A.不可以用赋值语句给字符数组名赋字符串B.可以用输入语句把字符串整体输入给字符数组C.字符数组中的内容不一定是字符串D.字符数组只能存放字符串16.下列程序的运行结果为( A)。

#include <stdio.h>int main(){char a[]="morning";int i, j=0;for(i=1; i<7; i++)if(a[j]<a[i])j=i;a[j]=a[7];puts(a);return 0;}A.mo B.mogninr C.morning D.mornin17.变量的指针,其含义是指该变量的( 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<y?x+z:y+z的值是4。

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 <stdio.h>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 <stdio.h>#include <string.h>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#includemain(){ 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)+6y2=sin2(x)-2sin(x)+6请填空。

相关主题