高级语言程序设计自考模拟4_第1页
高级语言程序设计自考模拟4_第2页
高级语言程序设计自考模拟4_第3页
高级语言程序设计自考模拟4_第4页
高级语言程序设计自考模拟4_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

[模拟]高级语言程序设计自考模拟4单项选择题在每小题列出的四个备选项中只有一个是符合题目要求的。第1题:下列关于C语言的描述正确的是()A.C语言是面向硬件的高级语言B.C语言是面一种面向对象的程序设计语言C.C语言是一种结构化程序设计语言D.C语言的前身是汇编语言参考答案:C答案解析:第2题:C语言的基本数据类型包括()A.字符型和数值型B.字符型和逻辑型C.整型和实型D.指针型和数据型参考答案:A答案解析:第3题:已知有以下定义(假定现有计算机字长为16)inta=0x48,b=0xf0;a^b的值为()A.184B.183C.290D.287参考答案:A答案解析:因计算机字长为16,故a的二进制表示是0000000001001000,b的二进制表示是0000000011110000,进行按位加(a^b)所得的结果是:0000000010111000(十进制值为184)。第4题:若有以下定义:chars[20]=="programming",*ps=s; 则不能代表字符o的表达式是()A.*(ps+2)B.s[2]C.ps[2]D.*ps+=2参考答案:D答案解析:"*"的运算优先级高于"+-",故*ps+=2相当于*ps='p'+2。第5题:若有说明语句:intI,;则以下关于x、*x、x[0]、&x[0][0]的描述正确的是()A.x、*x、x[0]、&x[0][0]均表示元素x[0][0]的地址B.只有x、*x表示元素x[0][0]的地址C.只有x[0]、&x[O]L0]表示元素x[0][0]的地址D.只有&x[0][0]表示元素的地址参考答案:C答案解析:x[0]表示数组x[3][4]第二行的首地址,也是数组元素[0][0]的地址第6题:若有下列类型说明语句:charw;intx;floaty;doublez; 则表达式w*x+z-y的结果的数据类型是()A.charB.intC.floatD.double参考答案:D答案解析:第7题:下列程序正确的运行结果为()#include<stdio.h>main(){inta[]={2,6,8,10,14,18);int*ptr[-]={&a[0],&a[1],&a[2],&a[3],&a[4]);inti;for(i=0;i<5;i++)a[i]=a[i]/2+a[i]printf("%d\n",*(*(ptr+2)));printf("%d\n",*(*ptr));}A.1221B.2112C.123D.312参考答案:A答案解析:#include<stdio.h>main(){inta[]={2,6,8.10,14,18);int*ptr[]={&a[4],&a[3],&a[2],&a[1],&a[0]};/*定义一个指向整型数据的指针的数组,并以数组a的前5个元素的地址为初值*/for(i=0;i<5;i++)a[i]=a[i]/2+a[i];/*数组a的元素分别加上各自现有值的1/2并保存在该元素中*/printf("%d\n",*(*(ptr+2)));/*输出的是指针数组ptr的第三个元素所指向的数组a的元素值*/printf("%d\n",*(*ptr));/*输出的是指针数组ptr的第一个元素所指向的数组a的元素值*/}第8题:以下函数的功能是()ABC(ps)char*ps;{char*P;p=ps;while(*p++);return(p-ps);}A.比较两个字符串的大小B.求字符串的长度C.将字符串ps复制到P中D.以上三种说法都不对参考答案:B答案解析:第9题:若x、y是int型变量,则执行以下语句后的x值是()#include<stdio.h>main(){intx,y;for(y=1,x=1;y<50;y++){if(x>=10)break;if(x%2==1)x+=5;}x-=3;}A.3B.6C.7D.10参考答案:A答案解析:#include<stdio.h>main(){intx,y;for(y=1,x=1;y<50;y++)/*以y为线索进行循环,步进值为1*/{if(x>=10)break;/*如果x大于10则中断循环*/if(x%2==1)/*当x是奇数时,执行"x+=5;"*/x+=5;)X-=3;/*循环执行完毕,x的值减3*/}第10题:执行下列语句后b的值为()inta,b,C,l=4,m=6,n=8;int*p1=&1,*p2=&m,*p3;a=p1==&1;b=3*(-*p1)/(*p2)+7;c=*(p3=&n)=*p1*(*p2);A.4B.5C.7D.8参考答案:B答案解析:决定b的值的是语句"b=3*(-*p1)/(*p2)+7;"根据定义将其转换成变量算术运算式是"b=3*(-1)/m+7=3*(-4)/6+7=5"。第11题:若有以下说明,则在seanf函数调用语句中对结构体变量成员引用方式不正确的是()structpub{charname[20];intage;intsex;}pub[5],*P;A.scanf("%s",pup[0].name);B.scanf("%d",&pup[0].age);C.scanf("%d",&p->sex);D.scanf("%d",*P.age);参考答案:D答案解析:"·"的优先级远高于"&"和"*"。第12题:设有以下定义inta[4][3]={{1,2,3},{4,5,6},{7,8,9),{10,11,12};int*ptr[3]={a[0]},*p=a[0]; 则以下能正确表达数组元素a[1][2]的表达式是()A.*((*ptr+1)[2])B.*(*(p+5))C.*((*ptr+1)+4)D.*(*(p+1)+2)参考答案:C答案解析:"int*ptr[3]={a[0]}"定义了指针数组ptr并给这个数组的第一个元素赋值"a[0]","*((*ptr+1)+4)"的含义是:取指针数组ptr的第一个元素值再加5所得的指针量指向的内存单元的值。第13题:执行以下程序段后s的值为()inta[]={5,6.4,4,8,9,5,8};ints=0;intk;for(k=0;k<8;k+=2)s+=*(a+k):A.17B.22C.27D.32参考答案:B答案解析:inta[]={5,6,4,4,8,9,5,8};ints=0:intk;for(k=0;k<8;k+=2)/*步进值为2,k=8时循环终止*/s+=*(a+k);/*s的值是a[0]、a[2]、a[4]、a[6]的和*/第14题:不能把字符串"Hello!"符给数组b的语句是()A.charb[10]={'H','e','l','l','o','!'};B.charb[10];b="Hello!";C.charb[10];strcpy(b,"Hello!");D.charb[10]="Hello!";参考答案:B答案解析:"charb[10];b="Hello!";语句中,b是数组的首地址而不是变量,故字符串"Hello!"的首地址不能赋给b,也就不能完成把字符串"Hello!"赋给数组b的任务。第15题:下列选项中合法的数组定义是()A.inta[]="string";B.inta[5]={0,1,2,3,4,5};C.chara="sting";D.chara[]={0,1,2,3,4}参考答案:A答案解析:填空题第16题:与标准输出设备所对应的文件型指针名为______。参考答案:stdout详细解答:第17题:将字符串写入文件时,不写入文件的字符串结束标志是______。参考答案:'\0'详细解答:第18题:将字符转换成ASCⅡ代码值的函数是______。参考答案:toascii()详细解答:第19题:文件包含命令是以______为开头的编译预处理命令。参考答案:#include详细解答:第20题:______是C语言中唯一的一个三目运算符,它是由两个符号组成。参考答案:条件运算符详细解答:第21题:数组intarry[5][9];的第二维下标的最大值是______。参考答案:8详细解答:第22题:在进行程序清单的编译时,______是先于编译进行的。参考答案:宏替换详细解答:第23题:已知charstr[]="ABCD";,则语句printf("%d",strlen(str));的输出是______。参考答案:4详细解答:第24题:设inta;floatb;charc;longd;doublee;unsignedu;,则表达式a+c/b-d*e+u值的类型是______。参考答案:double详细解答:第25题:设intx=5;x+==x-=x*x;则x的值是______。参考答案:-40详细解答:程序分析题第26题:#include<stdio.h>voidmain(){inti;for(i=1;i<5;i++)printf("%d\t%c\n",i,('A'+i));}__________参考答案:1B2C3D4E详细解答:#include<stdio.h>voidmain(){inti;for(i=1;i<5;i++)/*限定循环次数为4次*/printf("%d\t%c\n",i,('A'+i));,/*输出的值并输出ASCⅡ值为('A'+i)"字符*/}第27题:#include<stdio.h>voidmain(){inti,j,a[4][4];for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=1+i;--j;for(i=0;i<4;i++){for(j=0;j<4;j++)if(a[i][j]>0)printf("%3d",a[i][j]);printf("\n");}}__________参考答案:1111222233334444详细解答:#include<stdio.h>voidmain(){inti,j,a[4][4];for(i=0;i<4;i++)/*限定循环次数为4次*/for(j=0;j<4;j++)a[i][j]=1+i;--j;/*限定循环次数为4次*/for(i=0;i<4:i++){for(j=0;j<4;j++)if(a[i][j]>0)printf("%3d",a[i][j]);/*设置输出格式为3个字符的宽度,不足的宽度以空格补齐*/printf("n");}}第28题:#include<stdio.h>intf(intn){staticints=1;while(n)s*=n--;returns;}main(){inti,j;i=f(3);j=f(5);printf("Theoutputis:\n");printf("i=%dj=%d\n",i,j);}__________参考答案:Theoutputis:i=6j=720详细解答:#include<stdio.h>intf(intn){staticints=1;/*s被定义为静态变量,函数f()退出时其值被保留,且再次进入该函数时不再被初始化,该变量所使用的值为最近一次凋函数f()时所得到的值。*/while(n)s*=n--;returns;}main(){inti,j;i=f(3);/*第…次凋用f(),s被初始化为1,运算过程中s的值被改变为6,所以i=6*/j=f(5);/*第二次调用f(),s不再被初始化而是以值6参与本次运算,故j的值为6×5×4×3×2×1=720*/printf("Theoutputis:\n");printf("i=%dj=%d\n",i,j);}第29题:#include<stdio.h>inttrans(intm,intn){inti;if(m>n){i=m%n;trans(m,n);}elsei=m:if(i<10)printf("%d\n",i):elseprintf("%c",’A’+i-10):}main(){inti;printf("Theoutputis:\n");printf("n%d\n",-23);trans(21,3);printf("n%d\n",123);trans(123,16);}__________参考答案:Theoutputis:n-23详细解答:#include<stdio.h>inttrans(intm,intn){inti;if(m>n){i=m%n;trans(m,n);}/*如果m>n,则将m除以n的余数赋给i,并再次调用函数trans()*/elsei=m;if(i<10)printf("%d\n",i);/*如果i<10,则打印输出i的值*/elseprintf("%c",'A'+i-10);main(){inti;printf("Theoutputis:\n");printf("n%d\n",-23);trans(21,3);printf("n%dkn",123);trans(123,16);}程序填充题第30题:将一个十进制整数转变成一个二进制整数。#include<stdio.h>main(){inti=0.j,n,num[20];scanf("%d",______);/*第一空*/while(n!=0){num[i++]=______;/*第二空*/n=______;)/*第三空*/for(j=i-1;j>=0;j--)printf("Ha",num[j]);printf("\n");}参考答案:&n/*第一空。从键盘上输入十制数n*/n%2/*第二空。取余数填补低位*/n/2/*第三空*。为下一次循环进行更高的一位运算做准备/详细解答:第31题:以下程序用来统计从终端输入的字符中大写字母的个数。以"$"作为输入结束标记。#include<stdio.h>#include<ctypc.h>main(){intnum[126],i;charc;for(i=0;i<26;i++)num[i]=0;while((______)!='$')/*第一空*/if(isupper(c))num[c-65]+=1;for(i=0;i<26;i++)if(______)/*第二空*/printf("%c:%d\n",______,num[i]);/*第三空*/}参考答案:c=getchar()/*第一空。得到从键盘输入的值,并判断是不是结束标志"$"*/num[i]/*第二空。判断用以记录个数的数组元素是否为0,如为0则不输出*/i+65/*第三空。从语句"num[c-65]+=1;"可知数组对字符的记录是通过下标和字符的ASCⅡ值之间的关系进行的。故此处应填上与之相应的换算关系*/详细解答:第32题:输入5个字符,从中找出最大的并输出。要求用字符数组存放此字符,并用指针数组元素分别指向这5个字符。#include<stdio.h>main(){chara[5],*p[5],*max;intI;for(I=0;I<5;I++)______;/*第一空*/for(I=0

温馨提示

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

评论

0/150

提交评论