ImageVerifierCode 换一换
你正在下载:

练习.docx

[预览]
格式:DOCX , 页数:25 ,大小:33.38KB ,
资源ID:30046871      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30046871.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(练习.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

练习.docx

1、练习 C语言国家二级考试2001年1月一、选择题。(本大题共40个选项,【1】【40】每个选择项1.5分,共60分)1、C语言中,用户能使用的合法标识符是 【1】 。【1】 A) a,b B) -xyz C) fa2 D) 5i void define sort_a x.i a123 s(x) string malloc2、若执行printf(%dn, strlen(anx41)语句其输出结果是 【2】 。【2】 A) 8 B) 7 C) 6 D) 43、若int a, b, c; 则表达式(a=2, b=5, b+, a+b)的值是 【3】 。【3】 A) 7 B) 8 C) 6 D) 24

2、、以下正确的叙述是 【4】 。【4】 A) 在C语言中,main函数必须位于文件的开头 B) C语言每行中只能写一条语句 C) C语言本身没有输入、输出语句 D) 对一个C语言进行编译预处理时,可检查宏定义的语法错误5、若执行以下程序段:int a=1, b=2, m=2, n=2;(m=ab)&+n;则n的值是 【5】 。【5】 A) 1 B) 2 C) 3 D) 46、已知各变量的类型如下:int i=8, a, b;double x=1.42, y=5.2;则以下符合C语言语法的表达式是 【6】 。【6】 A) a+=a-=(b=4)*(a=3) B) a=a*3=2 C) x%(-3)

3、 D) y=float(i)7、以下程序的运行结果是 【7】 。#include main() int m=5; if(m+5) printf(%dn, m); else printf(%dn, m+);【7】 A) 7 B) 6 C) 5 D) 48、以下程序的运行结果是 【8】 。#include main() char c=y; if(c=a&c=v&c=z) c-=21; putchar(c);(将字母改为其后第五个字母,按循环次序)【8】 A) y B) d C) y D) d9、若定义int i; 则以下循环语句的循环执行次数是 【9】 。for(i=2; i=0;) printf

4、(%d, i-);【9】 A) 无限次 B) 0次 C) 1次 D) 2次10、以下程序的运行结果是 【10】 。#include main() int a43= 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12; int *p4, j; for(j=0; j4; j+) pj=aj; printf(%2d,%2d,%2d,%2dn, *p1, (*p)1, p32, *(p3+1);【10】 A) 4, 4, 9, 8 B) 程序出错 C) 4, 2,12,11 D) 1, 1, 7, 511、以下程序的输出结果是 【11】 。#include main() int i=

5、0; while(1) printf(*); i+; if(i3) break; printf(n);【11】 A) * B) * C) * D) *12、若定义a2=1,2,3,4,5,6,7; 则a数组中行的大小是 【12】 。【12】 A) 2 B) 3 C) 4 D) 无确定值13、要使以下程序中t的输出结果是4,则输入a和b应满足的条件是 【13】 。#include main() int s, t, a, b; scanf(%d%d, &a, &b); s=t=1; if(a0) s+=1; if(ab) t=s+t; else if(a=b) t=5; else t=2*s; p

6、rintf(%dn, t);【13】 A) a0并且ab B) a0并且a0并且ab D) ab14、以下程序的运行结果是 【14】 。#include void f(int b) int i=0; while(bi=10) bi+=2; i+; main() int i, a= 1, 5,10, 9,13, 7; f(a+1); for(i=0; i6; i+) printf(%d , ai);(从第一个元素起到大于10为止,各加2)【14】 A) 2 7 12 11 13 9 B) 1 7 12 11 13 7 C) 1 7 12 11 13 9 D) 1 7 12 9 13 715、以下

7、各语句或语句组中,正确的操作是 【15】 。【15】 A) char s5=abcde B) char *s; gets(s); C) char *s; s=abcde; D) char s5; scanf(%s, &s);16、以下C语言中,对函数不正确的描述是 【16】 。【16】 A) 当用数组名作形参时,形参数组改变可使实参数组随之改变 B) 允许函数递归调用 C) 函数形参的作用范围只是局限于所定义的函数内 D) 函数说明必须在主调函数之前17、在循环语句的循环体中,continue语句的作用是 【17】 。【17】 A) 立即终止整个循环 B) 继续执行continue语句之后的循

8、环体各句 C) 结束本次循环 D) 结束本次循环并跳出循环18、以下程序的运行结果是 【18】 。#include main() char *s=xcbc3abcd; int a, b, c, d; a=b=c=d=0; for(; *s; s+) switch(*s) case c: c+; case b: b+; default : d+; break; case a: a+; printf(a=%d,b=%d,c=%d,d=%dn, a, b, c, d);(a=a的个数、b=b,c的个数、c=c的个数、d=非a的个数)【18】 A) a=1,b=5,c=3,d=8 B) a=1,b=2

9、,c=3,d=3 C) a=9,b=5,c=3,d=8 D) a=0,b=2,c=3,d=319、若fp为文件指针,且文件已正确打开,i为long型变量,以下程序段的输出结果是【19】 。fseek(fp, 0, SEEK_END)i=ftell(fp);printf(i=%ldn, i);【19】 A) -1 B) fp所指文件的长度,以字节为单位 C) 0 D) 220、以下程序的输出结果是 【20】 。#include int i;main() int i=1, j=2; fun(fun(i, &j), &j);fun(int a, int *b) static int m=2; i+=

10、m+a; m=+(*b); printf(%d,%dn, i, m); return (m);【20】 A) 3,3 B) 3,3 C) 3,3 D) 3,3 9,4 6,3 9,3 6,421、定义compare(char *s1, char *s2)函数,以实现比较两个字符串大小的功能。以下程序运行结果为-32,选择正确答案填空。#include main() printf(%dn, compare(abCd, abc);compare(char *s1, char *s2) while(*s1&*s2& 【21】 ) s1+; s2+; return *s1-*s2;【21】 A) *s

11、1!=*s2 B) *s1=*s2 C) *s1=*s2 D) s1!=s222、若有以下程序:#include main(int argc, char *argv) while(-argc) printf(%s, argvargc); printf(n);(逆序参数回送)该程序经编译和连接后生成可执行文件S.EXE。现在DOS提示符下键入S AA BB CC回车,则输出结果是【22】 。【22】 A) AABBCC B) AABBCCS C) CCBBAA D) CCBBAAS23、若有定义typedef char STRING255; STRING s; 则s是 【23】 。【23】 A)

12、 字符指针数组变量 B) 字符数组变量 C) 字符变量 D) 字符指针变量24、以下程序的运行结果是 【24】 。#include void fun(char *s);main() static char str=123; fun(str);void fun(char *s) if(*s) fun(+s); printf(%sn, -s); 【25】 A) 3 B) 123 C) 1 D) 3 32 12 12 23 321 1 123 12325、判断以下程序段的结果是 【25】 。#define A 3#define B(a) (A+1)*a).int x;x=3*(A+B(7);【25】

13、 A) 程序错误,不允许嵌套宏定义 B) x=93 C) 语法错误,宏体中不允许带括号 D) x=2126、以下程序的运行结果是 【26】 。#include struct stu int x; int *y;*p;int dt=1,2,3,4;struct stu a4=5, &dt0, 6, &dt1, 7, &dt2, 8, &dt3;main() p=a; printf(%d, (+p)-x); printf(%d, +p-x); printf(%dn, +(*p-y);【26】 A) 6,7,3 B) 6,6,3 C) 6,6,2 D) 5,7,227、以下程序的运行结果是 【27】

14、 。#include void sub(int *x, int y, int z) *x=y-z;main() int a, b, c; sub(&a, 10, 5); sub(&b, a, 7); sub(&c, a, b); printf(%d,%d,%dn, a, b, c);【27】 A) 10,-2,5 B) 10,5,7 C) 10,-2,7 D) 5,-2,728、以下程序的运行结果是 【28】 。#include void abc(char *p) int i, j; for(i=j=0; *(p+i)!=0; i+) if(*(p+i)n) *(p+j)=(p+i); j+;

15、 *(p+j)=0;main() char str=morning; abc(str); puts(str);(保留小于字母n的字母)【28】 A) morig B) morning C) mig D) or29、若有定义char *language=FORTRAN, BASIC, PASCAL, JAVA, C; 则language2的值是【29】 。【29】 A) 一个字符 B) 一个地址 C) 一个字符串 D) 不定值30、以下程序的运行结果是 【30】 。#include main() int a=3, b=2, c=1; int b=5, c=12; c-=b*2; printf(a

16、=%d,b=%d,c=%dn, a, b, c); a+=c; printf(a=%d,b=%d,c=%dn, a, b, c);【30】 A) a=3,b=2,c=-3 B) a=3,b=5,c=2 a=0,b=2,c=-3 a=5,b=5,c=2 C) a=3,b=2,c=1 D) a=3,b=5,c=2 a=5,b=5,c=2 a=5,b=2,c=131、以下程序的运行结果是 【31】 。#include #define DEBUG 0main() int a=10, b=20, c; c=a/b; #ifdef DEBUG printf(a=%d,b=%dn, a, b); #endi

17、f printf(c=%dn, c);【31】 A) a=10,b=20 B) 编译出错 C) a=10,b=20 D) c=0 c=032、以下程序的输出结果是 【32】 。#include main() union long a; int b; char c; m; printf(%dn, sizeof(m);【32】 A) 2 B) 4 C) 1 D) 733、若执行以下程序段int x=3, y=6, z;z=xy2;则z的二进制值是 【33】 。【33】 A) 00011011 B) 00010100 C) 00011000 D) 0000011034、若有以下定义和语句,则对a数组

18、元素地址的正确引用是 【34】 。int a23, (*p)3;p=a;【34】 A) *(p+2) B) p2 C) p1+1 D) (p+1)+235、若执行以下程序段,其运行结果是 【35】 。char c=a, b, 0, c, 0;printf(%sn, c);【35】 A) ab c B) ab C) abc D) ab36、若有int max(), (*p); 为使函数指针变量p指向函数max,正确的赋值语句是【36】 。【36】 A) p=max; B) *p=max; C) p=max(a, b); D) *p=max(a, b);(应为(*p)())37、若有定义int a

19、35, i, j; (且0i3, 0j5),则aij不正确的地址表示是 【37】 。【37】 A) &aij B) ai+j C) *(a+i)+j D) *(*(a+i)+j)38、以下程序的运行结果是 【38】 。#include main() enum aa, bb=5, cc, dde; for(e=bb; e=aa; e-) printf(%d, e); printf(n);【38】 A) 543000 B) 5430 C) 543210 D) 程序出错39、C语言规定,函数返回值的类型由 【39】 所决定。【39】 A) return语句中的表达式类型 B) 调用该函数时的主调函数

20、类型 C) 调用该函数时的形参类型 D) 在定义该函数时所指定的函数类型40、若建立以下链表结构,其指针p,q定义如下:struct node int data; struct node *next;p, q;p,q指向图中所示结点,则能将q所指的结点插入到链表末尾组成单向链表的一组语句是【40】 。p q 10 20 30 NULL(应为*p, *q,除C外都能实现)【40】 A) q-next=NULL; B) p=p-next; p=p-next; q-next=p-next; p-next=q; p-next=q; C) p=p-next; D) p=(*p).next; q-next

21、=p; (*q).next=(*p).next; p-next=q; (*p).next=q;二、请正确填充下面的划线部分,使其完成所要求的功能:(本大题共20个空,每空2分,共40分。请将答案写在答题卡对应栏中,答在试卷上不得分)1、计算sum=1+1/2+1/4+.+1/50的值,并显示出来。#include main() int i=2; float sum=1.0; while(i= 【1】 ) sum+=1/ 【2】 ; i+=2; printf(sum=%fn, sum);2、以下程序是用来统计从键盘输入的一个正整数中各位数字中零的个数,并求各位数字中最大者。例如:1080其零的个

22、数是2,各位数字中最大者是8。#include main() unsigned long num, max, t; int count; count=max=0; scanf(%ld, &num); do t= 【3】 ; if(t=0) +count; else if(maxt) 【4】 ; num/=10; while(num); printf(count=%d,max=%ldn, count, max);3、以下程序用来检查二维数组是否对称(即:对所有i,j都有aij=aji)。#include main() int a44=1,2,3,4, 2,2,5,6, 3,5,3,7, 8,6,

23、7,4; int i, j, found=0; for(j=0; j4; j+) for(i=0; i4; i+) if( 【5】 ) found= 【6】 ; break; if(found) break; if(found) printf(不对称n); else printf(对称n);4、以下程序用来完成数学函数f(x, y)的计算:#include #include main() double x, y, z, f(); scanf(%lf%lf, &x, &y); z=x*y/f( 【7】 ); printf(result=%lfn, z);double f(double a) do

24、uble f1; f1=pow(3, a)+sqrt(1+ 【8】 ); return f1;5、以下程序用来输出字符串。#include main() char *a=for, switch, if, while; char *p; for(p=a; pa+4; p+) printf(%sn, 【9】 );6、以下程序是用来输出如下图形: * #*# *#*#* #*#*#*#*#*#*#*#*#include main() int i, j; for(i=1; i=5; i+) for(j=1; j=5-i; j+) printf( ); for(j=1; j=2*i-1; j+) if

25、printf(*); else printf(#); printf(n); 7、以下程序是用来输入5个整数,并存放在数组中,找出最大数与最小数所在的下标位置,并把两者对调,然后输出调整后的5个数。#include main() int a5, t, i, maxi, mini; for(i=0; i5; i+) scanf(%d, &ai); mini=maxi= 【11】 ; for(i=1; iamaxi) 【13】 ; printf(最小数的位置是:%3dn, mini); printf(最大数的位置是:%3dn, maxi); t=amaxi; 【14】 ; amini=t; prin

26、tf(调整后的数为: ); for(i=0; i5; i+) printf(%d , ai); printf(n);8、以下程序是用来从10到99数字中挑出能被3整除且至少有一位是5的两位数,并打印出所有这样的数及其个数。#include main() int k, m=0; for(k=10; k=99; k+) m+=sub(k); printf(个数为: %dn, m);sub(int k) int a1, a2, n=0; a2= 【15】 ; a1=k/10; if(k%3=0&( 【16】 ) printf(%d , k); return 1; else return 0;9、以下程序是把文件file1.dat中的内容复制到一个名为file2.dat的新文件中。#include main() FILE *fpr, *fpw; if(fpr=fopen(file1.dat, rb)=NULL) exit(0);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1