




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2/2计算机C语言专升本题库一、理论基础(每小题1分,共10分)1、char型常量在内存中存放的是________。 A、二进制代码值 B、十进制代码值 C、十六进制代码值 D、ASCⅡ代码值【答案】D2、在c语言中,退格符是________。 A、\n B、\t C、\v D、\b【答案】D3、在c语言中,'a'和"a"存储所占用的字节数分别是________。 A、1,1 B、1,2 C、2,1 D、2,2【答案】B4、设x为整型变量,和表达式"!(!x)"值完全相同的表达式是________。 A、A==0 B、x==1 C、x!=0 D、x!=1【答案】C5、各种运算符间的优先顺序从高到低是________。 A、比较运算符→算术运算符→逻辑运算符 B、比较运算符→逻辑运算符→算术运算符 C、算术运算符→比较运算符→逻辑运算符 D、算术运算符→逻辑运算符→比较运算符【答案】C【解析】对于多种运算的混合运算,一定要记住它们之间的优先级,否则就会得到不同的计算结果。6、下列符号中,可以作为变量名的是________。 A、+c B、*X C、_DAY D、next-day【答案】C7、在64位编译器环境下,int类型占多少字节? A、2 B、4 C、1 D、8【答案】B8、以下各标识符中,合法的是。 A、A&M B、_sum C、float D、2x1【答案】B9、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为__________。 A、a<>0 B、!a C、a=0 D、a!=0【答案】D10、若有定义inta=12,n=5,则表达式a%=(n%2)运算后,a的值: A、0 B、1 C、12 D、6【答案】A11、设有以下宏定义:
#defineN3
#defineY(n)((N+1)*n)则执行语句:z=2*(N+Y(5+1));后,z的值为________。 A、出错 B、42 C、48 D、54【答案】C12、下列可用于c语言用户标识符的一组是________。 A、void,define,WORD B、a3_b3,_123,Car C、For,-abc,IFCase D、2a,DO,sizeof【答案】B【解析】C语言规定标识符只能由字母、数字和下画线3种字符组成,且第一个字符必须为字母或下画线,排除选项C)和D);C语言中还规定标识符不能为C语言的关键字,而选项A)中void为关键字,故排除选项A)。13、以下4个选项中,不能看作一条语句的是________。 A、; B、a=5,b=2.5,c=3.6; C、if(b!=5)x=2;y=6; D、returnj;【答案】C【解析】C语言规定每个语句以;(分号)结束,因此选项C)为两条语句。14、下列选择中,不能用做标识符的是________。 A、1234 B、_1_2 C、int_2_ D、2_int_【答案】D15、数值型数据包括()两种。 A、整型和长整型 B、整型和浮点型 C、单精度型和双精度型 D、整型实型和货币型【答案】B16、以下不正确的定义语句是________。 A、doublex[5]={2.0,4.0,6.0,8.0,10.0}; B、inty[5]={0,1,3,5,7,9}; C、charc1[]={'1','2','3','4','5'}; D、charc2[]={'\x10','\xa','\x8'};【答案】B17、表达式的值为0的是________。 A、5/5%5 B、5>2 C、!4 D、3>2&&5-6<7【答案】C18、已知英文字母m的ascii码值为109,那么英文字母p的ascii码值是________。 A、112 B、113 C、111 D、114【答案】A【解析】字母m与字母p的ASCII码值相差3,那么q的ASCII码值=109+3-112。19、若a是float型变量,b是unsigned型变量,以下输入语句中合法的是()。 A、scanf("%6.2f%d",&a,&b); B、scanf("%f%n",&a,&b); C、scanf("%f%3o",&a,&b); D、scanf("%f%f",&a,&b);【答案】C20、执行下列语句后,i和n的值为________。inti=10;intn=i++%5; A、10,O B、10,1 C、11,0 D、11,1【答案】C二、控制结构(每小题1分,共10分)1、c语言中,关系表达式和逻辑表达式的值是________。 A、0 B、0或1 C、1 D、'T'或'F'【答案】B2、下列程序的输出结果是______。
#include<stdio.h>
main()
{
inta=0,b=1,c=2;
if(++a>0||++b>0)++c;
printf("%d,%d,%d",a,b,c);
} A、0,1,2 B、1,2,3 C、1,1,3 D、1,2,2【答案】C【解析】本题考查if语句。先判断if语句的条件是否成立,因为++a=1>0,所以条件成立,又因为是进行逻辑或运算,在已知其中一个运算对象为真的情况下,不必判断另外一个运算对象的真假,即不进行++b操作,就可以直接得出整个表达式的值为逻辑1,执行下面的++c。3、c语言对嵌套if语句的规定是:else总是与()。 A、其之前最近的if配对 B、其之前最近的且尚未配对的if配对 C、缩进位置相同的if配对 D、第一个if配对【答案】B4、下列程序的运行结果是________。
main()
{
inta=-5,b=1,c=1;
intx=0,y=2,z=0;
if(c>0)x=x+y;
if(a<=0)
{
if(b>0)if(c<=0)y=x-y;
}
elseif(c>0)y=x-y;
elsez=y;
printf("%d,%d,%d\n",x,y,z);
} A、2,2,0 B、2,2,2 C、0,2,0 D、2,0,2【答案】A【解析】本题考查ifelse语句的使用。先判断第1个if语句,因为c=1>0,所以x=x+y=0+2=2。第1个if语句,因为a=-5<0,所以进入下列的复合语句。经判断发现,复合语句中第2个if语句的条件均不满足,不执行任何语句退出,在这个过程中y和z的值没有发生变化。5、c语言对嵌套的if语句的规定是:else总是与配对。 A、与之前最近的if B、第一个if C、缩进位置相同的if D、与之前最近的且尚未配对的if【答案】D6、有以下程序
main()
{
inti;
for(i=0;i<3;i++)
switch(i)
{
case1:printf("%d",i);
case2:printf("%d",i);
default:printf("%d",i);
}
}
执行后输出的结果是________。 A、011122 B、012 C、012020 D、120【答案】A【解析】当执行switch语句时,首先计算紧跟其后一对括号中的值,然后在语句体内寻找与该值吻合的case标号。若相等,则执行该标号后开始的各语句,包括在其后的所有case和default后的语句,直到switch语句体结束。7、有如下程序
main()
{
intx=1,a=5,b=5;
switch(x)
{
case0:b--;
case1:a--;
case2:a--;
b--;
}
printf("a=%d,b=%d\n",a,b);
}
该程序的输出结果是______。 A、a=3,b=4 B、a=3,b=3 C、a=4,b=5 D、a=4,b=4【答案】A8、有以下程序:
main()
{
inta=3,b=4,c=5,d=2;
if(a>b)if(b>c)printf("%d",d+++1);
elseprintf("%d",++d+1);
printf("%d\n",d);
}
程序运行后的输出结果是______。 A、2 B、3 C、43 D、44【答案】A【解析】本题考查嵌套if语句中else的配对。本题中else和第二个if即if(b>c)配对。由于a>b不成立,因此整个程序只输出printf("%d\n",d),即输出2。9、下列程序的输出结果是________。
main()
{
inta=4,b=5,c;
if(a<b)
{
c=a*b;
printf("%d,%d,%d\n",b,a,c);
}
else
{
c=b/a;
printf("%d,%d,%d\n",b,a,c);
}
} A、4,5,12 B、20 C、5,4,20 D、12【答案】C【解析】本题考查ifelse语句。第一个if语句,先判断条件,发现a<b成立,执行下列的复合语句,得c=a*b=20,b、a的值不变。10、设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是________。 A、if(x++); B、if(x>y&&y!=0); C、if(x>0)x-- D、if(y<0){;}【答案】C【解析】elsey++;elsex++;
本题考查的是if语句。if后表达式两侧的圆括号不可少,最后是一条语句或是用花括号括起来的一组语句。选项A和B是在表达式后跟了一条空语句,选项D是在表达式后跟了一组空语句,选项C中x--是表达式而不是语句,所以在编译时会出现错误信息。故本题答案选C。三、循环结构(每小题1分,共10分)1、下列叙述中正确的是________。 A、break语句只能用于switch语句体中 B、continue语句的作用是使程序的执行流程跳出包含它的所有循环 C、break语句只能用在循环体内和switch语句体内 D、在循环体内使用break语句和continue语句的作用相同【答案】C2、以下程序的输出结果是_______。
main()
{
inti=0,s=0;
for(;;)
{
if(i==6)break;
i++;
s+=i;
}
printf("%d\n",s);
} A、10 B、15 C、21 D、死循环【答案】C3、程序的基本控制结构是______。 A、顺序结构,多分支结构和单分支结构 B、顺序结构,支结构和循环结构 C、顺序结构,选择结构和循环结构。 D、单行结构和多行结构。【答案】C4、有以下程序
#include<stdio.h>
main()
{
inti,n;
for(i=0;i<8;i++)
{
n=rand()%5;
switch(n)
{
case1:
case3:
printf("%d\n",n);
break;
case2:
case4:
printf("%d\n",n);
continue;
case0:
exit(0);
}
printf("%d\n",n);
}
}
以下关于程序执行情况的叙述,正确的是______。 A、for循环语句固定执行8次 B、当产生的随机数n为4时结束循环操作 C、当产生的随机数n为1和2时不做任何操作 D、当产生的随机数n为0时结束程序运行【答案】D【解析】阅读本程序可知,当产生随机数为4时,会继续执行循环;当产生随机数为1和2时,会顺势执行case1或case2下面的语句,进而输出结果;当产生随机数为O时,正常结束程序的运行。for循环语句随着产生的随机数的不同,执行的次数也不相同。5、假定等级和分数有以下对应关系:等级:a分数:85~100等级:b分数:60~84等级:c分数:60以下对于等级grade输出相应的分数区间,能够完成该功能的程序段是__________. A、switch(grade)
{
case'A':printf("85--100\n");
case'B':printf("60--84\n");
case'C':printf("60以下\n");
default:printf("等级错误!\n");
} B、switch(grade)
{
case'A':printf("85--100\n");break;
case'B':printf("60--84\n");
case'C':printf("60以下\n");
default:printf("等级错误!\n");
} C、switch(grade)
{
case'A':printf("85--100\n");break;
case'B':printf("60--84\n");break;
case'C':printf("60以下\n");
default:printf("等级错误!\n");
} D、switch(grade)
{
case'A':printf("85--100\n");break;
case'B':printf("60--84\n");break;
case'C':printf("60以下\n");break;
default:printf("等级错误!\n");}【答案】D6、若变量已正确定义,有以下程序段i—o;
doprintf("%d,",i);
while(i++);
printf("%d",i)其输出结果是________。 A、0,0 B、0,1 C、1,1 D、程序进入无限循环【答案】B7、以下程序的执行结果是main()
{intx=0,s=0;
while(!x!=0)s+=++x;
printf("%d",s);} A、0 B、1 C、语法错误 D、无限循环【答案】B8、程序语言一般都提供多种循环语句,例如实现先判断循环条件再执行循环体的while语句和先执行循环体再判断循环条件的do-while语句。关于这两种循环结构,在不改变循环体的条件下,(17)是正确的。 A、while语句的功能可由do-while语句实现 B、do-while语句的功能可由while语句实现 C、若已知循环体的次数,则只能使用while语句 D、循环条件相同时,do-while语句的执行效率更高【答案】B【解析】本题考查程序的控制结构。
do-while语句的形式为:
do
循环体语句;
while循环条件;
首先执行一次循环体语句(无条件地),若循环条件不成立,则结束do-while语句的执行;否则再一次执行循环体语句,即,此后循环条件每成立一次,循环体语句就执行1次。显然,do-while中的循环体语句至少执行1次。
while语句的形式为:
while循环条件
循环体语句;
其执行过程为:先判断循环条件,若不成立,则结束while语句的执行;否则执行一次循环体语句。此后循环条件每成立一次,循环体语句就执行1次。显然,while中的循环体语句可能一次也不执行。
因此,在不改变循环体的情况下,可用while语句来代替do-while语句,反之则不行。9、有以下程序
#include<stdio.h>
main()
{
inti,j,m=1;
for(i=1;i<3;i++)
{
for(j=3;j>0;j--)
{
if(i*j>3)break;
m*=i*j;
}
}
printf("m=%d\n",m)
}
程序运行后的输出结果是________。 A、m=6 B、m=2 C、m=4 D、m=5【答案】A10、有以下程序
main()
{
inti,j;
for(i=1;i<4;i++)
{
for(j=i;j<4;j++)printf("%d*%d=%d",i,j,i*j);
printf("\n");
}
}
程序运行后的输出结果是______。 A、1*1=11*2=21*3=3
2*1=22*2=42*3=6
3*1=33*2=63*3=9 B、1*1=11*2=21*3=3
2*2=42*3=6
3*3=9 C、1*1=1 D、1*1=11*2=2
2*1=22*2=4
3*3=9【答案】B【解析】本题考查的是循环嵌套。在一个循环体内又完整地包含了另一个循环,称为循环嵌套。外循环i的值分别为1、2、3,当i=1,内循环j=1时,输出1*1=1;当内循环j=2时,输出1*2=2;当内循环j=3时,输出1*3=3;当i=2,内循环j=2时,输出2*2=4;当内循环j=3时,输出2*3=6;当i=3,内循环j=3时,输出3*3=9。四、数组/指针数组(每小题1分,共10分)1、合法的数组定义是________。 A、inta[]="string"; B、inta[5]=0,1,2,3,4,5; C、chara="string"; D、chara=0,1,2,3,4,5;【答案】D2、对长度为8的数组进行快速排序,最多需要的比较次数为________。 A、8 B、28 C、56 D、64【答案】B【解析】对长度为n的线性表进行快速排序,最坏情况下需要比较的次数为n(n-1)/2.数组属于线性表,故对长度为8的数组进行快速排序,最多需要的比较次数为8(8-1)/2=28.本题答案为B选项。3、对以下说明语句inta[10]={6,7,8,9,10};的正确理解是()。 A、将5个初值依次赋给a[1]至a[5] B、将5个初值依次赋给a[0]至a[4] C、将5个初值依次赋给a[6]至a[10] D、因为数组长度与初值的个数不相同,所以此语句不正确【答案】B4、有如下程序
#include<stdio.h>
voidmain()
{
charch[80]="123abcdefg*&";
intj;
longs=0;
puts(ch);
for(j=0;ch[j]>'\0';j++)if(ch[j]>='a'&&ch[j]<='z')ch[j]=ch[j]+'e'-'e';
puts(ch);
}
该程序的功能是__________. A、测字符数组ch的长度 B、将数字字符串ch转换成十进制数 C、将字符数组ch中的小写字母转换成大写 D、将字符数组ch中的大写字母转换成小写【答案】D5、若有以下的说明和语句,则在执行for语句后,*(*(pt+1)+2)表示的数组元素是________。
int[3][3],*pt[3],k;
for(k=0;k<3;k++)
pt[k]-&t[k][0]; A、t[2]Eo] B、t[2][2] C、tell[2] D、t[2][1]【答案】C6、已知英文字母a的十进制ascii码值为65,那么a的十进制ascii码值为______。 A、98 B、100 C、89 D、97【答案】D【解析】在ASCII码表中,大、小写英文字母是分组排序安排在不同位置的,并且小写英文字母的码值比对应的大写英文字母的码值大32。所以,当知道A的ASCII码值是65后,字符a的码值为65+32=97。7、阅读下列程序段:chars[18]="abook!";printf("%.4s\n",s);
其输出结果为________。 A、abook! B、abook C、abo D、a【答案】C【解析】"abook!"在字符数组中是按单个字符存储的,包括空格,%.4s是输出前四个字符。8、若有说明语句"inta[5],*p=a;",则对数组元素的正确引用是________。 A、a[p] B、p[a] C、*(p+2) D、p+2【答案】C9、若有说明:inta[][3]={{1,2,3},{4,5},{6,7}};则数组a的第一维的大小为:() A、2 B、3 C、4 D、无确定值【答案】B10、下列一维数组定义正确的是________。 A、x=5;intnum[x]; B、constihtx=5;floatnum[x]; C、constfloatx=5;intnum[x]; D、constintx;x=5;intnum[x];【答案】B【解析】数组的下标不能是变量,不能为非整数,定义为常量的标识符不能再用来赋值,只能在定义时初始化。五、字符串/字符串指针(每小题1分,共10分)1、\、/、mod、*等4个算术运算符中,优先级最低的是________。 A、\ B、/ C、Mod D、*【答案】C【解析】[知识点]模块/VBA编程基础
在一个表达式中进行若干操作时,每一部分都会按预先确定的顺序进行计算求解,称这个顺序为运算符的优先顺序。而算术表达式的优先顺序从高到低分别为:指数运算(∧)、负数(-)、乘法和除法(*、/)、整数除法(\)、求模运算(Mod)、加法和减法(+、-)、小字符串连接(&)。2、判断字符串a和b是否相等,应当使用。 A、if(a==b) B、if(a=b) C、if(strcmp(a,b)) D、if(strcmp(a,b)==0)【答案】D3、以下语句中,不能实现回车换行的是()。 A、printf("\n"); B、putchar("\n"); C、fprintf(stdout,"\n"); D、fwrite("\n",1,1,stdout);【答案】B4、下列数据中为字符串常量的是________。 A、'A' B、"9" C、Howdoyoudo D、'$abd'【答案】B5、char*s="\t\\name\\address\n";指针s所指字符串的长度为:。 A、说明不合法 B、19 C、18 D、15【答案】D6、宏定义用于将一个标识符定义为一个 A、常量 B、字符串 C、整数 D、长整数【答案】B【解析】宏定义用于将一个标识符定义为一个字符串7、下列类型的数据不可以存储在可变型变量中的是________。 A、整型 B、字节型 C、单精度型 D、日期型【答案】B【解析】本题考查可变型变量。可变型变量可以存储9种类型的数据:空、NULL型、整型、长整型、单精度型、双精度型、货币型、日期型和字符串型。选项A错误,整型数据可以存储在可变型变量中;选项B正确,字节型数据不可以存储在可变型变量中;选项C错误,单精度型数据可以存储在可变型变量中;选项D错误,日期型数据可以存储在可变型变量中。答案为B。8、按照c语言规定的用户标识符命名规则,不能出现在标识符中的是________。 A、大写字母 B、连接符 C、数字字符 D、下划线【答案】B【解析】C语言的标识符要符合以下规定:
①标识符是个以字母或下划线开头的,由字母、数字、下划线组成的字符串:
②标识符不能与任意一个关键字同名:
③标识符中的字母区分大小写。
故本题应该选择B。9、下面各语句行中,能正确进行字符串赋值操作的语句是______。 A、charST[5]={"ABCDE"}; B、charS[5]={'A','B','C','D','E'}; C、char*S;S="ABCDE"; D、char*S;scanf("%S",S);【答案】C10、设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是()。 A、c=*p1+*p2; B、p2=c; C、p1=p2; D、c=*p1*(*p2);【答案】B六、函数/函数指针(每小题1分,共10分)1、下面函数定义形式正确的是________。 A、intf(intx;inty) B、intf(intx,y) C、intf(int,inty) D、intf(x,y:int)【答案】C2、结构化程序设计方法的三种基本控制结构中不包括(.)。 A、循环结构 B、递归结构 C、顺序结构 D、选择结构【答案】B3、x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是________。 A、INPUTx、v、z; B、scanf("%d%d%d",&x,&y,&z); C、scanf("%d%d%d",x,y,z); D、read("%d%d%d",&x,&y,&z);【答案】B【解析】考查格式输入函数scanf的使用。
[解题要点]scanf函数的一般格式是:
scanf(格式控制,地址表列)
该格式中,地址表列中应是变量地址,而不是变量名。
[考点链接]调用putchar和getchar函输出和输入字符。4、c语言规定,在一个源程序中,main函数的位置________。 A、必须在最开始 B、必须在系统调用的库函数的后面 C、可以任意 D、必须在最后【答案】C【解析】C程序总是从main函数开始执行,但main函数在程序中的位置可以是任意的。5、以下叙述中正确的是________。 A、在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误地表示 B、C程序由主函数组成 C、C程序由若干函数组成 D、C程序中只允许包含一个函数【答案】C6、结构化程序设计所规定的三种基本控制结构是________。 A、输入、输出、处理 B、顺序结构、选择结构、循环结构 C、for、while、switch D、主程序、子程序、函数【答案】B【解析】结构化程序有三种基本结构组成,分别是顺序结构、选择结构和循环结构。7、若有以下函数首部intfun(doublex[10],int*n)则下面针对此函数的函数声明语句中正确的是________。 A、intfun(doubleX,int*n); B、intfun(double,int); C、intfun(double*X,intn); D、intfun(double*int*);【答案】C【解析】函数首部intfun(doublex[10],int:n)表示这个函数的返回值是整型,其第一个形式参数是一个双精度型的一维数组,第二个参数是一个整型指针。在C语言中,一维数组的名字表示的是一维数组的地址,所以选项D)是正确的。8、下列程序的输出结果是________。
intf1(intx,inty)
{
returnx>y?x:y;
}
intf2(intx,inty)
{
returnx>y?y:x;
}
main()
{
inta=4,b=3,c=5,d=2,e,f,g;
e=f2(f1(a,b),f1(c,d));
f=f1(f2(a,b),f2(c,d));
g=a+b+c+d-e-f;
printf("%d,%d,%d\n",e,f,g);
} A、4,3,7 B、3,4,7 C、5,2,7 D、2,5,7【答案】A【解析】根据函数intf1(intx,inty){
returnx>yx:y;}和intf2(intx,inty){
returnx)>y:x;}的定义可知,如果x>y成立,则函数f1返回x的值,函数f2返回y的值。所以f1(a,b)=4,f1(c,d)=5,f2(a,b)=3,f2(c,d)=2,故e=f2(4,5),f=f1(3,2)=3,g=4+3+5+2-4-3=7。9、以下叙述中,不正确的是________。 A、在一个函数中,可以有多条return语句 B、函数的定义不能嵌套,但函数的调用可以嵌套 C、函数必须有返回值 D、不同的函数中可以使用相同名字的变量【答案】C【解析】函数不一定有返回值。10、以下叙述正确的是________。 A、在C语言程序中,main函数必须位于程序的最前面 B、C语言程序的每行中只能写一条语句 C、C语言本身没有输入输出语句 D、在对一个C语言程序进行编译的过程,可发现注释中的拼写错误【答案】C【解析】考查C语言的几个基本概念。
[解题要点]选项A)中,main函数可以放在程序的任何位置,不一定要放在程序的最前面,不论main函数放在什么位置,程序的执行却总是从main函数开始的;选项B)中,因为C语言的语法限制不严格,所以可以多条语句放在同一行上;选项C)是正确的,C语言中没有专门的输入输出语句,输入输出是通过使用输入输出库函数来实现的;选项D)是错误的,因为C语言中的注释是不会被编译的。
[考点链接]掌握算法的相关特性。七、指针(每小题1分,共10分)1、调用函数时,当实参和形参都是简单变量时,它们之间数据传递的过程是__________. A、实参将其地址传递给形参,并释放原先占用的存储单元 B、实参将其地址传递给形参,调用结束时形参再将其地址回传给实参 C、实参将其值传递给形参,调用结束时形参再将其值回传给实参 D、实参将其值传递给形参,调用结束时形参并不将其值回传给实参【答案】D2、inta[10];
合法的数组元素的最小下标值为____ A、10 B、9 C、1 D、0【答案】D3、一个c语言程序总是从开始执行。 A、主过程 B、主函数 C、子程序 D、主程序【答案】B4、数组a[0…5,0…6]每个元素占5个单元,将其按列优先次序存储在起始地址为1000的连续内存单元中,则元素a[5][5]的地址为________。 A、1175 B、1180 C、1205 D、1210【答案】A【解析】本题主要考查的知识点是二维数组元素的地址计算。
[要点透析]a[5][5]的地址是1000+(5×6+5)×5=1175。5、字符串"\\\"abc\"\\"的长度是______。 A、11 B、7 C、5 D、3【答案】B6、程序流程图中指有箭头的线段表示的是________。 A、图元关系 B、数据流 C、控制流 D、调用关系【答案】C7、以下正确的描述是________。 A、函数的定义可以嵌套,但函数的调用不可以嵌套 B、函数的定义不可以嵌套,但函数的调用可以嵌套 C、函数的定义和函数的调用均不可以嵌套 D、函数的定义和函数的调用均可以嵌套【答案】B8、设有以下函数:
#include<stdio.h>
intf(inta)
{
intb=0,c;
c=3;
b++;
c++;
return(a+b+c);
}
如果在下面的程序中调用该函数,则输出结果是______.
voidmain()
{
inti;
for(i=0;i<3;i++)
printf("%d\n",f(i));
} A、567 B、579 C、345 D、333【答案】B9、以下程序中的函数reverse的功能是将a所指数组中的内容进行逆置。
voidreverse(inta[],intn)
{
inti,t;
for(i=0;i<n/2;i++)
{
t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
}
}
main()
{
intb[10]={1,2,3,4,5,6,7,8,9,10};
inti,s=0;
reverse(b,8);
for(i=6;i<10;i++)s+=b[i];
printf("%d\n",s);
}
程序运行后的输出结果是______。 A、22 B、10 C、34 D、30【答案】A10、若有以下定义和语句:doubler=99,*p=&r;*p=r;则以下正确的叙述是______。 A、以下两处的*p含义相同,都说明给指针变量p赋值 B、在"doubler=99,*p=&r;"中,把r的地址赋值给了p所指的存储单元 C、语句"*p=r;"把变量r的值赋给指针变量p D、语句"*p=r;"取变量r的值放回r中【答案】D八、结构体(每小题1分,共10分)1、有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是________。
structnode
{
chardata;
structnode*next;
}
a,b,*p=&a,*q=&b; A、3475 B、3574 C、1234 D、1235【答案】B【解析】在被调用过程中,有这样的语句“StaticSum”,因为变量Sum是局部变量,局部变量除了可以用Dim语句声明外,还可用Static语句将变量声明为静态变量,它在程序运行过程中可保留变量的值,这就是说每次调用过程时,用Static说明的变量保持原来的值。具体过程分析如下:调用P(1),所以在被调过程中N=1,执行ForNext循环,P(1)=Sum=1;调用P(2),所以在被调过程中N=2,执行ForNext循环,P(2)=Sum=4;调用P(3),所以在被调过程中N=3,执行ForNext循环,P(3)=Sum=10;调用P(4),所以在被调过程中N=4,执行ForNext循环,P(4)=Sum=20;不难看出,最后输出的结果S值应为1+4+10+20=35,所以选项C)正确。2、设有以下语句:
typedefstructtt{charc;inta[4];}cin;则下面叙述中正确的是________。 A、可以用TT定义结构体变量 B、TT是struct类型的变量 C、可以用CIN定义结构体变量 D、CIN是structTT类型的变量【答案】C【解析】将题目中的定义语句去掉前面的typedef和后面的CIN(分号保留),就是一条完整的结构体定义语句,其中struct是说明符,TT是结构体名,大括号里面的是结构体成员的定义。此时要声明该结构体变量时需要使用struct加结构体名一起来声明,structTT一起构成一个结构体类型,就好像字符类型char。若只去掉前面的typedef,就是一条结构体定义同时声明个结构体变量CIN的语句,因为CIN的前面部分是structTT的完整写法,可以看作是structTT。C语言允许用typedef说明一种新类型名,其语法格式为:
typedef类型名标识符;
以后就可以用该标识符来代替被说明的类型名了。因此,当前面存在typedef时,该语句就变成了给structTT的定义一个新的名称CIN。所以,此时的CIN是一个结构体类型,它相当于structTT,即可以和char一样单独用来声明该结构体变量,而TT只是一个结构体名,不能单独用来声明变量。所以,4个选项中C符合题意。3、有以下程序
structs
{
intx,y;
}
data[2]={10,100,20,200};
main()
{
structs*p=data;
printf("%d\n",++(p->x));
}
程序运行后的输出结果是________。 A、10 B、11 C、20 D、21【答案】B4、若定义下列结构体,结构体变量p的出生年份赋值正确的语句是________。
structst
{
intx;
inty;
intz;
}
structworker
{
charname[20];
charsex;
structstbirth;
}p; A、x=1987 B、birth.x=1987; C、p.birth.x=1987; D、x=1987;【答案】C【解析】本题主要考查怎样为嵌套定义的结构中的成员赋值:由于worker中的birth是一个st型的结构,在给birth赋值时,不能将birth作为一个整体,要用“.”运算再深入一层访问到最基本的成员x、y、z。5、c语言中,switch后的括号内表达式的值可以是________。 A、只能为整型 B、只能为整型,字符型,枚举型 C、只能为整型和字符型 D、任何类型【答案】D6、若有以下说明语句:
structstudent
{
intnum;
charname[];
floatscore;
}stu;
则下面的叙述不正确的是:() A、struct是结构体类型的关键字 B、structstudent是用户定义的结构体类型 C、num,score都是结构体成员名 D、stu是用户定义的结构体类型名【答案】D7、以下叙述中正确的是________。 A、使用typedef定义新类型名后,新类型名与原类型名实际上是等价的 B、结构体类型中的各个成分均不能是数组或指针 C、结构体类型的变量,不能在声明结构体类型组成时一起定义 D、元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义【答案】A【解析】本题考查typedef的使用方法,typedef对已存在的类型使用一个新的名字,结构体类型中的成分可以是数组和指针,所以B选项错误,结构体类型的变量可以在声明结构体的时候一起定义,C选项错误,D选项中可以一起定义。8、以下scanf函数调用语句中不正确的是__。
structpupil
{
charname[20];
intage;
intsex;
}
pup[5],*p=pup; A、scanf("%s",pup[0].name); B、scanf("%d",&pup[0].age); C、scanf("%d",p->age); D、scanf("%d",&(p->sex));【答案】C9、定义共用体的关键字是________。 A、union B、enum C、struct D、typedef【答案】A10、有以下结构体说明、变量定义和赋值语句
structstd
{
charname[10];
intage;
charsex;
}
s[5],*ps;
ps=&s[0];
则以下scanf函数调用语句中错误引用结构体变量成员的是________。 A、scanf("%S",S[0].name); B、scanf("%d",&s[0].age); C、scanf("%C",&(ps->sex)); D、scanf("%d",ps->age);【答案】D【解析】在scanf函数中,第二个参数应该表示为地址变量,而选项D)只是一个具体的值,而并不是一个地址值。九、程序题(每小题1分,共10分)1、以下程序的输出结果是________。
#defineA3
#defineB(A)((A+1)*A)
main()
{
intx;
x=3*(A+B(7));
printf("x=%4d\n",x);
} A、93 B、135 C、54 D、251【答案】A2、下述程序的输出结果是________。
main()
{
intb[]={2,4,6,8,10,12};
int*p=b,**q=&p;
printf(”%d,”,*(p++));
printf(”%d,”,**q);
} A、4,4 B、2,2 C、4,5 D、2,4【答案】D3、以下程序运行后的输出结
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年电子指南针项目可行性研究报告
- 2025年安全生产月知识竞赛题库
- 2025年电力半导体模块结构件项目可行性研究报告
- 2025年甜菜颗粒粕项目可行性研究报告
- 2025年球型六角L扳手项目可行性研究报告
- 2025年玻璃纤维绝缘A型梯项目可行性研究报告
- 2025年猫梯项目可行性研究报告
- 2025年牛皮钳套项目可行性研究报告
- 低压电器 课件 单元一 项目一 熟悉电工试验台
- 吉首大学张家界学院《电力拖动与控制》2023-2024学年第二学期期末试卷
- 2020教学能力大赛国赛一等奖实施报告汇报PPT-国一
- 英文倒装结构详解课件
- 第七讲:新月派诗歌
- 科研诚信问题课件
- 新疆公务员行测真题及答案
- 高频电刀之负极板的正确使用方法
- 二下快乐读书吧《一起长大的玩》导读课课件
- 关于高中班级管理论文
- 广东省五年一贯制语文考试题目
- 英语考研高频词汇
- 某别墅中央吸尘系统设计施工规范说明
评论
0/150
提交评论