《程序设计方案部内部习题与答案 .docx》由会员分享,可在线阅读,更多相关《程序设计方案部内部习题与答案 .docx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品名师归纳总结程序设计部内部习题一、填空题如有如下说明,且int 类型占两个字节,就正确的表达为(A)struct st int a 。int b2 。a。A. 结构体变量 a 与结构体成员a 同名,定义是合法的B. 程序只在执行到该结构体时才为结构体st 安排储备空间C.程序运行时为结构体st 安排 8 字节储备单元D.类型名 struct 可以通过 extern 关键字提前引用【解读】此题主要考查结构体的用法:结构体变量a 与结构体成员a 同名,定义合法:在程序编译的时候结构的定义并不会使系统为该结构安排内存空间,只有在说明结构变量时才安排内存空间。int a 占 2 个字节 int b
2、2 占 4 个字节。共 6 个。类型名shmct st不行以通过 extem 关键字提前引用。2、语句“ printf ”yboun ” 。”的输出结果是(C)。A. abhowareybou ybouC. howareyouD. ahowareybou【解读】“b ”格式符表示退格,功能是将它后面的字母把它前面的字母掩盖,导致“ b”格式符前面的字母不能输出。“ ”格式符表示输出单引号字符。“”格式符表示输出反斜线字符。3、字符串 %ABCDEF 的长度是( B )A.11 B.10 C.5D.3【解读】此题涉及字符串最基本的2 个概念:字符串的长度是指字符串中字符的个数, 但不包括字符串终
3、止符:以反斜杆v 开头的特别字符序列,意思是把反斜杆后面的字符序列转换成特定的含义,而不是原先的含义,不包含在字符串长度之内,连同后面的字符为一个长度。而 %也是如此。4、有以下程序#include void mainchar a30,b30 。可编辑资料 - - - 欢迎下载精品名师归纳总结scanf%s,a 。getsb。printf%sn%sn,a,b 。输入 how are you. I am fine ,程序的运行结果是(C)A. how are you.B. how I am fine are you. I am fineC. how are you . I am fineD. h
4、ow are you. I ok【学问点】考查数组5、有以下程序#include mainint b33=0,1,2,0,1,2,0,1,2,i,j,t=0。fori=0 。 i=i 。j-t+=bij 。printf%dn,t 。程序运行后的结果是(C )A.4B.3C.8D.9【学问点】循环结构【解读】这道题主要考查的是二维数组的有关学问。在两层for 循环语句中,累加上三角元素,所以程序执行的过程为t=b00+bO1+b02+b11+b12+b22=8。6、有以下程序#include mainint x=1,y=0,a=0,b=0 。switchxcase 1:switchycase 0
5、:a+ 。break。case 1:b+。break。case 2:a+。b+ 。break。case 3:a+。b+ 。可编辑资料 - - - 欢迎下载精品名师归纳总结printfa=%d,b=%dn,a,b。程序执行的结果是(D )A.a=1 ,b=0B. a=2,b=2C. a=1,b=1D. a=2 , b=1【学问点】挑选结构【解读】此题考查了breakswitch 结构的内容。在Ccasecase标号的内容后case 常量表达式只switch连续执行了外部 switch 结构的 case 2 分支。最终 a和 b 的值分别为 2 和 17、如有定义 int a5,*p=a。就正确引
6、用数组元素的是(D )A.*&a5 B.*a+2 C.*p+5D.*a+2【学问点】指针【解读】此题考查通过指针引用数组元素。用指针引用数组有以3 种形式: p+n 与a+n 表示数组元素an 的的址, *p+n 与 *a+n 表示数组元素an 。 pn=*p+n ,都表示数组元素 an 。选项 A 、B 没有这种引用形式。选项C, *p+5 是引用数组的第6 个元素, 而数组一共有5 个元素,显现越界。选项D , *a+2 引用数组的第3 个元素。8、设有以下说明,就不正确的表达式()union unint a。char b。float c 。arr 。A. arr 所占的内存长度等于成员c
7、 的长度B. arr 的的址和它的各成员的的址都是同一的址C. arr 可以作为函数参数D. 不能在定义 arr 时对它初始化【学问点】共用体【解读】此题主要考查联合体的内存使用:联合体所占用的内存空间为最长的成员所占用的空间, int 占 2 个字节, char 占 1 个字节, float 占 4 个字节,所以 arr 所占的内存长度等于成员 c 的长度: arr 的的址和它的各成员的的址都是同一的址。不能直接对arr 赋值,即不能在定义 arr 时对它初始化: arr 也不行以作为函数参数。9、以下说法正确选项()。A. 宏定义是 C 语句,要在末行加分号可编辑资料 - - - 欢迎下载
8、精品名师归纳总结B. 可以使用 #undefine 提前终止宏名的使用C. 在进行宏定义时,宏定义不能嵌套D. 双引号中显现的宏名也要进行替换【考点】宏替换,文件包含(带参数的宏定义和不带参数的宏定义,中止宏定义)【解读】此题考查宏的使用规章:字符替换格式:#define 标识符字符串,行末不加分号。双引号中显现的宏名不替换。假如提前终止宏名的使用,程序中可以使用#undefine 。在进行宏定义时,宏定义能层层置换,能够嵌套。E. struct achar number100 。int age。float p6 。 。定义一个数组: struct a number10 。假定文件已正确打开,
9、不能正确的从文件中读入10 名工人数据到数组b 中的是( )A.freadb,sizaeofstruct a,10,fp 。B.fori=0 。i10 。i+ freadbi,sizeofstruct a,1,fp 。C.fori=0 。i10 。i+ freadb+i,sizeofstruct a,1,fp 。D.fori=0 。i5 。i+=2 freadb+i,sizeofstruct a,2,fp 。【考点】文件【解读】数据块输入/ 输出函数的调用格式为:freadbuffer,size , count , fp ,其中: “buffer ”是一个指针,对于fread 来说,它是读入数
10、据的存放的址。“size”是要读写的字 节数。 “ count”是要进行读写多少个size 字节的数据项。 “ fp”是指文件型指针。选项B 中 bi 是一个数组,不是指针,需改为&bi 。二:填空题1、/* 请补充函数proc ,该函数的功能是:把ASCII 码为偶数的字符从字符串str 中删除, 结果仍旧储存在字符串str 中,字符串 str 从键盘输入,起长度作为参数传入函数 proc 。例如:输入 verybook, 输出eyook*/#include #include #define M 80int i,j 。j=0。void procchar str,int nfori=0 。 i
11、n 。i+可编辑资料 - - - 欢迎下载精品名师归纳总结strj=0 。void mainifstri%2.=0strj+=stri 。可编辑资料 - - - 欢迎下载精品名师归纳总结int i=0,strlen=0 。char strM 。systemCLS 。printfnInput a string:n。getsstr。whilestri.=0strlen+。i+ 。procstr,strlen 。printfn*display string *n。putsstr。4、以下程序运行后的输出结果是()#include void mainint a。a=intdouble3/2+0.5+i
12、nt1.99*2。printf%dn,a 。【解读】由于3/2 的结果等于 1,再进行强制类型转换为双精度型,其值等于1.0,再加上0.5 等于 1.5。对于 int1.99*2 来说,先把1.99 进行类型转换为整型,得到1,再乘以 2,得到 2,再与前面的 1.5 相加等于 3.5,再进行整型转换得到3。5、以下程序段是从键盘输入的字符中统计小写字母的个数,用换行符终止循环。请填空int n=0,c 。c=getchar 。whilec.= n。if n+。可编辑资料 - - - 欢迎下载精品名师归纳总结【解读】小写字母在内存中以ASCII 的形式存入,且从a 到 z 一次增加,所以直接用
13、cz判定从 a 到 z 的字母, c.= 判定用换行符终止循环6、4、下面程序的功能是依据近似公式: 2/6 1/12+1/22+1/32+ +1/n2, 求 值。#includedouble pilong ndouble s=0.0。 long i 。fori=1 。 i=n 。 i+ s=s+ 。return 。【解读】答案:1.0/floati*i sqrt6*s7、下面程序通过指向整型的指针将数组a34的内容按行列的格式输出,请给printf 填入适当的参数,使之通过指针p 将数组元素按要求输出。#includeint a34=1,2,3,4,5,6,7,8,9,10,11,12,*p
14、=a 。 mainint i,j 。fori=0 。 i3 。 i+ forj=0 。 j4 。 j+ printfM , 。【答案】 *p+4*i+j【注释】 p 是一个一级指针,赋值后储存二维数组a 的首的址 ,做加法运算加1 时,实际的址增加一个它所指向的数据类型的长度。在C 语言中,多维数组在运算机中是按行储备的,所以在此题中要通过指针拜访二维数组中的数据,必需将二维下标转换为一维下标。7、编程题1、将一个正整数分解质因数。例如:输入90,打印出 90=2*3*3*5 。程序分析:对n 进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1) 假如这个质数恰等于n,就说明分
15、解质因数的过程已经终止,打印出即可。(2) 假如 nk ,但 n 能被 k 整除,就应打印出k 的值,并用 n 除以 k 的商 ,作为新的正整数你可编辑资料 - - - 欢迎下载精品名师归纳总结n,重复执行第一步。(3) 假如 n 不能被 k 整除,就用 k+1 作为 k 的值,重复执行第一步#include stdio.h#include conio.h mainint n,i 。printfnplease input a number:n。scanf%d,&n 。printf%d=n,n 。fori=2 。 i=a&c=A&c=0&c=9digit+ 。else others+。printfall in all:char=%d space=%d digit=%d others=%dn,letters, space,digit,others。getch。可编辑资料 - - - 欢迎下载精品名师归纳总结可编辑资料 - - - 欢迎下载