数据结构论坛

首页 » 分类 » 常识 » 程序设计基础C语言程序设计最后附答案
TUhjnbcbe - 2024/9/10 16:15:00
一、单选题(每题2分,共60分)1.C语言源程序扩展名是()。A、cB、objC、exeD、h2.算法的空间复杂度是指()。A、算法在执行过程中所需要的计算机存储空间B、算法所处理的数据量C、算法程序中的语句或指令条数D、算法在执行过程中所需要的临时工作单元数3.系统的标准输入文件是指()。A、显示器B、硬盘C、键盘D、软盘4.判断char型变量ch是否为大写字母的正确表达式是()。A、’A’=ch=’Z’B、(ch=’A’)

(ch=’Z’)C、(ch=’A’)(ch=’Z’)D、(’A’=ch)5.对for(表达式1;;表达式3),可理解为()。A、for(表达式1;0;表达式3)B、for(表达式1;1;表达式3)C、语法错误D、仅执行循环一次6.有以下程序段intk=0,a=1,b=2,c=3;k=ab?b:a;k=kc?c:k;执行该程序段后,k的值是()。A、3B、2C、1D、07.以下描述中正确的是()。A、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句B、do-while循环由do开始,用while结束,在while(表达式)后面不能写分号C、在do-while循环体中,是先执行一次循环,再进行判断D、do-while循环中,根据情况可以省略while8.C源程序中不能表示的数制是()。A、二进制B、八进制C、十进制D、十六进制9.关于C语言的数据类型,下列说法不正确的是()。A、C语言包含基本数据类型B、C语言包含指针类型C、C语言包含字符串类型D、C语言包含结构体类型10.C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符()。A、必须为字母B、必须为下划线C、必须为字母或下划线D、可以是字母,数字和下划线中任一字符11.下面有关C程序书写风格的说法中,错误的是()。A、每一对{}上下对齐B、每一行的C语句尽可能长度一致C、每一对{}内的语句左对齐D、不同语句段采用缩进格式以示区别12.下列四组选项中,正确的C语言标识符是()。A、%xB、a+bC、aD、13.计算机能直接执行的程序是()。A、源程序B、目标程序C、汇编程序D、可执行程序14.break语句不能出现在()语句中A、switchB、forC、whileD、if…else15.以下关于简单程序设计的步骤和顺序的说法中正确的是()。A、确定算法后,整理并写出文档,最后进行编码和上机调试B、首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档C、先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档D、先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构16.执行下面的程序段后,变量k中的值为()。intk=3,s[2];s[0]=k;k=s[0]*10;A、不定值B、33C、30D、.已知对学生记录的描述为:structteacher{intsex;charname[20];intage;struct{intyear,month,day;}birthday;};structteacherli;设变量li中的“生日”是“年3月3日”,对“birthday”正确赋值的程序是()。A、year=;month=3;day=3;B、li.year=;li.month=3;il.day=3;C、birthday.year=;birthday.month=3;birthday.day=3;D、li.birthday.year=;li.birthday.month=3;li.birthday.day=3;18.有以下程序#include#definePT3.5;#defineS(x)PT*x*x;main(){inta=1,b=2;printf(%4.1f\n,S(a+b));}程序运行后输出的结果是()。A、14.0B、31.5C、7.5D、程序有错无输出结果19.下列命令或语句中,正确的是()。A、#defineMYNAME=”ABC”B、#includestdio.hC、for(i=0;i10;i++);D、structintstu{intname};20.已知枚举类型定义语句为:enumToken{NAME,NUMBER,PLUS=5,MINUS,PRINT=10};则下列叙述中错误的是()。A、枚举常量MINUS的值为6B、枚举常量PRINT的值为10C、枚举常量NUMBER的值为1D、枚举常量NAME的值为.设有以下说明语句:typedefstructintn;charch[8];}PER;则下面叙述中正确的是()。A、PER是结构体变量名B、PER是结构体类型名C、typedefstruct是结构体类型D、struct是结构体类型名22.以下函数的功能是:求x的y次方,请填空()。#includestdio.h/stdio.hvoidmain(){inti,x,y;doublez;scanf(%d%d,x,y);for(i=1,z=x;iy;i++)z=z*______;printf(x^y=%e\n,z);}A、i++B、x++C、xD、i23.若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是()。A、#defineN10inta[N];B、#definen5inta[2*n];C、inta[5+5];D、intn=10,a[n];24.若有以下语句typedefstructS{intg;charh;}T;以下叙述中正确的是()。A、可用S定义结构体变量B、可用T定义结构体变量C、S是struct类型的变量D、T是structS类型的变量25.若有定义语句:chars[10]=4567\0\0;,则strlen(s)的值是()。A、7B、8C、9D、.若有定义:inta[5],*p=a;,则对a数组元素的正确引用是()。A、*a[5]B、a+2C、*(p+5)D、*(a+2)27.若有以下函数首部intfun(doublex[10],int*n)则下面针对此函数的函数声明语句中正确的是()。A、intfun(doublex,int*n);B、intfun(double,int);C、intfun(double*x,intn);D、intfun(double*,int*);28.若有定义:inta[2][3];则对a数组的第i行第j列元素地址的正确引用是()。A、*(a+j)B、(a+i)C、*(a+j)D、a+j29.若有定义语句:intk[2][3],*pk[3];,则以下语句中正确的是()。A、pk=k;B、pk[0]=k[1][2];C、pk=k[0];D、pk[1]=k;30.程序段char*s=abcde;s+=2;printf(%d,s);的运行结果是()。A、cdeB、字符cC、字符c的地址D、无确定的输出结果二、是非题(每题1分,共10分)1.一维数组在定义时进行初始化,也必须指名数组大小。()2.C语言中的字符常量可以像整数一样在程序中参与运算。()3.break;语句执行时退出到包含该break;语句的所有循环外。()4.有参的宏,其参数参与运算,宏替换要先完成参数的计算,然后再执行替换。()5.在C程序中,数据只能用二进制的形式进行存放。()6.指针可以加上或减去一个整数。()7.在switch语句中必须使用default。()8.C语言的特点是简洁,编译程序小、效率高。()9.字符数组中的字符串可以直接进行比较。()10.C程序通过编译之后会产生一个扩展名为exe的可执行程序。()三、问答题(每题10分,共30分)1.请写出实现选择结构的三种语句。写出关键字,表达式和语句用“表达式”和“语句i”(i=1,2,…)。2.请将以下程序中的数组改写成指针形式,并将用户输入的字符串按照单词进行分割后再输出。提示:单词是指用空格、\t或\n分割的部分,同时用二维数组来储存单词。#includestdio.hchartext[],ch;inti,j;for(i=0;i;i++)text=\0;for(i=0;(ch=getchar())!=#;i++)text=ch;for(i=0,j=0;text!=\0;i++)if(text==

text==\t

text==\n)printf();elseprintf(%c,text);3.阅读以下程序,并写出和的罗马表示及运算步骤。intn,i,j,k;char*roman[4][10]={,I,II,III,IV,V,VI,VII,VIII,IX,,X,XX,XXX,XL,L,LX,LXX,LXXX,XC,,C,CC,CCC,CD,D,DC,DCC,DCCC,CM,,M,MM,MMM};scanf(%d,n);printf(%d=,n);for(j=0,i=00;j4;j++,i/=10)k=(n%i)/(i/10);printf(%s,roman[3-j][k]);printf(\n);三、问答题(每题10分,共30分)答案:单分支if选择结构,一般格式为:if(表达式){语句;}(2分)双分支if-else选择结构,一般格式为:{语句1;}{语句2;}(3分)多分支switch选择结构,一般格式为:switch(表达式)case常量表达式1:[语句序列1;][break;]case常量表达式2:[语句序列2;][break;]……case常量表达式n:[语句序列n;][break;]default:语句序列n+1;}(5分)#includestdio.hchartext[],words[][20],*t=text,(*w)[20]=words;(2分)inti,j=0,n=0;for(i=0;(*(t+i)=getchar())!=#;i++);(2分)for(i=0;*(t+i)!=#;i++)if(*(t+i)!=*(t+i)!=\t*(t+i)!=\n)*(*(w+n)+j++)=*(t+i);(2分)n++;j=0;(2分)for(i=0;i=n;i++)printf(%s,*(w+i));(2分)k=(%00)/(00/10)=0j=0roman[3][0]---(空)(1分)k=(%0)/(0/10)=9j=1roman[2][9]---CM(1分)k=(%)/(/10)=0j=2roman[1][0]---(空)(1分)k=(%10)/(10/10)=0j=3roman[0][0]---(空)(1分)故的罗马数字表示为CM(1分)k=(%00)/(00/10)=1j=0roman[3][1]---M(1分)k=(%0)/(0/10)=2j=1roman[2][2]---CC(1分)k=(%)/(/10)=5j=2roman[1][5]---L(1分)k=(%10)/(10/10)=0j=3roman[0][0]---(空)(1分)故的罗马数字表示为MCCL(1分)

1