




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计部内部习题一、填空题若有如下说明,且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 b2占4个字节。共6 个;类型名shmct st不可以通过extem关键字提前引用。2、语句“printf(”abhowareyboun”);”的输出结果是(C)。A. abhowareybouB. abhowareybouC. howareyouD. ahowareybou【解析】“b”格式符表示退格,功能是将它后面的字母把它前面的字母覆盖,导致“b”格式符前面的字母不能输出; “”格式符表示输出单引号字符;“”格式符表示输出反斜线字符。3、 字符串%ABCDEF的长度是(B)A.11B.10C.5D.3【解析】本题涉及字符串最基本的2个概念:字符串的长度是指字符串中字符的个数,但不包括字符串结束符:以反斜杆v开头的特殊字符序列,意思是把反斜杆后面的字符序列转换成特定的含义,而不是原来的含义,不包含在字符串长度之内,连同后面的字符为一个长度;而%也是如此。4、有以下程序#includevoid main()char a30,b30;scanf(%s,a);gets(b);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. how are you? I ok【知识点】考查数组5、有以下程序#includemain()int b33=0,1,2,0,1,2,0,1,2,i,j,t=0;for(i=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、 有以下程序#includemain()int x=1,y=0,a=0,b=0;switch(x)case 1:switch(y)case 0:a+;break;case 1:b+;break;case 2:a+;b+;break;case 3:a+;b+;printf(a=%d,b=%dn,a,b);程序执行的结果是( D )A.a=1,b=0B. a=2,b=2C. a=1,b=1D. a=2,b=1【知识点】选择结构【解析】本题考查了 switch结构的内容。在C语言中程序执行完一个case标号的内容后如果没有break语句控制结构会转移到下一个case继续执行因为case 常量表达式只是起语句标号作用并不是在该处进行条件判断。本题程序在执行完内部switch结构后继续执行了外部switch结构的 case 2分支。最后a和b的值分别为2和17、若有定义int a5,*p=a ;则正确引用数组元素的是( D )A. *&a5B. *a+2C. *(p+5)D. *(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的长度B. arr的地址和它的各成员的地址都是同一地址C. arr可以作为函数参数D. 不能在定义arr时对它初始化【知识点】共用体【解析】本题主要考查联合体的内存使用:联合体所占用的内存空间为最长的成员所占用的空间,int占2个字节,char 占1个字节,float占4个字节,所以arr所占的内存长度等于成员c 的长度:arr的地址和它的各成员的地址都是同一地址;不能直接对arr赋值,即不能在定义arr时对它初始化:arr也不可以作为函数参数。9、 以下说法正确的是( )。A. 宏定义是C语句,要在末行加分号B. 可以使用#undefine提前结束宏名的使用C. 在进行宏定义时,宏定义不能嵌套D. 双引号中出现的宏名也要进行替换【考点】宏替换,文件包含(带参数的宏定义和不带参数的宏定义,中止宏定义)【解析】本题考查宏的使用规则:字符替换格式:#define标识符字符串,行末不加分号;双引号中出现的宏名不替换;如果提前结束宏名的使用,程序中可以使用#undefine;在进行宏定义时,宏定义能层层置换,能够嵌套。10、 struct achar number100;int age;float p6; ;定义一个数组:struct a number10;假定文件已正确打开,不能正确地从文件中读入10名工人数据到数组b中的是( )A. fread(b,sizaeof(struct a),10,fp);B. for(i=0;i10;i+)fread(bi,sizeof(struct a),1,fp);C. for(i=0;i10;i+)fread(b+i,sizeof(struct a),1,fp);D.for(i=0;i5;i+=2)fread(b+i,sizeof(struct a),2,fp);【考点】文件【解析】数据块输入/输出函数的调用格式为:fread(buffer,size,count,fp),其中: “buffer”是一个指针,对于fread来说,它是读入数据的存放地址。“size”是要读写的字节数; “count”是要进行读写多少个size字节的数据项; “fp”是指文件型指针。选项B)中bi是一个数组,不是指针,需改为&bi。二:填空题1、/*请补充函数proc(),该函数的功能是:把ASCII码为偶数的字符从字符串str中删除,结果仍然保存在字符串str中,字符串str从键盘输入,起长度作为参数传入函数proc()。例如:输入verybook,输出eyook*/#include#include#define M 80void proc(char str,int n)int i,j;j=0;for(i=0;in;i+)if(stri%2!=0)strj+=stri;strj=0;void main()int i=0,strlen=0;char strM;system(CLS);printf(nInput a string:n);gets(str);while(stri!=0)strlen+;i+;proc(str,strlen);printf(n*display string *n);puts(str);2、 以下程序运行后的输出结果是( )#includevoid main()int a;a=(int)(double)(3/2)+0.5+(int)1.99*2);printf(%dn,a);【解析】因为3/2的结果等于1,再进行强制类型转换为双精度型,其值等于1.0,再加上0.5等于1.5;对于(int)1.99*2来说,先把1.99进行类型转换为整型,得到1,再乘以2,得到2,再与前面的1.5相加等于3.5,再进行整型转换得到3。3、 下列程序段是从键盘输入的字符中统计小写字母的个数,用换行符结束循环。请填空int n=0,c;c=getchar( );while(c!=n);if( )n+;【解析】小写字母在内存中以ASCII的形式存入,且从a到z一次增加,所以直接用cz判断从a到z的字母,c!=n判断用换行符结束循环4、 4、下面程序的功能是根据近似公式:2/6 1/12+1/22+1/32+ +1/n2,求值。#include double pi(long n) double s=0.0;long i;for(i=1;i=n;i+)s=s+ ;return( );【解析】答案: 1.0/(float)(i*i) sqrt(6*s)5、 下面程序通过指向整型的指针将数组a34 的内容按行列的格式输出,请给printf( )填入适当的参数,使之通过指针p将数组元素按要求输出。#include int a34=1,2,3,4,5,6,7,8,9,10,11,12, *p=a;main() int i,j;for(i=0;i3;i+ ) for(j=0;j4;j+ )printf(M , );【答案】*(p+4*i+j) 【注释】p是一个一级指针,赋值后保存二维数组a的首地址,做加法运算加1时,实际地址增加一个它所指向的数据类型的长度。在C语言中,多维数组在计算机中是按行存储的,所以在本题中要通过指针访问二维数组中的数据,必须将二维下标转换为一维下标。3、 编程题1、将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果nk,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步#include stdio.h#include conio.h
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自营饭店帐务管理制度
- 禁毒经费使用管理制度
- 小学足球对管理制度
- 幼儿园预算管理制度
- 矿区生产资料管理制度
- 封装厂现场管理制度
- 自主仓储仓库管理制度
- 社区建设资金管理制度
- 药品渠道分货管理制度
- 耕地地力资金管理制度
- 2025年中考物理考前押题密卷(哈尔滨卷)(全解全析)
- 2024-2025学年人教新目标英语八年级下册期末综合检测卷(含答案)
- 医院法律、法规培训2024:药事管理与药物治疗指导
- 环境影响评价的国际比较
- 2025届江苏省苏州市英语高三第一学期期末达标检测试题含解析
- 浙江大学《概率论与数理统计》第9章
- 校际教研联合体活动方案及案例
- 车站(助理)调度员技能鉴定理论考试题及答案
- 137案例黑色三分钟生死一瞬间事故案例文字版
- 2024年版《代谢相关脂肪性肝病防治指南》解读1
- 2025年重点高中自主招生考试数学模拟试卷试题(含答案)
评论
0/150
提交评论