《上海市计算机二级考试试题C模拟题.doc》由会员分享,可在线阅读,更多相关《上海市计算机二级考试试题C模拟题.doc(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、选择题1、若有以下语句:char x=3,y=6,z; z=yx2; 则z的二进制值是_2、下列C语言的标识符中,合法的标识符为_3、若有定义:struct personint id ; char name20; per,*s=&per; 则以下对结构体成员的引用中错误的是_4、若有定义:int i,j,*pi=&i; 则与i=j等价的比较表达式是_5、若已定义: int x; 则表达式 (x=4*5,x*5),x+25) 的值是 _ 。6、程序段:int num=0; while(numy) z=x; x=y; y=z; printf(“%d,%d,%d”,x,y,z); 后,输出是_8、若
2、有说明:int a34,s; ,则对数组a的元素引用错误的是_9、若x是int类型变量,y是float类型变量,则为了将数据55和55.5分别赋给x和y,则执行语句: scanf(“x=%d, y=%f”,&x,&y,); 时,正确的键盘输入是 _ 填空题1、假定建立了以下链表结构:struct nodeint id ; struct node *next; *head,*p;如下图所示:指针p指向一个新结点,将新结点插入到链表成为头结点的两条C语言语句是【 】2、下列程序的输出结果是_f(int a) int i=0; while (ai=10) printf(“%d ”, ai); i+;
3、main() int a=8,4,10,11,9,20; f(a+1);3、设有说明语句:int a=13, b=6; 则a/b的十进制数值为_4、如果函数不要求带回值,可用_来定义函数返回值为空.5、下列程序的输出结果是_ long fib(int g) switch(g) case 0: return(0); case 1: case 2: return(2); return ( fib(g-1) + fib(g-2) ); main() long k; k = fib(4); printf(k=%ldn, k);6、设有说明语句:int x=3, y=2; 则计算表达式(x=5) | (
4、y=6*x) 后变量y的值是_7、设a,b,c,t为整型变量,初值为a=3,b=4,c=5,执行完语句t=!(a+b)+c-1&b+c/2后,t的值是_8程序填空1,将两个文本文件中字符$之前的内容合并到一个文件中去,其中函数void sub(FILE*all, FILE*f1 ,FILE *f2 )的功能是将文件指针f1,f2所指向的文件中的内容写到文件指针all所指向的文件中; main函数完成如下功能:先打开目标文件,再依次打开源文件,调用sub函数完成文件内容的拷贝。例如三个源文件 f1.txt ,f2.txt, 每个文件的内容分别如下文件名 内容f1 aaa$aaf2 bbb$bb则
5、产生一个新的目标文件fall.txt,包括f1,f2三个文件字符$之前的内容,fall的内容为aaabbb。#include #include main()FILE *f1, *f2,*fall;void sub(_(1)_ );if (fall=fopen(_(2)_ )=NULL) printf(Cannot open file!n);exit(1); if (f1=fopen(f1.txt,r)=NULL | (f2=fopen(f2.txt,r)=NULL) printf(Cannot open file!n);exit(1); else sub(_(3)_ );_(4)_ ;fclo
6、se (f1);fclose(f2);void sub(FILE *all, FILE *f1, FILE *f2)char c;while(c=fgetc(f1)!=$) fputc( c,all);while(c=fgetc(f2)!=$) fputc( c,all);2、有人说,满足公式 p=n*n+n+41 (n是正整数)的p一定是素数,下列程序验证这个说法是错误的。#include int fun(int p) int n; for(n=2;n*n=p;n+) if(p%n=0) _(1)_ ;return 1;main() int n=1,p; do p=n*n+n+41; if(
7、!fun(p) _(2)_ ; printf(“%d是素数 n”,p);while(_(3)_ );printf(“%d=%d*%d+%d+41不是素数 n”,p,n,n,n);3、下面程序的功能是:整型数组a中含N个元素,现将元素位置进行前后交换,使第0个元素与第N-1个元素交换,第1个元素与第N-2个元素交换,以此类推,最后输出交换后的数组元素。#include #define N 8int aN=3,8,5,15,9,7,20,6;main() int i,j,t; for(i=0;iN;i+) printf(%4d,*(a+i); /*输出交换前的元素*/ printf(n); for
8、(i=0;iN/2;i+) j=_(1)_; /*需要交换的元素下标*/ t=*(a+i); _(2)_; *(a+j)=t; for(j=0;jN;i+) printf(%4d,_(3)_); /*输出交换后的元素*/ printf(n);三程序调试题 (2题,4+6=10分)1. 程序调试题1(E_3_1.c)调试要求:下列程序不能得到正确的结果,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*modified*/字样的注释),使其运行能得到正确的结果。将结果(包括E_3_1.c文件和E_3_1.exe文件)保存到目录C:KS中。功能说明:程序功能是输入正整数n(1=n=9),输
9、出n行杨辉三角形。如:输入n=5,则输出如下图形: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 原程序(见C:KSE_3_1.c】#include main( ) static int a99;int i,j,k,n;scanf( %d,&n); for(i=0,in,i+) for(k=0;k18-2*i;k+) printf( ); for(j=0;j=i;j+) if(j=0|j=i) aij=1; else aij=ai-1j-1+aij-1; printf( ); printf(%-3d,aij); printf(t); 2. 程序调试题2(E_3_2.C)调试要求:
10、下列程序有3处错误,请按题中的功能要求,在不改变程序结构(不增加、删除语句,不调整语句顺序)的情况下调试并修改该程序(在所修改语句后加/*modified*/字样的注释),使其运行能得到正确的结果。将结果(包括E_3_2.c文件和E_3_2.exe文件)保存到C:KS目录中。功能说明:程序功能是输入一个字符串(少于80个字符,以回车结束),把字符串中的数字字符(0-9)转换为整数,去掉其他字符,要求定义并调用函数long stol (char*s),s是原字符串。假设不考虑整数数据范围超限的情况。如输入: 3a56bc77rfasefg fg88fg 则输出: 原程序(见C:KSE_3_2.c
11、)】#includelong stol( char *s)long number=0; while(*s!=0) if(*s=0 & *s=9) number=number*10+*s-0 ; s+; return number;main() char s80; gets(s80); printf(number=%d,stol(s);五 编程题(2题,18+18=36分)1编程题1(E_5_1.c)编程要求:请按题中的功能要求,编写程序并能得到正确结果。将结果(包括E_5_1.c文件和E_5_1.exe文件)保存到目录C:KS中。功能说明:函数fun求sum=d+dd+ddd+dd.d(n个d
12、),其中d为1-9的数字。从主函数中输入d和n,调用fun函数,并以sum=XXXXXXX的形式输出结果。如输入d=3,n=4则输出:sum=37022编程题2(E_5_2.c)编程要求:请按题中的功能要求,编写程序并能得到正确结果。将结果(包括E_5_2.c文件和E_5_2.exe文件)保存到目录C:KS中。功能说明:某中学要对新入学的10名学生根据考试成绩分到两个班(class1,class2)中,分班的方法是成绩第1名在class1班,第2名在class2班,第3名在class1班,第4名在class2班,依次类推,。请编写程序,输入这10个学生的编号和成绩,输出如下格式的分班情况:Class1班:编号 成绩; 编号 成绩; Class2班:编号 成绩; 编号 成绩;