C语言模拟考试课程组测试 结构体变量赋值单选题40题 含答案_第1页
C语言模拟考试课程组测试 结构体变量赋值单选题40题 含答案_第2页
C语言模拟考试课程组测试 结构体变量赋值单选题40题 含答案_第3页
C语言模拟考试课程组测试 结构体变量赋值单选题40题 含答案_第4页
C语言模拟考试课程组测试 结构体变量赋值单选题40题 含答案_第5页
已阅读5页,还剩12页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

模拟考试-课程组测试(3)一、单选题(共40题,40分)1、以下程序的运行结果是_____inta=0,b=3,c;c=(a>0)?++b:++a;printf("%d,%d,%d",a,b,c);A、1,3,1B、1,4,1C、1,4,4D、1,3,4正确答案:A解析:++b未执行2、下面程序的输出是________.main(){structcmplx{intx;inty;}cnum[2]={1,3,2,7};printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);}A、0B、1C、3D、6正确答案:D解析:本题主要考查的知识点为结构型变量的赋值。cnum[0]={1,3};cunum[1]={2,7};[要点透析]cnum[0].y为3,cnum[0].x为1,cnum[1].x为2,故3/1*2=6。3、有以下程序voidf(int*x,int*y){intt;t=*x;*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;2/17p=a;q=&a[7];while(p<q){f(p,q);p++;q--;}for(i=0;i<8;i++)printf("%d,",a[i]);}程序运行后的输出结果是______.A、8,2,3,4,5,6,7,1,B、5,6,7,8,1,2,3,4,C、1,2,3,4,5,6,7,8,D、8,7,6,5,4,3,2,1,正确答案:D解析:本程序中函数f的作用是交换指针变量x和y所指向的存储单元的值。4、有以下程序段inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5];b中的值是()A、5B、6C、8D、9正确答案:D解析:5、以下说法不正确的是()A、在不同函数中可以使用相同名字的变量B、形式参数是局部变量C、在函数内定义的变量只在函数范围内有效D、在函数内的复合语句中定义的变量在函数范围以外也有效正确答案:D解析:在函数内的复合语句中定义的变量在函数范围以外没有效6、以下程序运行后m和n的值是_____a=b=c=d=m=n=2;(m=a>b)&&(n=c>d);A、0,0B、0,2C、2,23/17D、2,0正确答案:B解析:前面为0,后面未执行7、以下程序运行的结果是:()inta=5,b=6;printf("%d",a/b);A、6B、5C、1D、0正确答案:D解析:8、以下正确的函数定义形式是().A、voidsushu(x,y){}B、voidsushu(intx;inty){}C、voidsushu(intx,inty){}D、voidsushu(intx;inty);正确答案:C解析:正确的函数定义形式是voidsushu(intx,inty){}9、在以下给出的表达式中,与do--while(E)语句中的(E)不等价的表达式是().A、(!E==0)B、(E>0||E<0)C、(E==0)D、(E!=0)正确答案:C解析:题目中的while(E)循环是当E等于0时,循环结束,E不等于0时,继续循环。选项C中,当E等于0时,表达式“E==0”为真继续循环,而E不等于0时,表达式为假循环结束,这与题目中的条件不等价,故应该选择C。10、下列程序的运行结果是______.voidfun(int*a,int*b){int*k;k=a;a=b;b=k;4/17}main(){inta=3,b=6,*x=&a,*y=&b;--->只是交换了位置,值未改变fun(x,y);printf("%d%d",a,b);}A、63B、36C、编译出错D、00正确答案:B解析:本题中主函数里的x、y,fun函数里的a\b\k,这些都是指针,fun函数中只是将a、b这两个指针交换了位置,而并没有改变主函数中变量a、b的值。11、有以下程序intf1(intx,inty){returnx>y?x:y;}intf2(intx,inty){returnx>y?y:x;}main(){inta=4,b=3,c=5,d=2,e;e=f2(f1(a,b),f1(c,d));printf("%d\n",e);}程序运行后的输出结果是______.A、4B、3C、5D、2正确答案:A解析:12、有如下程序#include<stdio.h>voidmain(){inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=0;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf("%d\n",s);}该程序的输出结果是______.A、18B、19C、20D、215/17正确答案:B我觉得题是不是打错了,初始应该是i=1解析:13、若有以下说明:inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};则值不为4的表达式是______.A、a[3]4B、a[a[5]-a[2]]4C、a[a[4]-2]4D、a[a[4]-1]5正确答案:D解析:14、若有说明语句:double*p,a;则能通过scanf语句正确给输入项读入数据的程序段是______.A、*p=&a;scanf("%lf",p);B、*p=&a;scanf("%f",p);C、p=&a;scanf("%lf",*p);D、p=&a;scanf("%lf",p);正确答案:D解析:double*p,a;语句表示定义了一个指向双精度型的指针变量p和双精度型变量a,而语句p=&a表示将变量a的地址赋给指针变量p;scanf("%1f",p)表示用键盘输入的数赋给指针变量p所指向的地址单元中。scanf()函数要求在输入double型数据,格式控制符必须用%1f(或%le).否则,数据不能正确输入。所以选项D)为正确答案。15、chara1[]="abc",a2[80]="1234";将a1串连接到a2串后面的语句是().A、strcat(a2,a1);B、strcpy(a2,a1);C、strcat(a1,a2);D、strcpy(a1,a2);正确答案:A解析:ac之中选,后给前,选a16、下面程序的输出结果是______.main(){inta[]={11,12,13,14,15,16,17,18,19,10};printf("%d\n",a[9]);}A、106/17B、11C、13D、15正确答案:A解析:17、请读程序:#include<stdio.h>#include<string.h>main(){chars1[]="AbCdEf",s2[]="aB";printf("%d\n",strcmp(s1+1,s2+1));}上面程序的输出结果是______.A、正数B、负数C、零D、不确定的值正确答案:A解析:intstrcmp(constchar*s1,constchar*s2);比较两个字符串,返回:0:s1==s21:s1>s2-1:s1<s218、设j和k都是int类型,则for循环语句for(j=0,k=-1;k=1;j++,k++)printf("****\n");A、循环结束的条件不合法B、是无限循环C、循环体一次也不执行D、循环体只执行一次正确答案:B解析:k=1是赋值语句,该for循环中没有判断语句,k的值总是等于1,c无限循环。19、执行以下语句后,x和y的值分别是______.inta=2,b=4,c=6,x,y;y=(x=a+b),(b+c);A、6,6B、6,10C、2,6D、2,107/17正确答案:A解析:,后面没用20、已定义以下函数:fun(int*p){return*p;}该函数的返回值是______.A、不确定的值B、形参p中存放的值C、形参p所指存储单元中的值D、形参p的地址值正确答案:C解析:21、下面程序main(){inti;intaa[3][3]={{2},{4},{6}};for(i=0;i<3;i++)aa[i][i]=aa[i][i]+1;printf("%d\n",aa[0][0]);}的输出是______.A、3B、1C、6D、0正确答案:A解析:22、以下程序的输出结果是______.main(){inti,x[2][2]={1,2,3,4},*p=&x[0][0];for(i=0;i<4;i+=2)printf("%d",p[i]);}A、14B、13C、12D、11正确答案:B解析:分别输出1和3p[i]默认前面为08/1723、已知字符'A'的ASCII码是65,'0'的ASCII码是48,执行语句printf("%d,%d\n",'A'+32,'0'+2);后,输出结果为:A、97,2B、97,50C、a,2D、a,50正确答案:B解析:24、WhichofthefollowingisalogicalANDoperator?下列哪个是逻辑和运算符?A、!B、&&C、||D、&正确答案:B解析:25、有如下程序段int*p,a=10,b=1;p=&a;a=*p+b;执行该程序段后,a的值为______.A、12B、11C、10D、编译出错正确答案:B解析:26、设有以下说明语句struct{intn;charch[8];}PER;则下面叙述中正确的是______.A、PER是结构体变量名B、PER是结构体类型名C、struct是结构体类型D、n是结构体变量9/17正确答案:A解析:PER是结构体变量名27、inta[10];合法的数组元素的最大下标值为().A、10B、9C、1D、0正确答案:B解析:28、以下能对二维数组a进行正确初始化的语句是().A、inta[2][]={{1,0,1},{5,2,3}};B、inta[][3]={{1,2,3},{4,5,6}};C、inta[2][4]={{1,2,3},{4,5},{6}};D、inta[][2]={{1,0,1}{},{1,1}};正确答案:B解析:不能省略后面的[]29、在宏定义#defineA3.897678中,宏名A被一个()所代替。A、单精度数B、双精度数C、常量D、字符串正确答案:D解析:30、能够获取字符串长度的函数是______A、strlen()B、strcpy()C、strcmp()D、strcat()正确答案:A解析:31、设有如下的程序段charstr[]="Hello";char*ptr;10/17ptr=str;执行完上面的程序段后,*(ptr+5)的值为______.A、0'B、\0'C、不确定的值D、o'的地址正确答案:B解析:本题考察字符数组的结束标志。ptr=str是将串str的首地址赋给了指针变量ptr,所以ptr+5指向字符串str的第六个数组元素,即是串的隐含结束标志'\0',*(ptr+5)='\0',最后的结果为'\0'。32、指向变量的指针,指针存放的值是指该变量的()A、值B、地址C、名D、一个标志正确答案:B解析:33、设有定义:intn1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是______.A、*p=*q;B、p=q;C、*p=&n1;D、p=*q;正确答案:A解析:34、以下程序的输出结果是______.main(){intx[2][2]={4,3,2,1},*p=&x[0][0];printf("%d",((*p)+1));}A、1B、2C、4D、5正确答案:D解析:11/1735、能够进行字符串比较的函数是______A、strlen()B、strcat()C、strcmp()D、strcpy()正确答案:C解析:36、若a=2,b=3,c=(a+b),b+1;那么c等于_______.A、5B、4C、2D、3正确答案:A解析:37、有以下说明和定义语句structstudent{intage;charnum[8];};structstudentstu[3]={{20,"200401"},{21,"200402"},{19,"200403"}};structstudent*p=stu;以下选项中引用结构体变量成员的表达式错误的是______.A、(p++)->numB、p->numC、(*p).numD、stu[3].age越界正确答案:D解析:结构体变量也有地址,因此可以把它的地址赋值给一个指针变量,然后通过该指针变量来引用结构体的成员,选项A和选项B就是通过指针变量来引用结构体的成员,也可以通过结构体数组元素的成员引用,而在选项D中stu[3].age不正确,因为结构体数组stu共有三个元素,其下标应该为0,1,2。38、inta[10];合法的数组元素的最小下标值为().A、10B、9C、1D、0正确答案:D12/17解析:39、C语言中运算对象必须是整型的运算符是________.A、%B、==C、/D、<=正确答案:A解析:C语言中运算对象必须是整型的运算符是%40、设有以下说明语句structex{intx;floaty;charz;}example;则下面的叙述中不正确的是______.A、struct是结构体类型的关键字B、example是结构体类型名C、x,y,z都是结构体成员名D、structex是结构体类型正确答案:B解析:本题中,structex是结构体类型名,example是结构体变量名。二、填空题(共6题,30分)1、/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积。例如:输入圆的半径值:19.527输出为:s=598.950017。------------------------------------------------------*/#include<stdio.h>/**********FOUND**********/doublefun(r){doubles;/**********FOUND**********/s=1/2*3.14159*r*r;13/17/**********FOUND**********/returnr;}voidmain(){floatx;printf("Enterx:");scanf("%f",&x);printf("s=%f\n",fun(x));}正确答案:第1空:floatfun(floatr);doublefun(floatr);doublefun(doubler)第2空:s=1.0/2*3.14159*r*r;;s=1/2.0*3.14159*r*r;;s=0.5*3.14159*r*r;;s=(double)1/2*3.14159*r*r;;s=1/(double)2*3.14159*r*r;第3空:returns;解析:2、/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线上的元素之和sum。------------------------------------------------------*/#include<stdio.h>voidfun(){inta[3][3],sum;inti,j;/**********FOUND**********/a=0;for(i=0;i<3;i++)for(j=0;j<3;j++)/**********FOUND**********/scanf("%d",a[i][j]);for(i=0;i<3;i++)14/17/**********FOUND**********/sum=sum+a[i][j];/**********FOUND**********/printf("sum=%f\n",sum);}main(){fun();}正确答案:第1空:sum=0;第2空:scanf("%d",&a[i][j]);第3空:sum=sum+a[i][i];;sum+=a[i][i];第4空:printf("sum=%d\n",sum);解析:3、/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:根据整型形参m,计算如下公式的值:y=1+1/3+1/5+1/7+...+1/(2m-3)------------------------------------------------------*/#include<stdio.h>doublefun(intm){/**********FOUND**********/doubley=1inti;/**********FOUND**********/for(i=1;i<m;i++)/**********FOUND**********/y+=1.0/(2i-3);return(y);}voidmain(){intn;printf("Entern:");scanf("%d",&n);printf("\nTheresultis%1f\n",fun(n));}正确答案:第1空:doubley=1;第2空:for(i=3;i<=m;i++);for(i=3;m>=i;i++)第3空:y+=1.0/(2*i-3);;y=y+1.0/(2*i-3);解析:15/174、/*-------------------------------------------------------【程序填空】---------------------------------------------------------说明:下面程序的功能是输出数组s中最大值元素的下标,请填写程序所缺内容。-------------------------------------------------------*/#include"stdio.h"voidmain(){intk,p;ints[]={1,9,7,2,10,3};/***********SPACE***********/for(p=0,k=p;p<6;【?】)/***********SPACE***********/if(s[p]>s[k])【?】;printf("%d\n",k);}正确答案:第1空:p++解析:5、/*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:用函数调用方式,实现字符串的复制。-------------------------------------------------------*/#include<stdio.h>voidstring_copy(char*str_from,char*str_to){inti=0;/***********SPACE***********/for(;(*(【?】)=*(str_from+i))!='\0';i++);}main(){staticchararray_str1[20]="iamateacher.";chararray_str2[20];/***********SPACE***********/【?】(array_str1,array_str2);/***********SPACE***********/【?】("array_str2=%s\n",array_str2);}正确答案:第1空:str_to+i;i+str_to第2空:string_copy第3空:printf解析:16

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论