《C语言考试题A卷解答.doc》由会员分享,可在线阅读,更多相关《C语言考试题A卷解答.doc(6页珍藏版)》请在三一文库上搜索。
1、学号姓名所在年级、班级注意一、密封线内不准答题。二、姓名、准考证号不许涂改,否则试卷无效。三、考生在答题前应先将姓名、学号、年级和班级填写在指定四、试卷印刷不清楚。可举手向监考教师询问。卷号: A 卷二 OO九 二 O一 O 学年第二学期C 语言程序设计(二) 标答 ( 09gb 电气 123 班、 09gb 通信 12 班用) 一判断题 (共 5 小题,每题 2 分,共 10分 ) 1. C 语言是在 B 语言的基础上发展起来的。 ( T ) 2. 赋值表达式的左值必须为变量或数组。 ( T ) 3. 数组是有序数据的集合,数组中的元素可以是不同的数据类型。 ( F )4. 定义指针变量的
2、* 号表示取指针变量的内容。 ( F )5. 标准输入指针 stdin 是由用户定义的指针,用于为读打开输入文件。 ( F )二单选题 (共 10小题,每题 2 分,共 20分 )1. C 语言上机调试必须经过编辑、编译、等 ( A) 个步骤。A ) (*p). 成员名 B) p-> 成员名 10. FILE 的类型是(A )。A )结构体B )共用体C)结构体变量 .成员名 D )p(成员名 )C)数组型D)指针型填空题共 10 小题,每题2 分,共 20 分 )1. C 语言的块注释,使用(2. 单精度数据类型的长度占(8 )个字节。/* )和( */ )一对符号。4 )个字节,双精
3、度数据类型的长度占3. C 语言 getchar 函数( 没有 )参数,函数的返回值是( 从键盘输入的一 个字符)。A)4 B) 5 C) 6D) 32下列选项中,不属于字符常量的选项为(B )。A)x41 'B) “a”C) a'D) 101'3C 语言包括( C )种控制语句。A)7 B) 8C) 9D) 54在选择结构程序设计中, 条件判断的依据是条件表达式的值为(D)执行语句。A ) TRUEB)FALSEC)0D ) 非 05. 执行循环体时,执行到( D)语句退出循环, 执行循环体外的下一语句。 。A ) NullB) continueC ) exitD )
4、 break6. 数组是有序数据的集合,用数组名和下标表示数组元素,数组名的命名规则与变量名相同,数组名是( C ),A )地址变量B)数据变量C)地址常量7. 下列选项中,不属于函数调用方式的选项为( B A )函数语句B)函数原型C)函数表达式8. 用语句 int a, *p=&a ; 声明的 p 是( A )。 A )指针变量B)指针C)地址常量9. 引用结构体变量中的成员,不正确的引用方法是(D)数据常量)。D)函数参数D)指针变量的值 D )。4. if-else 语句的配对原则是先从第一个 else 开始,找出其上的 if 配成一对,再 找下一个( else )并和其上(
5、没有配对的 if )进行配对。5. 循环语句 for (表达式 1;表达式 2;表达式 3)语句;中表达式 3 的执行次序 是在执行( 循环体 )后,求解(表达式 3),转回求解表达式 2 ,检查终值条 件。6. 二维数组的第( 1 )个下标为行标 ,第( 2)个下标为列标。7. 静态变量存储在( 静态存储)区,自动变量存储在(动态存储)区。8. 指针的运算符中,求地址运算符是( & ),指针运算符是( * )。9. (结构)体的各成员分别单独占用独立的存储单元, (共用)体的成员共享同 一段存储单元。10、根据数据的组织形式, 数据文件分为 ( ASCII )文件和 (二进制) 文件
6、两种。四改错题: (共 5 小题,每题 2分,共 10分 )1. 输入一个浮点数 a 如 3.14159, 把该数精确到小数点后的两位赋给变 量 b,请改下程序中的错误。#include <stdio.h>main( ) /*foundfloat a ,b;scanf(“%d” , a) ;b = int (a *100+0.5)/100.0 ; frintf ( “%f, %fn ”, a, b);/ scanf(“%f ” , &a) ;/ b =(int )(a *100+0.5)/100.0 ;2输出 a,b两个整数,并按 a <= b输出#include &
7、lt;stdio.h>main( )foundint a , b,t ; scanf(“%d,%d”, a, b ) ;if(a > b ) a = b ; b = a; printf( “%d, %d n”,, a, b);printf(/ scanf(“%d,%d”, &a, &b ) ;/ printf(/ if(a > b ) t = a; a = b ;b = a;%d, %d n ”,a ,sizeof( n ) )%d,%d n ”, m.a ,sizeof( m.n ) )3试求 1+2+3+4+5+6+ +100 之和#include <
8、;stdio.h>main( )foundint i , sum = 0 ;for(i=1, i<100, i+)/ for(i=1; i<=100 ; i+)五 . 读程序写结果: (共 5 小题,每题 4 分,共 20 分 )1求带参数的宏代换#include <stdio.h>/ 结果为:(8 )#defineN 4#defineS(x) N*x*xmain( ) inta=1, b=2;printf ( “%d n “, S(a + b) ); sum = + i ;/ sum + = i ;printf ( “Sum = %d n”,sum, );面程序
9、进行浮点运算,请改正程序中的错误4foundvoid func(int x, y)/float func( float x, float y ) return x + y; main() float a=1.1, b = 2.2, c = 3.3, s; s = func(func(a,b),func(b,c); printf("s=%d ", s ) ;/ printf("s = % f ", s ) ;2. 求程序输出的结果。#include <stdio.h> / 输出结果为( 2 ) main( ) int i, j = 0,n=8,
10、p = 0,a8 = 10,3,6,5,4,7,2,8;for ( i = 0;i < n;i + )if( ai<ap ) p = i;printf( "%d",ap);3求函数输出的值。5. 共用体类型与共用体变量定义如下,改正程序中的错误。#include <stdio.h>main()foundunion int a ;struct NODE int data m ; struct NODE * next; n ;int d = 1 ;fun (int p) int d=5;d += p+ ;printf( “%d”,d );main() i
11、nt a = 3 ;fun(a) ;d += a + ; printf( “ %dn ”, d);ch<='9' ) printf( “number”); ch<='Z' ) printf( “Upper”); ch<='z' ) printf( “Litter ”);4阅读共用体程序,写出输出结果。#include <stdio.h> / 输出结果为( 16961 ) main() union char i2 ;short int k; a;a.i0 ='A'; a.i1 = B';prin
12、tf( “ %d n ”,a.k) ;5已知文件 "file.dat" 中存放文本 ”Hello! ”,执行程序后 "file.dat" 中 存放的文本为 ( abc )。#include <stdio.h>main() FILE *fp;fp = fopen("file.dat", "w") fprint ( fp, “abc” ); fclose(fp);六、编程题( 共5小题,每题 4分,共20分 )1、已知半径 r=4;试编程求圆的面积。#include <stdio.h> 运行结果
13、:( ) #define PI 3.1415926int main( ) float r = 4; double s,; s = PI * r * r; printf("s =%f",s,);2、从键盘输入一个字符,试判断该字符是数字number、大写字母 Upper 或小写字母 Litter 。#include <stdio.h>main() char ch;ch=getchar() if( ch>= '0' && if(ch>= 'A' && if(ch>= 'a
14、9; && printf( “n”);3、试编程输出如下的字符图形。#include <stdio.h>main( ) int i, j, n = 5;for(i=0; i<n; i+) for(j=0; j<9-i; j+)printf(" " );for(j=0; j<2*i+1; j+) printf("*");printf("n"); 4、将两个两位数的正整数 a,b 合并形成一个整数放在 c 中, 请编写函数 fun 。合并 的方法是: 将 a 数的十位数和个位数依次放在 c 数
15、的百位和个位上, b 数的十位和 个位数依次放在 c 数的千位和十位上。 ( 例如,a=45 ,b=12,调用该函数后, c=1425 。) include<stdio.h>#include<conio.h>void fun(int a,int b,long *c)*c=(b/10)*10000+(a/10)*100+b%10)*10+a%10;main() int a,b;long c;clrscr()printf( “Input a,b: ”); scanf(%d%d”,&a,&b ” );fun(a,b,&c);ptintf( “The result is:%ldn ” ,c); FILEWUHAN5 、试编写显示命令行上所有命令和参数的程序。例如:输入 BEIJING WUHAN GUANGZOU 则 输 出 BEIJINGGUANGZOU 。 解:用带参数的主函数编制程序如下: #include <stdio.h>int main( int argc, int *argv ) int i=0 ;while (argc) + i ;printf("%sn", argvi);-argc ;