第六届全国信息技术应用水平大赛试题C语言程序设计(全).doc_第1页
第六届全国信息技术应用水平大赛试题C语言程序设计(全).doc_第2页
第六届全国信息技术应用水平大赛试题C语言程序设计(全).doc_第3页
第六届全国信息技术应用水平大赛试题C语言程序设计(全).doc_第4页
第六届全国信息技术应用水平大赛试题C语言程序设计(全).doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

第六届全国信息技术应用水平大赛试题C语言程序设计预赛单选题1、C语言中运算对象必须是整型的运算符是( )。 【答案】C【分数】1分 【选项】A、/B、+C、%D、!=2、假设所有变量均为整型,则执行运算x=(a=2,b=5,b+,a+b)后, x的值是( )。 【答案】B【分数】1分 【选项】A、7B、8C、6D、23、在下列字符序列中,属于C语言合法标识符的是( )。 【答案】B【分数】1分 【选项】A、P12.aB、stud_100C、$water.1D、88sum4、在下列语句选项中,只有一个在功能上与其他三个语句不等价(其中s1和s2表示某个C语句),这个不等价的语句是( )。 【答案】D【分数】1分 【选项】A、if (a) s1; else s2;B、if (!a) s2; else s1;C、if (a!=0) s1; else s2;D、if (a=0) s1; else s2;5、若二维数组定义为amn,则在aij之前的元素个数为( )。 【答案】B【分数】1分 【选项】A、j*m+iB、i*m+jC、i*m+j-1D、j*m+i-16、以下程序的运行结果是( )。void fun(int *n) static int m=2; *n*=m-1; m+=2;void main() static int m=1; int i; for(i=1;it.a2);B、printf(%cn,(*p).a2);C、printf(%cn,p-a3);D、printf(%cn,(*p).t.a2);16、以下程序将输出的字符是( )。#include stdio.hmain() char c; char (*p)3; char s23 =a,b,c,d,e,f; p=&s0; c=*(p1+1); printf(%c,c);【答案】C【分数】1分 【选项】A、bB、dC、eD、f17、以下关于枚举的程序,其运行结果是( )。#include stdio.h main() enum weekday sun,mon,tue=5,wed,thu,fri,sat a,b,c,d; a=sun; b=mon; c=tue; d=wed; printf(%d %d %d %dn,a,b,c,d); 【答案】C【分数】1分 【选项】A、0 0 5 0B、1 2 5 4C、0 1 5 6D、0 1 5 318、设有程序段 char k;while (k0) k+; printf(%dn,k);则程序输出结果为( )。 【答案】C【分数】1分 【选项】A、-127B、256C、-128D、12819、函数调用语句:fseek(fp,-20L,2);的含义是( )。 【答案】C【分数】1分 【选项】A、将文件位置指针移到距离文件头20个字节处B、将文件位置指针从当前位置向后移动20个字节C、将文件位置指针从文件末尾处后退20个字节D、将文件位置指针移到距离当前位置20个字节处 20、以下程序的输出结果为( )。int a=2;int f(int *a) return(*a)+;void main() int s=0; int a=5; s+=f(&a); s+=f(&a); printf(%d %dn,a,s);【答案】C【分数】1分 【选项】A、2 7B、2 10C、3 7D、3 1121、以下程序输出的字符序列是( )。#include stdio.hmain() char a=language,*p; p=a; while(*p!=u) printf(%c,*p-u+U);p+;【答案】C【分数】1分 【选项】A、LANGUAGEB、languageC、LANGD、LANGuage22、以下程序的输出结果是( )。#include int main() char str100=ABCDEFG, *p=str; int i; for(i = 0; *p != 0; p+,i+); printf(%dn,i); return 0;【答案】A【分数】1分 【选项】A、7B、8C、99D、10023、字符串ax44nbcd102a的长度是( )。 【答案】C【分数】1分 【选项】A、12B、17C、9D、1124、以下程序的输出结果是()。main( ) int n; (n=6*4,n+6),n*2; printf(n=%dn,n);【答案】B【分数】1分 【选项】A、30B、24C、60D、4825、以下程序的输出结果是( )。main( ) int w=4,x=3,y=2,z=1;if(xy&!(z=w) printf(%dn,(wx?w:zx?w:zy?z:x); 【答案】A【分数】1分 【选项】A、1B、2C、3D、426、以下程序的输出结果是( )。main()int a=1,b=0; switch(a)case 1: switch (b) case 0:printf(*0*);break; case 1:printf(*1*);break; case 2:printf(*2*);break; 【答案】B【分数】1分 【选项】A、*0*B、*0*2*C、*0*1*2*D、有语法错误 27、以下是求两个正整数的最大公约数的函数fun( ), 下划线处应填入的正确语句为( )。 int fun(m,n) int m,n; int r;if(mn) r=m;m=n;n=r; if(n= =0) return(m); do r=m%n; if (r!=0) m=n;n=r; while (_); return(n); 【答案】A【分数】1分 【选项】A、r!=0B、r=0C、n!=0D、n=028、以下程序的输出结果是( )。main()int a=0,j;for(j=0;j4;j+)switch(j) case 0: case 3:a+=2; case 1: case 2:a+=3; default:a+=5; printf(%dn,a);【答案】D【分数】1分 【选项】A、20B、13C、10D、3629、以下程序功能为输入1个正整数n, 计算并输出s的前n项的和:s=1/2-2/3+3/4-4/5+ (-1)n/(n+1),下划线处应填入的正确语句为()。#include stdio.hvoid main( ) int k, flag=1, n; float s=0; scanf(%d, &n); for (k=1; k=n; k+) s=s+_; flag=-flag; printf(sum=%fn, s);【答案】A【分数】1分 【选项】A、1.0*k/(k+1)* flagB、flag*n/(n+1)C、-k/(k+1)D、1.0*k/(k+1) 30、以下程序的输出结果是( )。main() int i,j,x=0;for (i=0;i2;i+) x+;for(j=0;j3;j+) if (j%2) continue;x+;x+; printf(x=%dn,x); 【答案】B【分数】1分 【选项】A、x=4B、x=8C、x=6D、x=1231、以下程序的输出结果是( )。main( ) char ch25= 6937,8254,*p2; int i,j,s=0; for(i=0;i2;i+)pi=chi; for(i=0;i 0;j+=2) s=10*s+pij- 0; printf(%dn,s);【答案】C【分数】1分 【选项】A、69825B、63825C、6385D、69382532、下列程序片段的输出结果是( )。printf(%dn,strlen(ATSn0l22);【答案】C【分数】1分 【选项】A、l1B、10C、9D、833、在C程序中有如下语句:char *func(int x,int y); 它是( )。 【答案】C【分数】1分 【选项】A、对函数func的定义B、对函数func的调用C、对函数func的原型说明D、不合法的 34、下列程序运行后的输出结果是( )。 fun(int a, int b) if(ab) return(a); else return(b);main() int x=3, y=8, z=6, r; r=fun(fun(x,y), 2*z); printf(%dn, r);【答案】D【分数】1分 【选项】A、3B、6C、8D、1235、有如下程序,该程序的输出结果是( )。 long f(int n) if(n2) return(f(n-2)+f(n-3); else if(n=2) return(2); else return(1); main() printf(%dn,f(5); 【答案】C【分数】1分 【选项】A、2B、3C、4D、536、在C语言中,函数的隐含存储类别是( )。 【答案】C【分数】1分 【选项】A、autoB、staticC、externD、无存储类别 37、以下程序的运行结果是( )。#include stdiohmain() int a=1,2,3,4,5,6,7,8,9,10,11,12; int *p=a+5,*q=NULL; q=p+5; printf(%d %dn,*p,*q);【答案】B【分数】1分 【选项】A、运行后报错B、6 11C、6 12D、5 538、以下选项中,能定义s为合法的结构体变量的是( )。 【答案】B【分数】1分 【选项】A、typedef struct abc double a; char b10; s;B、struct abc double a; char b10; s;C、struct ABC double a; char b10; ABC s;D、typedef ABC double a; char b10; ABC s;39、以下程序运行后的输出结果是( )。 #include struct NODE int num; struct NODE *next; ; main() struct NODE *p,*q,*r; p=(struct NODE*)malloc(sizeof(struct NODE); q=(struct NODE*)malloc(sizeof(struct NODE); r=(struct NODE*)malloc(sizeof(struct NODE); p-num=10; q-num=20; r-num=30; p-next=q; q-next=r; printf(%dn ,p-num+q-next-num); 【答案】D【分数】1分 【选项】A、10B、20C、30D、4040、下列程序的输出结果是( )。struct student int a, b, c; ; main() struct student stu2=2,3,4,5,6,7; int t; t=stu0.a+stu1.b%stu0.c; printf(%d n,t); 【答案】C【分数】1分 【选项】A、0B、1C、4D、541、若a是整型变量,表达式(aa)等价于( )。 【答案】C【分数】1分 【选项】A、aB、1C、0D、242、若以下程序所生成的可执行文件名为filel.exe ,当输入命令行:FILE1 CHINA BEIJING SHANGHAI ,执行该程序时,程序的输出结果是( )。main(int argc,char * argv ) while(argc1) +argv;printf(%s ,*argv);【答案】A【分数】1分 【选项】A、CHINA BEIJING SHANGHAIB、FILE1 CHINA BEIJINGC、C B SD、F C B43、下列选项中属于不正确的赋值语句的是( )。 【答案】D【分数】1分 【选项】A、t;B、k=i=j;C、t1=t2=t3=3;D、t1=1,t2=2;44、若有定义:int a,b;char x,y;并有以下输入数据: 12 13 AaBb(回车)则能给a赋整数12,给b赋整数13,给x赋字符a,给y赋字符b的正确程序段是( )。 【答案】D【分数】1分 【选项】A、scanf(“%d”,&a); scanf(“%d”,&b); x=getchar();y=getchar();B、scanf(“%d%d %c %c”, &a, &b,&x,&y);C、scanf(“%d %d %c %c”, &a,&b,&x,&x,&y,&y);D、scanf(“%d %d %c%c%c%c”,&a,&b,&x,&x,&y,&y);45、在PC16位机环境下,以下程序的运行结果是( )。 main() unsigned int a ;int b=-2;a=b;printf(“%u”,a);【答案】B【分数】1分 【选项】A、-2B、65534C、32768D、-3276846、语句printf(“%dn”,strlen(“xyztxab3”);的输出结果是( )。 【答案】C【分数】1分 【选项】A、9B、11C、7D、847、语句:printf(“%d”,!0);的输出结果是( )。 【答案】A【分数】1分 【选项】A、1B、0C、有语法错误 ,不能执行D、!048、当a=2,b=3,c=4,d=5时, 执行下面一段程序后x的值为( )。if(ad)x=1 ;else if(ac) if(bd)x=2 ; else x=3 ; else x=4 ;else x=5 ;【答案】C【分数】1分 【选项】A、2B、3C、4D、549、若x是int型变量,且有下面的程序片段:for(x=5;x8;x+) printf(x/2)?(“*%d”):(“#%d”),x); 该程序片段的输出结果是( )。 【答案】A【分数】1分 【选项】A、*5*6*7B、#5*6#7*8C、*5#6*7D、*5#6*7#850、有以下程序段: int a=0,b;do scanf(“%d”,&a);b+; while(a!= 10 | bj) 语句共执行的次数是( )。main() int i=0,j=14,k=2,s=0; for(;) i+= k ; if(ij) printf(“%d”,s); break ; s+=i ; 【答案】C【分数】1分 【选项】A、6B、9C、7D、1252、设有数组定义:char array =“123456789”;则数组array所占的空间为( )。 【答案】D【分数】1分 【选项】A、7个字节B、8个字节C、9个字节D、10个字节 53、有以下程序:main() char str 8=“Hello”,“Beijing”,*p=str;printf(“%sn”,p+8);该程序运行后的输出结果是( )。 【答案】B【分数】1分 【选项】A、HelloB、BeijingC、jingD、ijing54、下列函数调用语句中含有( )个参数。func(f1,f2),(f2,f3),(f5,f6,f7) 【答案】A【分数】1分 【选项】A、3B、5C、6D、755、下列程序中函数sort的功能是对a数组中的数据进行由大到小的排序:void sort(int a ,int n) int i,j,t;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(aiaj)t=ai;ai=aj;aj=t;main() int aa10=1,2,3,4,5,6,7,8,9,10 ,i;sort(&aa2,5);for(i=0;iy); printf(“%d ”,(+p)-x); printf(“%d ”,+p-x);【答案】C【分数】1分 【选项】A、20 20 10B、21 60 50C、11 60 61D、31 70 60多选题1、已知int b=2,下列表达式值为1的有( )。 【答案】BCD【分数】2分 【选项】A、b&bB、b|bC、b1D、(b|1)&12、设有说明int k=7,x=12;,则以下语句执行后,x值为0的有( )。 【答案】AC【分数】2分 【选项】A、x %=(k%5);B、x %=(k-k%5);C、x %=k-k/5;D、x =(x%=k)-(k%=5);3、已知有如下程序:void main() int a5=1,2,3,4,5,*b; b=(int*)malloc(sizeof(int); _; printf(%dn,*b);要使程序输出为a2的值,则下列有关函数fun的定义和下划线处对应的fun调用语句正确的有( )。 【答案】CD【分数】2分 【选项】A、void fun(int*s,int*d) *d=*(s+2); 调用: fun(a,&b)B、void fun(int*s,int&d) d=*(s+2); 调用: fun(a,b)C、void fun(int*s,int &d) d=*(s+2); 调用: fun(a,*b)D、void fun(int*s,int *d) *d=*(s+2); 调用: fun(a,&b) 4、函数欲实现交换x和y的值,且通过正确调用返回交换结果,下列选项中不能实现这一功能的有( )。 【答案】BD【分数】2分 【选项】A、funa(int *x, int *y) int *p;*p = *x; *x = *y; *y = *p; B、funb(int x, int y) int t;t = x; x = y; y = t; C、func(int *x, int *y) int p;p = *x; *x = *y; *y = p; D、fund(int *x, int *y) int *p;*x = *x + *y; *y = *x - *y; *x = *x - *y; 5、关于以下运算,说法正确的有( )。 【答案】BD【分数】2分 【选项】A、设有宏定义#define F(N) 2*N,则表达式F(2+3)的值是10B、设int x=4;,则执行语句x += x *= x + 1;后,x的值为40C、设int a, b = 8;,执行a = b2 + 1;后,a的值是33D、设int a34, *p = a1; 该指针变量p指向的元素是a106、已知有定义static int b5, a23=1,2,3,4,5,6;,则以下说法正确的有( )。 【答案】AD【分数】2分 【选项】A、b中元素值为0B、b中元素没有定义,值不确定C、a11=4D、a11=57、已知:int a=1,*p=&a;,则以下表达式值为1的有( )。 【答案】ABC【分数】2分 【选项】A、*pB、p0C、*&aD、*&p8、关于下列程序的输入与输出,下列说法正确的有( )。#include void main() int m,n; printf(Enter m,n); scanf(%d%d,&m,&n); while(m!=n) while(mn)m-=n; while(nm)n-=m; printf(m=%dn,m);【答案】CD【分数】2分 【选项】A、输入mn时,程序将输出1B、输入mn时,程序输出n的值D、输入m或n为0时,程序将陷入死循环 9、若x,y均定义为int型,z定义为double型,以下scanf函数调用语句合法的有( )。 【答案】ABC【分数】2分 【选项】A、scanf(%d%lx,%le,&x,&y,&z);B、scanf(%2d*%d%lf,&x,&y,&z);C、scanf(%x%*d%o,&x,&y);D、scanf(%x%o%6.2f,&x,&y,&z);10、以下叙述正确的有( )。 【答案】ABCD【分数】2分 【选项】A、在C程序中,逗号运算符的优先级最低B、在C程序中,A和a是两个不同的变量C、若a和b类型相同,在执行了赋值a=b后,b中的值不变D、当键盘输入数据时,对于整型变量也可以能输入整型数值、实型数值和字符型数据等 11、break语句的正确用法包括( )。 【答案】AC【分数】2分 【选项】A、无论在任何情况下,都中断程序的执行,终止整个循环B、在多重循环中,只能退出最靠近的那一层循环语句C、对于go语句和if语句构成的循环,不能使用break退出D、可用于循环语句、switch语句和其他语句 12、若已定义的函数有返回值,则以下关于该函数调用的叙述正确的有( )。 【答案】ABCD【分数】2分 【选项】A、函数调用可以作为独立的语句存在B、函数调用可以作为一个函数的实参C、函数调用可以出现在表达式中D、函数可以直接调用函数本身 13、以下说法正确的有( )。 【答案】AC【分数】2分 【选项】A、C语言程序总是从main函数开始执行B、在C语言程序中,要调用函数必须在main()函数中定义C、C语言程序由函数组成,且必须包含main函数D、C语言程序中的main()函数必须放在程序的开始部分 14、下列符号串中,不属于C语言合法标识符的有( )。 【答案】BCD【分数】2分 【选项】A、_1_2_3B、1-2-3C、floatD、12ab15、下列判断不正确的有( )。 【答案】ACD【分数】2分 【选项】A、char *a=“china”;等价于 char *a;*a=“china”;B、char str6=“china”;等价于char str = “china”;C、char s=“china”;等价于char s;s=“china”;D、char c4=“abc”,d4=“abc”;等价于char c4=d4=“abc”;16、下面程序把数组元素中的最大值放入a0中,则在if语句中条件表达式可以是( )。main() int a10=5,2,9,6,7,1,12,8,23,0,*p=a,i; for(i=0;iaB、*pa0C、*p*a0D、*p:*a17、设有如下定义:char *s2=“abcd”,“ABCD”;char *p=s;则下列说法正确的有( )。 【答案】ACD【分数】2分 【选项】A、s数组元素的值分别是“abcd”和“ABCD”两个字符串的首地址B、s数组的两个元素分别存放的是含有四个字符的一维字符数组中的元素C、p是指向指针数据的指针变量D、p中存放的是数组s的首地址 18、以下有关字符串赋值、赋初值的语句正确的有( )。 【答案】BD【分数】2分 【选项】A、char sz240;sz1=“string1”;B、char *sz2;sz1=“string2”;C、char sz40=“string3”;D、char *sz2=“string1”,“string2”;19、若已建立如图所示的单向链表:则下列选项中能将s所指的结点插入到链表尾部,构成新的单项链表的语句组有( )。 【答案】BCD【分数】2分 【选项】A、a=a-link;s-link=a-link;a-link=s-link;B、a=(*a).link;(*s).link=(*a).link;(*a).link=s;C、s-link=NULL;a=(*a).link;(*a).link =s;D、s-link=a-link-link;a-link-link=s; 20、有以下程序段:#include stdio.h#include string.hmain( ) char ss10=1,2,3,4,5; gets(ss);_ printf(%sn,ss); 执行程序时如果输入ABC则输出结果为ABC6789,则下划线处的语句可以是( )。 【答案】ACD【分数】2分 【选项】A、strcat(ss,6789);B、strcpy(ss3, 6789 );C、strcpy(ss, ABC6789 );D、strcpy(&ss3, 6789 );复赛1. 编程解决如下问题(50分)。 有一个数学等式:AB*CD=BA*DC,式中的一个字母代表一位数字,试找出所有符合上述要求的乘积式并打印输出。 2. 编程解决如下问题(50分)。 请在整数n=742683613984中删除8个数字,使得余下的数字按原次序组成的新数最小。要求如下:(1)整数n和删除数字的个数“8”在源程序中完成赋值,程序直接输出运行结果; (2)程序结果输出先后被删除的数字(之间以逗号分隔)和删除后所得的最小数。 (提示:整数n可以以字符数组的方式定义、赋值和处理) 3. 附

温馨提示

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

评论

0/150

提交评论