一、选择题
1.C语言中,复合语句的构成是将一系列语句置于()。
A)begin与end之间B)一对圆括号”()”之间
C)一对圆括号”{}”之间D) 一对圆括号”[]”之间
2.C语言的字符型数据在内存中的存储形式是()。
A)原码B)补码C)反码D)ASCII码
3.下面关于C语言变量的叙述中,错误的是()。
A)可以用const关键字定义变量B)在C程序中,SUM和sum是不同的变量
C)变量名必须由字母或下划线开头D)变量的类型确定了变量的取值范围
4.若有定义:int i=3,k;则语句k=(i--)+(i--);运行后k的值是()。
A)4 B)5 C)6 D)7
5.若已定义:int a=5;float b=63.72;以下语句中能输出正确值的是( )。
A)printf(“%d %d”,a,b); B)printf(”%d %.2f”,a,b);
C)printf(”%.2f %.2f”,a,b); D)printf(”%.2f %d”,a,b);
6. C语言中,能正确表示条件10 A)10 7. 在下列运算符中,优先级最高的运算符是 ( ). A)<= B)!= C)! D)|| 8. 下面关于switch语句的叙述中,错误的是()。 A)case后面的表达式可以是关系表达式 B)switch语句是多分支选择语句 C)每一个case后面的值必须互不相同,否则会出现互相矛盾的现象 D)在执行一个case分支后,可用一个break语句使流程跳出switch语句 9.以下程序段执行后变量sum的值为()。 int i,j=1,sum=0; for(i=1;i<=3;i++) {sum+=j; j++;} A)5 B)3 C)6 D)4 10.下面关于数组的叙述中,正确的是()。 A)数组必须先定义,然后使用B)定义数组时,可不加类型说明符 C)定义数组后,可通过赋值运算符”=”对该数组名直接赋值D)在数据类型中,数组属基本类型11.以下程序段运行后s的值是()。 int a[3][3]={1,2,3,4,5,1,2,3,4}; int i,j,s=1; for(i=0;i<3;i++) for(j=i+1;j<3;j++) s*=a[i][j]; A)6 B)120 C)24 D)480 12.已有定义:char str[15]={”university”},str2[15];则以下语句中正确的是()。 A)str2=str1; B)str2=”college”; C)scanf(”%s”,&str2); D)printf(”%s”,str1); 13. 下面程序的输出结果是()。 fun(int x,int y) {int z; z=(x return (z);} main() { int a=10,b=6; printf(“%d\n”,fun(a,b)); } A)4 B)16 C)10 D)6 14.下面程序的输出结果是() #define ADD(x) x+x main() {int m=1,n=2,k; k=ADD(m+n)*3; printf(”%d”,k);} A)9 B)10 C)12 D)18 15.若有定义int a[2][3],*p=a;,则以下不能表示数组元素a[1][2]的是()。 A)*(a[1]+2) B)*(p[1]+2) C)p[5] D)*(p+5) 16.下面程序段的运行结果是() int x[]={2,3,4,5,6,7},*p=x; int i,s=0; for(i=1;i<6;i+=2) s+=*(p+i); printf(”%d”,s); A)27 B)25 C)12 D)15 17.设有如下语句: struct student { int num; int age; }; struct student stu[3]={{101,18},{102,21},{103,19}}; struct student *p=stu; 则下面表达式的值为102的是()。 A)(p++)-->num B)(p++)-->age C)(*p).age D) (*++p).num 18. 若有如下定义, struct link {int data; struct link *next; }*head,*p; 并已建立如下图所示的链表结构,指针p和q分别指向图中所示结点: … 则不能将指针q所指的结点连接到链表末尾的程序段是()。 A)q->next=NULL;p=p->next;p->next=q; B)p=p->next;q->next=p->next;p->next=q; C)p=p->next;q->next=p;p->next=q; D)p=(*p).next;(*q).next=(*p).next;(*p).next=q; 19.若有以下类型说明,则()是正确的叙述。 typedef union {charstr[2]; int i; }sp; A)sp是一个共用体变量B)sp是一个共用体类型名 C )union sp 是共用体类型名 D )typedef union 是共用体类型名 20.对下面程序正确的描述是( )。 #include main() {int i; FILE *fp; if((fp=fopen(“test.dat ”,”rb+”))!=NULL) {i=fgetc(fp);i=i+1;} fseek(fp,0,SEEK_SET); fputc(i,fp); fclose(fp); } A) 将文件中第一个字节的内容加1并重新写入到第一个字节 B) 将文件中第一个字节的内容加1并写入到第二个字节中 C) 以只读方式打开文本文件test.dat D) 以只读方式打开二进制文件test.dat 二、改错题(共2小题,每题10分) 1.程序cmody101.c ,其功能是求计算如下所示的数学表达式: 2222.35.62.35.62.35.6 8.28.28.2a a b b c c s a b c -+-+-+=+-+++ 如:输入a,b,c 三个值:6,3,2 则输出:s=2.16 #include void main() {/**/ float a,b,c; /**/ printf(”\nPlease input a,b,c ”); /**/ scanf(”%f,%f,%f ”,a,b,c);/**/ /**/ s=F(a,b,c); /**/ printf(”\ns=%.2f\n ”,s); getch(); } 2.程序cmody102.c 其功能是实现打印出所有的“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。 #include void main() {int f,s,t,n; printf(”\n The list is: \n ”); for(n=100;n<1000;n++) {f=n%10; s=(n%100)/10; /**/ t=n%100; /**/ /**/ if(t*t*t+s*s*s+f*f*f=n)/**/ printf(”%d ”,n); getch(); } 三、填空题(共3小题,每题8分) 1.补充程序Ccon101.c ,该程序的功能是计算三个学生的总成绩和平均成绩,其中三个学生的成绩存储在 一个结构体数组中。 main() {struct stu {char name[10]; float score;}; /**/ /**/ stu[3]={”Mary”,76,”John”,85,”Tom”,81}; int i=0; float total=0,aver=0; while(i<3) {total=total+ /**/ /**/; i++;} aver=total/3; printf(”\ntotal=%.2f,aver=%.2f”,total,aver); getch(); } 2.补充程序Ccon102.c,该程序的功能是找出数组中的最小数min1和次最小数min2。 main() {int i,a[10]={9,26,35,8,6,19,69,3,5,95}; int min1,min2; i=0; min1=a[0] min2=a[0]>a[1]?/**/ /**/ for(i=2;i<10;i++) {if(a[i] {min2=min1;min1=a[i];} else if(a[i] /**/ /**/ } printf(“min1=%d,min2=%d\n”,min1,min2); getch(); } 3.补充程序Ccon103.c,使其实现用递归算法求平方根。求平方根的迭代公式如下: #include main() {double x,y; /**/ /**/ printf(”Please input x:\n”); scanf(”%lf”,&x); y=mysqrt(x,1.0); printf(”The sqrt of %f=%f\n”,x,y); getch(); } double mysqrt(double a,double x0) {double x1,y; x1=/**/ /**/ if(fabs(x1-x0)>0.00001) y=mysqrt(/**/ /**/); else y=x1; return(y);} 1.打开程序cprog101.c ,完成其中的fun()函数,该函数的功能是:根据输入的x 和n 的值,计算 ()()() 21(1.0 2.0,010)1n n x f x x n n n +=≤≤<≤+,将计算结果存入数组元素a[0]中,并将该计算结果的小数部分存入a[1]中。 #include void fun(double a[],double x,int n) {/**/ /**/ } void main() { int n; double a[2],x; printf (”\nPlease enter x,n:”); scanf(”%lf,%d ”,&x,&n); while(x<1.0||x>2.0||x<0||x>15) { printf(”\nInvaid data (1.0<=x<=2.0,0 scanf(”%lf,%d ”,&x,&n);} fun(a,x,n); printf (”\nResult:a[0]=%f,a[1]=%f ”,a[0],a[1]); getch(); } 2. 打开程序cprog102.c ,完成其中的fun()函数,该函数的功能是:将已按升序排列好的数组a 和已按降序排列好的数组b 中的所有元素按降序存入数组c 中。 #define N 6 #define M 9 void fun(int a[],int b[],int c[]) { /**/ /**/ } main() {int a[N]={2,5,8,10,18,24},b[M]={96,88,70,36,24,18,11,10,2}; int c[N+M],n; fun(a,b,c); printf(”The result is:”); for(n=0;n getch(); } 一、选择题 1.C 2.D 3.A 4.C 5.B 6.D 7.C 8.A 9.C 10.A 11. 答案1 12.D 13.A 14.B 15.B 16.D 17.D(*++p).num18.C 19.B 20.A 二、改错题 1. float a,b,c,s; scanf(“%f,%f,%f”,&a,&b,&c); s=F(a)+F(b)+F(c); 2. t=n/100; if(t*t*t+s*s*s+f*f*f==n) 三、填空题 1.struct stu stu[i].score 2. a[0]:a[1]; min2=a[i]; 3. double mysqrt(double,double); (x0+a/x0)/2.0; a,x1 四、编程题 1.a[0]=(2*n+1)*pow(x,n)/(n*(n+1)); a[1]=a[0]-(int)a[0]; 2.int i,j,k=0; for(i=0,j=M-1;i if(a[i] else {c[k++]=b[j];j--;} 二级(C语言程序设计)上机题汇总 一、程序调试题 (一)程序填空 练习一: /*该程序功能:对x=1,2,。。。。。,10,f(x)=x*x*-5*x+sin(x)的最大值。*/ #include void Dec2Bin(int m) { int bin[32],j; for(j=0;m!=0;j++) { bin[j]= __m%2___; m=m/2; } for(;j!=0;j--) printf("%d", ____bin[j-1]_ _____ ); } void main() { int n; scanf("%d",&n); Dec2Bin(n); } 练习四: /*该程序功能:输入数组x[7],调用函数f,去除数组中的负数,输出结果为:1 3 4 6*/ #include 二级C语言试题 一、判断题(2×8=16分) 1、printf()函数总是从新行的起始位置开始打印。( F ) 2、所有的变量在使用前都必须予以申明。(F) 3、在申明变量时必须给出变量的类型。(T) 4、C语言认为变量number和NuMbEr是相同的。( F) (F) 5、打印三行输出的C语言程序必须用三条printf语句。 6、求余运算符%只能用于两个整数操作数。(T) 7、switch选择结构中必须有default子句。(F) 8、如果x>y或ay&&a { int a; float b; a=4; b=9.5; printf("a=%d,b=%4.2f\n",a,b); } 程序运行结果:a=4,b=9.50 A. a=%d,b=%f\n B. a=%d,b=%f C. a=4,b=9.50 D. a=4,b=9.5 5. 若有以下说明语句: char s=’\\\092’; 则下面哪一项是正确的. A. 使s的值包含2个字符 B. 说明语句不合法 C. 使s的值包含6个字符 D. 使s的值包含4个字符 6.若k,g均为int型变量,则以下语句的输出为哪一项? int k,g; k=017; g=111; printf("%d,",k); printf("%x\n",g); 安徽农业大学经济技术学院 《C 语言程序设计》模拟试卷(A) 所有答案写在答题卡上,否则不得分 一、单项选择题(每题1分,共30分) 1.以下选项中叙述正确的是________。 A )C 语言程序总是从第一个定义的函数开执行 B )在 C 语言程序中,被调用的函数必须在main()函数中声明 C )C 语言程序总是从main()函数开始执行 D )C 语言程序中的main()函数必须放在程序的开始部分 2.C 语言程序的三种基本结构是顺序结构、选择结构和________结构。 A )循环 B )递归 C )转移 D )嵌套 3以下选项中不属于C 语言的基本数据类型的是________。 A )int B )double C )char D )bool 4.以下选项中正确的C 语言标示符是________。 A)2b B )x_1 C )a@b D)3#h 5.设C 语言中,一个int 型数据在内存中占2个字节,则unsigned int 型数据的取值范围为________。 A )0~255 B )0~32767 C )0~65535 D )0~2147483647 6.以下选项中,和语句k=n++;等价的是________。 A )k=n,n=n+1; B )n=n+1,k=n; C )k=++n; D )k=n+1; 7.已知:int i=3,j=2;,则执行语句j*=i+2;printf("%d",j);后,输出结果是________。 A )8 B )10 C )12 D )14 8.已知:int a=2,b=3,c;,执行语句c=(a=2,b=2);后,c 的值是________。 A )2 B )3 C )4 D )5 9.已知:int x,y;float z;,若要给变量x,y,z 输入数据,以下正确的输入语句是________。 A )scanf("%d,%d,%d",x,y,z); B )scanf("%d,%d,%f",&x;&y;&z); C )scanf("%d,%d,%f",&x,&y,&z ); D )scanf("%2d,%2d,%3.2d",x;y;z ); 10.华氏温度f 和摄氏温度c 的关系是)32(9 5-= f c 。已知:float c,f;,由华氏温度f 求摄氏温度c 的不正确的赋值表达式是________。 A )c=5/9(f-32) B )c=5.0/9*(f-32) C )c=5*(f-32)/9 D )c=(float)5/9*(f-32) 11.一个C 程序中要调用sqrt()函数时,应在程序中包含的头文件是________。 A )stdio.h B )math.h C )string.h D )stdlib.h 12.已知:char c='a';,则执行语句printf("%c",c-32);后输出结果是________。 A )A B )65 C )97 D )出错 13.能正确表示逻辑关系“a ≥5或a ≤-1”的C 语言表达式是________。 A )a>=5.or.a<=-1 B) a>=5.and.a<=-1 C) a>=5&&a<=-1 D )a>=5‖a<=-1 1 2009年9月全国计算机等级考试二级笔试 试卷 1)下列数据结构中,属于非线性结构的是 A )循环队列 B) 带链队列 C) 二叉树 D )带链栈 2)下列数据结果中,能够按照“先进后出”原则存取数据的是 A) 循环队列 B) 栈 C)队列 D)二叉树 3)对于循环队列,下列叙述中正确的是 A )队头指针是固定不变的 B )队头指针一定大于队尾指针 C )队头指针一定小于队尾指针 D )队头指针可以大于队尾指针,也可以小于队尾指针 4)算法的空间复杂度是指 A )算法在执行过程中所需要的计算机存储空间 B )算法所处理的数据量 C )算法程序中的语句或指令条数 D )算法在执行过程中所需要的临时工作单元数 5)软件设计中划分模块的一个准则是 A) 低内聚低耦合 B) 高内聚低耦合 C) 低内聚高耦合 D) 高内聚高耦合 6)下列选项中不属于结构化程序设计原则的是 A) 可封装 B) 自顶向下 C) 模块化 D) 逐步求精 7)软件详细设计产生的图如下: 该图是 A) N-S 图 B) PAD 图 C) 程序流程图 D) E-R 图 8)数据库管理系统是 A )操作系统的一部分B) 在操作系统支持下的系统软件C) 一种编译系统 D) 一种操作系统 9)在E-R 图中,用来表示实体联系的图形是 A) 椭圆图B) 矩形C) 菱形D) 三角形 10)有三个关系R ,S 和T 如下: 其中关系T 由关系R 和S 通过某种操作得到,该操作为 A) 选择 B) 投影 C) 交 D) 并 11)以下叙述中正确的是 A )程序设计的任务就是编写程序代码并上机 B )程序设计的任务就是确定所用数据结 构 C )程序设计的任务就是确定所用算法 D )以上三种说法都不完整 12)以下选项中,能用作用户标识符的是 A )void B )8_8 C )_0_ D )unsigned 13)阅读以下程序 #include 2009年3月二级C语言笔试真题((1)—(10)每小题2分,(11)—(50)每题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)下列叙述中正确的是 A)栈是“先进先出”的线性表 B)队列是“先进先出”的线性表 C)循环队列是非线性结构 D)有序性表既可以采用顺序存储结构,也可以采用链式存储结构 (2)支持子程序调用的数据结构是 A)栈B)树C)队列D)二叉树 (3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是 A)10B)8C)6D)4 (4)下列排序方法中,最坏情况下比较次数最少的是 A)冒泡排序 B)简单选择排序 C)直接插入排序 D)堆排序 (5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是 A)编译软件 B)操作系统 C)教务管理系统 D)汇编程序 (6)下面叙述中错误的是 A)软件测试的目的是发现错误并改正错误 B)对被调试的程序进行“错误定位”是程序调试的必要步骤 C)程序调试通常也称为Debug D)软件测试应严格执行测试计划,排除测试的随意性 (7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是 A)提高耦合性降低内聚性有利于提高模块的独立性 B)降低耦合性提高内聚性有利于提高模块的独立性 C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度 (8)数据库应用系统中的核心问题是 A)数据库设计 B)数据库系统设计 C)数据库维护 D)数据库管理员培训 (9)有两个关系R,S如下: 由关系R通过运算得到关系S,则所使用的运算为 A)选择B)投影C)插入D)连接 (10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性B)键C)关系D)域 (11)以下选项中合法的标识符是 A)1-1B)1—1C)-11D)1-- (12)若函数中有定义语句:intk;,则 A)系统将自动给k赋初值0 B)这时k中值无定义 C)系统将自动给k赋初值-1 D)这时k中无任何值 (13)以下选项中,能用作数据常量的是 A)o115B)0118C))115L (14)设有定义:intx=2;,以下表达式中,值不为6的是A)x*=x+1 B)x++,2*x C)x*=(1+x) 试卷编号:8156 所属语言:C语言 试卷方案:C语言201006模拟 试卷总分:100分 共有题型:5种 ━━━━━━━━━━━━━━━ 一、判断共10题(共计20分) ━━━━━━━━━━━━━━━ 第1题(2.0分)题号:1225 在给变量命名时,C语言区分大小写字母,即认为Name和name不是同一个变量. 答案:Y 第2题(2.0分)题号:1279 循环结构while、do while、for不可以互相嵌套. 答案:N 第3题(2.0分)题号:1140 链表中的任何一个结点,必然要包括一个指针域. 答案:Y 第4题(2.0分)题号:1265 在书写C程序时,一行内只能写一条语句,一条语句也不能写在多行上. 答案:N 第5题(2.0分)题号:1280 C语言程序中用到的所有变量必须在使用之前进行定义. 答案:Y 第6题(2.0分)题号:1269 若定义int a[4]={1,2,3,4};若超界引用a[4]则编译时不报错. 答案:Y 第7题(2.0分)题号:19 C语言本身不提供输入输出语句,输入和输出操作是由函数来 实现的。 答案:Y 第8题(2.0分)题号:11 通过return语句,函数可以带回一个或一个以上的返回值。 答案:N 第9题(2.0分)题号:24 对于数值型数组,C语言中只能逐个引用数组元素而不能一次引用整个数组。答案:Y 第10题(2.0分)题号:33 int i,*p=&i;是正确的C说明。 答案:Y ━━━━━━━━━━━━━━━━━ 二、单项选择共15题(共计30分) ━━━━━━━━━━━━━━━━━ 第1题(2.0分)题号:87 C语言源程序的基本单位是()。 A:过程 B:函数 C:子程序 D:标识符 答案:B 第2题(2.0分)题号:110 C语言中,char类型数据占()。 A:1个字节 B:2个字节 C:4个字节 D:8个字节 答案:A 第3题(2.0分)题号:112 下列程序的输出结果是()。 main() {char c1=97,c2=98; printf("%d %c",c1,c2); } A:97 98 B:97 b C:a 98 D:a b 答案:B 第4题(2.0分)题号:170 关于return语句,下列正确的说法是()。 一、选择题 1.结构化程序设计的三种基本结构是()。 A)函数结构、分支结构、判断结构B)函数结构、嵌套结构、平行结构 C)顺序结构、分支结构、循环结构D) 分支结构、循环结构、嵌套结构 答案C:常识,记下来。 2.以下()是正确的浮点数。 A)e3 B).62 C)2e4.5 D)123 答案:B,A错,e前要有整数,C错,e后要为整数,D是整形数据。 3.若有定义:int x=2,y=3;float i;,则以下符合C语言语法的表达式是()。 A)x=x*3=2 B)x=(y==1) C)i=float(x) D)i%(-3) 答案:B,A错,赋值号左边不能是表达式,C错,强制转换要括号,D错,不能用浮点型数据求余数 4.若有定义:int a,b;则表达式(a=2,b=5,a*2,b++,a+b)的值是()。 A)7 B)8 C)9 D)10 答案:B,注意a*2并不影响a,b++则让b变成了6,最后a+b为2+6=8 5.已有如下定义和输入语句 int a,b; scanf(“%d,%d”,&a,&b); 若要求a、b的值分别为10和20,正确的数据输入是()。 A)10 20 B)10,20 C)a=10,b=20 D)10;20 答案:根据题目scanf的格式,有逗号,没赋值号,所以答案C。 6.若有定义:int x=3,y=4,z=5:则值为0的表达式是()。 A)’x’&&’y’B)x<=y C)x||y+z&&y-z D)!((x 一.单项选择题 1.一个C语言源程序由一个或多个( D )组成。 A.子程序B.过程C.函数D.主函数 2. 下列定义变量的语句中错误的是( C )。 A.int _int B.double int_1 C.char For D.float US$ 3.以下语句有语法错误的是( B )。 A.printf("%d",0xabc); B.printf("%f",1.234e2.0); C.printf("%d",057); D.printf("%c",'\\'); 4.若有定义int m=2,n=2;执行语句(m=0)&&(n=3);后m和n的值分别为( D )。 A.2 2 B.0 3 C.2 3 D.0 2 5.若有定义int k=4,a=3,b=2,c=1;则表达式kb) c=a,a=b,b=c; B.if(a>b){c=a,a=b,b=c;} C.if(a>b) c=a;a=b;b=c; D.if(a>b){c=a;a=b;b=c;} 10. 若变量已正确定义,要求程序段完成求10!的计算,不能完成此操作的程序段是( B )。 A.for(i=1,fac=1;i<=10;i++) fac*=i; 心之所向,所向披靡 1下面叙述正确的是()。 A.每行最多只能写两条语句 B.程序中必需含有自定义函数 C. main()函数必须位于源程序文件的开头 D. 所有语句都必须以分号";"结束 2下面叙述错误的是()。 A.若一条语句较长,可分写在下一行或多行上 B. 构成C语言源程序的基本单位是语句 C.C源程序中大、小写字母是有区别的 D.一个C源程序可由一个或多个函数组成 3()是关于C语言数据类型的正确叙述。 A.枚举类型不是基本类型 B.数组不是构造类型 C. 变量使用前应定义相应的数据类型 D.不允许使用空类型 4 C源程序中main()函数的位置()。 A.必须位于程序的最前面 B.必须在系统库函数后面 C. 可以在自定义函数后面 D.必须在自定义函数前面 5 C语言的函数体由()括起来。 A. ( ) B.{ } C.< > D.[ ] 6 下面叙述错误的是()。 A. C源程序可由一个或多个函数组成 B. C源程序必须包含一个main()函数 C.一个C源程序的执行是从main()函数开始,直到main()函数结束 D. 注释说明部分只能位于C源程序的最前面 7 ()为正确的用户标识符。 A. 3_row B.max_at C.union D.min-5 8 C语言的基本数据类型包括()。 A.整型、实型、字符型 B.整型、实型、空类型 C.整型、字符型、指针型 D.整型、实型、逻辑型 9 ()为合法的常量。 A. 5,326 B. 3.21E-6.5 C.'b_k' D. 1.23E+8 10 ()为正确的变量名。 A. 5_pro B. case C.else D. pro_5 11 ()为正确的字符常量。 A. 'bcd' B. '\084' C. '@' D.'165' 12 ()为非法的字符串常量。 A.'123' B. "case" C."056" D." " 13 若有定义:int b=-15; 则()为正确的赋值表达式。 A. b+=b*3 B. b=*5 C.*b=6 D. b+10=-5 14 若有定义:int x,a,b; 语句x=(a=2,b=3,a+b); 运行后,x、a、b的值依次为()。 A. 2 3 5 B. 3 2 5 C. 5 2 3 D.5 3 2 15 若有定义:int a,b=5; 语句a=(b/2)+b%2; 运行后,a的值为()。 A. 0 B.3 C.4 D.2 16()语句符合C语言语法。 A. int a=2,b+=a; B. int a=b=2,c=5; C. float x=2.3,b,c; D.float x=3.2,int i,j=6; 17若有定义:int a=3; 语句a+=a-=a*a; 运行后,a的值为()。 A. 0 B. -3 C. -12 D.-6 18若有定义int x=1,y=2,n=3; 则()为正确的表达式。 模拟试题二 一、选择题(本大题30分,每小题2分) 1.C语言中不能用来表示整常数的进制是。 A)十进制B)十六进制C)八进制D)二进制 2.C语言规定标识符由等字符组成。 A)字母数字下划线B)中划线字母数字 C)字母数字逗号D)字母下划线中划线 3.若有如下定义:int a=2,b=3; float x=3.5,y=2.5; 则表达式: (float)(a+b)/2+(int)x%(int)y的值是。 A)2.500000 B)3.500000 C)4.500000 D)5.000000 4.以下表达式: 2+?a?+i*f, 其中i为整型变量,f为float型变量,则表达式的最终数据类型为。 A)int B)float C)char D)double 5.有如下语句: printf(“%s,%5.3s\n”,“COMPUTER”,“COMPUTER”); 执行语句后的最终结果为。 A)COMPUTER ,CMP . B)COMPUTER, CMP. C)COMPU, CMP. D)COMPU, CMP . 6.以下if语句中语法错误的是。 A)if (a>b)printf(“%f”,a); B)if(a>b)printf(“%f”,a); else printf(“%f”,b); C)if(a>b)printf(“%f”,a) D)if(a>b)printf(“%f”,b); else printf(“%f”,b); else printf(“%f”,a); 7.能表示整数x符合下面两个条件的语句是。 (1)“能被4整除,但不能被100整除”.(2)能被4整除,又能被400整除. A)(x%4==0&&x%100!=0)||x%400==0 B)(x%4==0||x%100!=0)&&x%400==0 C)(x%4==0&&x%400!=0)||x%100==0 D)(x%100==0||x%4!=0)&&x%400==0 8.循环语句中的for语句,其一般形式如下: for(表达式1;表达式2;表达式3) 语句 其中表示循环条件的是。 A)表达式1 B)表达式2 C)表达式3 D)语句 9.以数组作为函数的参数时传递的数组的首地址,那么实参数组与形参数组之间的数据传递方式为。 A)地址传递B)单向值传递 C)双向值传递D)随机传递 10.将字符串str2连接到字符串str1中应使用。 A)strcpy(str1,str2) B)strcat(str1,str2) C)strcmp(str1,str2) D)strcat(str2,str1) 11.若有以下定义: int a[10],*p=a; 则*(p+3)表示的是。 A)元素a[3]的地址B)元素a[3]的值 C)元素a[4]的地址D)元素a[4]的值 12.若有如下语句: int *p1,*p2; 则其中int所指的是。 A)p1的类型B)*p1和*p2的类型 C)p2的类型D)p1和p2所能指向变量的类型 二级C语言分类模拟题572 (总分:42.50,做题时间:90分钟) 一、选择题(总题数:30,分数:42.50) 1.以下程序段中,与其他三个功能不同的程序段是______。 (分数:1.00) A.s=0;i=1;for(; ;){s+=i; i++; if(i<=10)break;} √ B.s=0,i=1;for(; i<=10;) {s+=i, i++; } C.s=0;for(i=1;i<=10; i++) {s+=i;} D.for(s=0,i=1;i<=10; s+=i,i++); 解析:[解析] B、C、D选项都表示对1到10进行累加后赋给s,而A中含break语句,循环体只执行一次,结束整个循环过程,因此答案为A选项。 2.以下选项中非法的表达式是 (分数:1.00) A.0<=x<100 B.i=j= =0 C.(char)(65+3) D.x+1=x+1 √ 解析:[解析] 选项D中将表达式的值赋给表达式,在c语言中是不允许给表达式赋值的。 3.有以下程序: #include<stdio.h> main() { int sum,pad,pAd; sum=pad=5; pAd=++sum,pAd++,++pad; printf("%d/n",pad); } 程序运行后的输出结果是______。 (分数:1.00) A.5 B.6 √ C.7 D.8 解析:[解析] C语言区分大小写,pad与pAd是两个不同的变量。首先将5赋值给两个变量,由于赋值运算符的优先级高于逗号运算符,所以计算pAd=+ +sum,此时pAd为6,sum也为6,然后计算pAd+ +,pAd 的值变为7,+ +pad,pad的值变为6,所以选择B选项。 4.有以下程序: # include <stdio.h> main() { int x=011; printf("%d/n",++x); } 程序运行后的输出结果是______。 (分数:1.00) A.12 B.11 C.10 √ 《C语言程序设计》模拟试卷A 一、单项选择题(每题2分,共20分) 1、下列有关C语言的叙述中错误的是(D)。 A) C语句必须以分号结束 B) 任何一个C程序中有且只有一个主函数 C) 复合语句在语法上可被看作一条语句 D) C程序中对数据的任何操作都可由运算符实现 2、以下不能定义为用户标识符的是(C)。 A) MAIN B) _HJ C) 2ong D) LINE1 3、以下能正确定义一维数组的是(C)。 A) int a[5]={0,1,2,3,4,5};B) int a[5]=”012345”; C) char a[ ]=”012345”;D) char a[5]={0,1,2,3,4,5}; 4、执行下列程序段后输出的结果是(C)。 x = 9; while (x > 7) {printf(“*”); x- -; } A) ****B) ***C) **D) * 5、设char str1[10] = “ABCDE”, str2[10] = “xyz”; 则执行语句printf(“%d”, strlen(strcpy(str1, str2))); 后的输出结果是(D)。 解析: strcpy(str1,str2); 后,str1[] 里是"XYZ", Z 后面有字符串结束符 strcpy(str1,str2); 执行后,函数返回的是str1, 因为str1[] 里是新值"XYZ", 而 strlen(strcpy(str1,str2)) 就是strlen(str1的新值),所以得3。 strlen 统计到字符串结束符以前,即,不计入字符串结束符。 A)9B) 8C) 5D) 3 6、若用数组名作为函数调用的实参,则传递给形参的是(A)。 A) 数组的首地址B) 数组第一个元素的值 C) 数组中全部元素的值D) 数组元素的个数 7、在C程序中,若未在函数定义时说明函数类型,则函数默认的类型为(C)。 A)void B)double C)int D)char 8、下面不能正确进行字符串赋值操作的语句是(C)。 A) char s[5]={"ABCD"};B) char s[5];s="ABCD"; C) char *s;s="ABCDEF";D) char *s="ABCD"; 解析:这样理论上的没错的把s指针指向字符串可以改变s指针但不能改变其指向的值正确的应该是这样char s[] = "ABCDEF"; 或char s[8];strcpy(s, "ABCDEF"); 9、设有说明int s[5]={1,3,5,7,9}; int *p=s; 则下列表达式中值为3的是(C)。 A)++p B)++(*p)C) *(++p)D) *(p+=2) 解析: A是把p得地址后移一个int单位长度,即使p指向数组的第二个元素。 B是取得p当前指向的元素值然后加1,即1+1=2; C是先移动p,使其指向第二个元素,然后取得当前指针指向的元素值,即3. D是先使p指向数组的第三个元素,然后去的当前指针指向的元素的值,即5。 10、下面程序的输出结果是(B)。 int m=13; int fun( int x,int y) { int m=3; return( x*y-m); } main( ) { int a=7,b=5; 二级C语言上机编程题技巧 一、技巧的原理 首先使用这个技巧必须了解上机编程题的评分原理。以上机题的第5套编程题为例。二级C语言的上机试题是让我们自己编写某个小程序的子程序来实现题目中的功能。那么考官是怎么样来检查我们编的程序是否正确呢?根据编程题下面这段程序我们就可以看出: 在考生文件夹下存在一个名为in.dat的文件。首先以只读的方式打开in.dat文件,以只写方式打开out.dat文件,若out.dat不存在则自动新建该文件。然后使用fscanf 语句将其中的数据输入到变量a中,再将a当作实参调用我们需要编写的程序。将结果用fprintf语句输入到out.dat文件中。其中.dat为这个文件的扩展名(扩展名有可能被隐藏)。 所以考官不会直接检查我们的程序,只要检查out.dat里的数据是否正确就可以判断我们编的子程序是否正确。因此程序编写题,我们可以只通过修改out.dat里面的答案而不去编写程序就可以拿到满分。 二、使用技巧的条件 当然不是所有的编程题我们都能使用这个技巧的(不过90%的编程题都可以用这个方法)。使用这个技巧必须具备两个条件: 1、编程题是通过我上面讲的方法来检验,说白了就是我们的考生文件夹下面 含有in.dat文件。 2、编程题需要实现的功能我们编程者可以自己想出来程序完成的答案。例如 本题: 它让我们实现实型数据保留两位小数,并对第三位进行四舍五入。那么这个功能我们若知道任一个实数都可以自己计算出结果,那么我们才能将正确答案写在out.dat文件里面。若某程序让你编写子程序实现求取圆周率并精确到小数点后10位这个功能,那么我们就无法背出那么长的数字,因此也没有办法知道结果。那么这种技巧就不能使用。 三、步骤 确定了这个技巧可以使用后,我们就可以开始操作了。一般分为以下几步: 1、建立out.dat文件 上面可以看到我们的考生文件夹中是没有out.dat这个文件的。所以我们需要自己新建。最好的方法就是打开编程题直接编译、链接、执行。这样将程序执行一遍后我们的考生文件夹里就自动生成了我们需要的out.dat文件。(注意:这里生成了out.dat 文件后就不要再运行我们的程序了,因为每运行一次程序就会将程序生成的答案写入out.dat文件中,这样即算我们改成了正确答案,你如果再次运行程序,就会将我们修改的正确结果覆盖掉。) 2、修改答案 江苏省二级C语言考试模拟试题1(注:只有C部分,没有公共基础部分) -、选择题[请用答题卡答题,答案依次填在(21)-(30)答题号内] 21.已知有声明语句int x=8,则下列表达式中,值为2的是(21). A.x+=x-=x B.x%=x-2 C.x>8?x=0:x++ D.x/=x+x 22.以下关于函数的叙述中正确的是(22) A.在函数体中可以直接引用另一个函数中声明为static类别的局部变量的值 B.在函数体中至少必须有一个return语句 C.在函数体中可以定义另一个函数 D.在函数体中可以调用函数自身 23.若有声明语句"int a[10],b[3][3];",则以下对数组元素赋值的操作中,不会出现越界访问 的是(23) A.a[-1]=0 B.a[10]=0 C.b[3][O]=0 D.b[0][3]=0 24.数组和链表都可以用于存储一组彼此有关联的数据,以下说法中不正确的是(24) A.数组占用一块连续的存储区域,链表可能占用若干块不连续的存储空间 B.数组和链表所占用的存储区域均不能在程序运行期间动态地分配 c.数组中的数据可以随机存取或顺序存取,链表中的数据只能顺序存取 D.数组的长度是固定的,链表的长度是不固定的 25.设有定义和声明语句: typedef struct dtype {int a; struct dtype *b; }node; static node x[3]={5,&x[1],7,&x[2],9,'\0'},*prt=&x[0]; 下列选项中,表达式值不为5的是(25) A.x[1].b->a-2 B.ptr->b->a-2 C.(ptr+1)->a-2 D.ptr->a 26.在以下程序中,需要在main函数之后定义-个函数,以下选项中(26)可以用做该函数 的名字 #define p 3.14 int y; main() {int a=1; 函数名(a); ... /*若干执行语句*/ } int 函数名(int x) {return x*x;} A.main B.y C.p D.print 27.若有声明语句"char ch='a',*pc=&ch;",以下语句中有语法错误的是 (27) A.(*pc)++; B.ch+=-'a'+'A'; C.toupper(ch)=ch; D.ch++; 28.已知有语句"FILE *fp;int x=123;fp=fopen("out.dat","w");",如果需要将变量x的值以文 本形式保存到一个磁盘文件out.dat中,则以下函数调用形式中正确的是(28) A.fprintf("%d",x); B.fprintf(fp,"%d",x); 一.选择题 1、()是不正确的。 A、每条语句最后必须有一个分号; B、C源程序可由一个或多个函数组成; C、注释说明只能位于一条语句的后面; D、C源程序的基本组成单位是函数。 2、()是正确的叙述。 A、强制类型转换运算的优先级高于算术运算; B、表达式“m”+“M”是合法的; C、若变量X,Y为整型,则(a+b)++是合法的; D、表达式‘m’*‘n’是合法的; 3、()为正确的变量名 A. k.jeep B. int C.k_5 D. –k15 4、若有定义int m=4321, n=123, k=21; 语句printf( “%4d+%3d+%2d”,m,n,k); 执行后的输出结果是() A、4321432143211231231232121 B、432+123+021 C、432112321 D、4321+123+21 5、若定义int a= -5 , b= -8, c=21,则表达式a>=b|| b 计算机二级C语言上机题库复习小抄 (最新校正,精美排版) 第一套 1.程序填空 程序通过定义学生结构体数组,存储了若干个学生的学号、姓名和三门课的成绩。函数fun 的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大排序)。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 第一处struct student t; 第二处for(i=0;i二级(C语言程序设计)上机题汇总
二级C语言试题(含答案)
C语言模拟试卷A
历年二级C语言笔试真题及答案
全国计算机等级考试二级C语言真题
c语言模拟试题
二级C语言模拟题8详解
C语言模拟试卷
计算机等级考试二级C语言模拟题
C语言模拟试题二
二级C语言分类模拟题572
C语言程序设计模拟试题A(附答案)
二级C语言上机编程题答题技巧
二级C语言考试模拟试题
C语言模拟题
计算机二级C语言上机题库复习小抄(最新校正,精美排版)