教育部人才培养模式 改革和开放教育试点
C语言程序设计A 形成性考核册
学校名称: 学生姓名: 学生学号: 班 级:
希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。
生命赐给我们,我们必须奉献生命,才能获得生命。
C语言程序设计A 形考作业1
姓 名: 学 号: 得 分: 教师签名: 一、选择题:(第1~13小题每题2分,第14~17小题每题3分,共38分)
1. 在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为( )。
A.main B.MAIN C.name D.funtion 2.C语言原程序文件的缺省扩展名为( )。
A.cpp B.exe C.obj D.C 3.由C语言目标文件连接而成的可执行的缺省扩展名为( )。
A.cpp B.exe C.obj D.C
4.程序运行中需要从键盘输入多于一个数据时,各数据之间应使用( )符号作为分隔符。 A.空格或逗号 B.逗号或回车 C.回车或分号 D.空格或回车
5.每个C语言程序的编译错误分为( )类。
A.1 B.2 C.3 D.4 6.设x 和y 均为逻辑值,则x && y为真的条件是( )。
A.它们均为真 B.其中一个为真 C.它们均为假 D.其中一个为假
7.设有语句“int a=12;a+=a*a;”,则执行结束后,a 的值为( )。
A.12 B.144 C.156 D.288 8.x>0 && x<=10的相反表达式为( )。
A.x<=0 || X>10 B.x<=0 && x>10 C.x<=0 || x<=10 D.x>0 && x>10
9.字符串“a+b=12\\n”的长度为( )。
A.6 B.7 C.8 D.9 10.在下列符号常量定义中。错误的定义语句格式为( )。
希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。
生命赐给我们,我们必须奉献生命,才能获得生命。
A.const M1=10; B.const int M2=20; C.const M3 10 D.const char mark=’3’;
11.带有随机函数的表达式rand()%20的值在( )区间内,
A.1~19 B.1~20 C.0~19 D.0~20 12.当处理特定问题时的循环次数已知时,通常采用( )循环来解决。
A.for B.while C.do-while D.switch
13.在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写为( )语句。
A.for B.if C.do D.while 14.for语句能够被改写为( )语句。
A.复合 B.if C.switch D.while 15.下面循环语句执行结束后输出的i值为( )。
for(int i=0;i int i=0;do i++;while(i*i<10); A.4 B.3 C.5 D.2 二、填空题:(每空0.5分,共22分) 1.C语言中的每条简单语句以___________作为结束符。 2.C语言中的每条复合语句以__________作为结束符。 3.在C语言程序的每个程序行后面或单独一行的开始使用注释的标记符为_______。 4.单行或多行注释的结束标记符为________。 5.在一个C程序文件中,若要包含另外一个头文件或程序文件,则应使用以__________标识符开始的预处理命令。 6.在#include命令中所包含的头文件,可以是系统定义的头文件,也可以是_______定义的头文件。 7.一个函数定义由____________和函数体两部分组成。 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 8.用于输出表达式的标准输出函数是_____________。 9.当不需要函数返回任何值时,则应使用__________标识符定义函数类型。 10.执行“printf(“%d-%d=%d”,43,18,43-18); ”语句后得到的输出结果为____________。 11.每个C程序文件在编译时可能出现有警告性错误,其对应的标识符为__________。 12.每个C程序文件在编译时可能出现有致命性错误,其对应的标识符为__________。 13.十进制数25表示成符合C语言规则的十六进制数为________。 14.在C语言中,转义字符序列________表示一个换行符。 15.执行“printf(“%c”,’F’-2);”语句后得到的输出结果为______。 16.已知’A’~’Z’的ASCII码为65-90,当执行“int x=’C’+5;”语句所x的值为________. 17.假定一个枚举类型的定义为“enum RB{ab,ac=3,ad,ae}x=ad;”,则x的值为________. 18.char类型的大小为______个字节。 19.int类型的大小为______个字节。 20.float类型的大小为______个字节。 21.十进制数28类型为________。 22.十进制数3.26类型为________。 23.若需要定义一个符号常量,并且使C语言能够进行类型检查,则应在定义语句的开始使用保留字_________。 24.使用const语句定义一个符号常量时,则必须对它同时进行__________________。 25.执行“int x=45,y=13;printf(“%d”,x%y);”语句序列后得到的输出结果为_______。 26.假定x=5,则表达式2+x++的值为______。 27.表达式(float)25/4的值为_________。 28.表达式(int)14.6%5的值为_______。 29.表达式x=x+1表示成增量表达式为_______。 30.增量表达式++y表示成赋值表达式为________。 31.关系表达式(x!=0)的等价表达式为________。 32.假定不允许使用逻辑非操作符,则关系表达式x+y>5的相反表达式为__________。 33.假定不允许使用逻辑非操作符,则逻辑表达式a>b || b==5的相反表达式为_________________。 34.若x=5,y=10,则x>y逻辑值为_________。 35.若x=5,y=10,则x<=y逻辑值为_________。 36.假定x=5,则执行“a=(x?10:20);”语句后a的值为______。 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 37.执行“typedef int DataType;”语句后,在使用int定义整型变量的地方都可以使用__________来定义整型变量。 38.在switch语句中,每个语句标号所含保留字case后面的表达式必须是_________。 39.作为语句标号使用的C保留字case和default只能用于_________语句的定义体中。 40.在switch语句时,在进行作为条件的表达式求值后,将从某个匹配的标号位置起向下执行,当碰到下一个标号位置时(停止/不停止)_________执行。 41.若do循环的“尾”为“while(++i<10)”,并且i的初值为0,同时在循环体不会修改i的值,由循环体将被重复执行_________次后正常结束。 42.当在程序执行到__________语句时,将结束本层循环语句或switch语句的执行。 43.在程序中执行到__________语句时,将结束所在函数的执行过程,返回到调用该函数的位置。 44.在程序执行完__________函数调用后,将结束整个程序的执行过程,返回到操作系统或C语句集成开发环境界面窗口。 三、写出下列每个程序运行后的输出结果:(每小题5分,共40分) 1. #include int x=5;switch(2*x-3){ case 4:printf(\"%d \ case 7:printf(\"%d \ case 10:printf(\"%d \ default:printf(\"%s \ } printf(\"%s\\n\ } 输出结果为: 2. #include 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 { int i,s=0; for(i=1;i<=6;i++) s+=i*i; printf(\"s=%d\\n\} 输出结果为: 3. #include int i,s1=0,s2=0; for(i=0;i<10;i++) if(i%2)s1+=i; else s2+=i; printf(\"%d %d\\n\} 输出结果为: 4. #include int n=10,y=1; while(n--){y++;y++;} printf(\"y=%d\\n\} 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 输出结果为: 5. #include int f,f1,f2,i; f1=f2=1; printf(\"%d %d \ for(i=3;i<=10;i++){ f=f1+f2; printf(\"%d \ if(i%5==0)printf(\"\\n\"); f1=f2; f2=f; } printf(\"\\n\"); } 输出结果为: 6. #include int i,n; for(n=2;n<=20;n++){ int temp=(int)sqrt(n);//sqrt(n)求出n的平方根并取整 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 for(i=2;i<=temp;i++) if(n%i==0)break; if(i>temp)printf(\"%d \ } printf(\"\\n\"); } 输出结果为: 7. #include int i,c2,c3,c5; c2=c3=c5=0; for(i=1;i<=M;i++){ if(i%2==0)c2++; if(i%3==0)c3++; if(i%5==0)c5++; } printf(\"%d %d %d\\n\} 输出结果为: 8. #include 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 #include int i,s; for(i=1,s=0;i<15;i++){ if(i%2==0 || i%3==0)continue; printf(\"%d \ s+=i; } printf(\"%d\\n\} 输出结果为: 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 C语言程序设计A 形考作业2 一、选择题:(每小题1分,共5分) 1.在下面的一维数组定义中,( )语句有语法错误。 姓 名: 学 号: 得 分: 教师签名: A.int a[]={1,2,3}; B.int a[10]={0}; C.int a[]; D.int a[5];n 2.在下面的二维数组定义中,( )语句是正确的。 A.int a[5][]; B.int a[][3]={{1,3,5},{2}}; D.int a[](10) a[][5]; C . int 3.假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为( )。 A.2 B.4 C.6 D.8 4.假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为( )。 A.0 B.4 C.8 D.6 5.将两个字符串连接起来组成一个字符串时,选用( )函数。 A.strlen() B.strcap() C.strcat() D.strcmp() 二、填空题:(每空1分,共16分) 1.假定一维数组的定义为“char * a[8];”,则该数组所含元素的个数为__________。 2.假定一维数组的定义为“char * a[8];”,则该数组所占存储空间的字节数为__________。 3.假定二维数组的定义为“int a[3][5]”,则该数组所占存储空间的字节数为__________。 4.假定二维数组的定义为“char a[M][N];”,则该数组所所含元素的个数为_________。 5.假定二维数组的定义为“double a[M][N];”,则每个数组元素的行下标取值范围在________之间。 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 6.假定二维数组的定义为“double a[M][N];”,则每个数组元素的列下标取值范围在________之间。 7.使用“typedef char BB[10][50];”语句定义_________为含有10行50列的二维字符数组类型。 8.存储字符’a’需要占用存储器的_______个字节空间。 9.空字符串的长度为__________。 10.存储一个空字符串需要占用_______个字节。 11.字符串”a:\\\\xxk\\\\数据”的长度为___________。 12.用于存储一个长度为n的字符串的字符数组的长度至少为___________。 13.strcmp函数用于进行两个字符串之间的__________。 14.Strcpy函数用于把一个字符串___________另一个字符数组空间中。 15.一个二维字符数组a[10][20]能够存储________个字符串。 16.一个二维字符数组a[10][20]能够存储的每个字符串的长度至多为_________。 三、写出下列每个程序运行后的输出结果:(每小题4分,共24分) 1. #include int a[10]={12,39,26,41,55,63,72,40,83,95}; int i,i1=0,i2=0; for(i=0;i<10;i++) if(a[i]%2==1)i1++;else i2++; printf(\"%d %d\\n\} 输出结果为: 2. #include { 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 int i; char *a[5]={\"student\ char *p1,*p2; p1=p2=a[0]; for(i=0;i<5;i++){ if(strcmp(a[i],p1)>0)p1=a[i]; if(strcmp(a[i],p2)<0)p2=a[i]; } printf(\"%s %s\\n\} 输出结果为: 3. #include int a[10]={4,5,6,15,20,13,12,7,8,9}; void main() { int i,s0,s1,s2; s0=s1=s2=0; for(i=0;i<10;i++){ switch(a[i]%3){ case 0:s0+=a[i];break; case 1:s1+=a[i];break; case 2:s2+=a[i];break; } } printf(\"%d %d %d\\n\ } 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 输出结果为: 4. #include char a[]=\"abcdbfbgacd\"; int i1=0,i2=0,i=0; while(a[i]){ if(a[i]=='a')i1++; if(a[i]=='b')i2++; i++; } printf(\"%d %d %d\\n\ } 输出结果为: 5. #include int a[3][4]={{1,2,7,8},{5,6,10,6},{9,12,3,4}}; int m=a[0][0]; int ii=0,jj=0; int i,j; for(i=0;i<3;i++) for(j=0;j<4;j++) 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 if(a[i][j]>m){m=a[i][j];ii=i;jj=j;} printf(\"%d %d %d\\n\} 输出结果为: 6. #include int a,b; for(a=1,b=2;b<50;){ printf(\"%d %d \ a=a+b; b=a+b; } printf(\"\\n\"); } 输出结果为: 四、写出下列每个函数的功能。(每小题4分,共20分) 1. #include if(a>b)return 1; else if(a==b)return 0; else return -1; } 函数功能为: 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 2. #include if(a>=b && a>=c)return a; if(b>=a && b>=c)return b; return c; } 函数功能为: 3.double SF(double x,int n){ //n为大于等于0的整数 double p=1,s=1; for(i=1;i<=n;i++){ p*=x; s+=p/(i+1); } return s; } 函数功能为: 4. #include int a=(int)sqrt(x); int i=2; while(i<=a){ if(x%i==0)break; i++; } 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 if(i<=0)return 0;else return 1; } 函数功能为: 5. #include char a[10]; int i=0,rem; do{ rem=x%16; x=x/16; if(rem<10)a[i]=48+rem;//'0'字符的ASCII码为48 else a[i]=65+rem; //'A'字符的ASCII码为55 i++; }while(x!=0); while(i>0)printf(\"%c\ printf(\"\\n\"); } 函数功能为: 五、根据下列每个题目要求编写程序。(第 1~5小题每题6分,第6小题5分,共35分) 1.编写一个函数,函数头格式为“void fun4(char *a , int b[])”,分别求出由字符指针a所指向的字符串中包含的每种十进制数字出现的次数,把统计结果保存在数组b的相应元素。 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 2.编写一个函数,函数头格式为“double Mean(double a[M][N] , int m , int n)”,要求返回二维数组a[m][n]中所有元素的平均值,假定在计算过程是采用变量v存放平均值。 3.编写一个递归函数“int FF(int a[] , int n)”,求出数组a中所有元素n个元素之积并返回。 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 4.编写一个主函数,利用while循环,求出并显示满足不等式1+1/2+1/3+……+1/n>5的最小n值。 5.编写一个主函数,求满足不等式2+4+……+n<1000的最大n值,假定分别用i和s为取偶数值和累加值的变量,并限定使用do循环编程。 6.编写一个主函数,计算并输出n 的值,其中n值由键盘输入。 2 2 2 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 C语言程序设计A 形考作业3 一、选择题 1. 在下面的( )函数声明语句存在语法错误。 姓 名: 学 号: 得 分: 教师签名: A.AA(int a,int b); B.AA(int ,int) C.AA(int a;int b) D.AA(int a,int) 2.在下面的( )不能作为函数的返回类型。 A.void B.int C.new D.long 3.下面正确的函数原型语句是( )。 A.int Function(void a); B.void Function( ); C.int Function(a); D.void int(double a); 4.函数调用func(exp1,exp2),exp3*exp4-exp5)中所含实参的个数为( )个。 A.1 B.2 C.4 D.5 5.下面的标识符中,( )是文件级作用域。 A.函数形参 B.语句标号 C.外部静态类标识符 D. 自动类标识符 6. 下面的标识符中,( )具有全局级作用域。 A.函数形参 B.全局变量 C.内部静态变量 D. 自动变量 7.假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址大( )字节。 A.1 B.2 C.4 D.8 8.假定a为一个字符数组名,则元素a[8]的地址比该数组的首地址大( )个字节。 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 A.4 B.8 C.16 D.32 9.假定a为一个数组名,则下面的( )表示有错误。 A.a[i] B.*a++ C.*a D.*(a+i) 10.用calloc函数创建具有10个整型元素的一维数组的正确语句是( )。 A.int *p=calloc(10,2); B.int *p=calloc(10); C.int *p=calloc(10,4); D.int *p=malloc(10) 11.假定变量m定义为”int m=7;”,则定义变量p的正确语句为( )。 A.int p=&m; B.int *p=&m; C.int &p=*m; D.int *p=m; 12. 假定k是一个double类型的变量,则定义变量p的正确语句为( )。 A.double p=&k; B.double *p=&k; C.double &p=*k; D.char *p=”Thank you!”; 13.假定一条定义语句为“int a[10],x,*pa=a;”,若要把数组a中下标为3的元素赋值给x,则不正确的语句为( )。 A.x=pa[3]; B.x=*(a+3); C.a=a[3]; D.x=*pa+3; 14.假定有定义“int b[10];int *pb;”,则不正确的赋值语句为( )。 A.pb=b; B.pb=&b[0]; C.pb=b+2; D.pb=b[5]; 15.假定指针变量p定义为“int *p=new int(100);”,要释放p所指向的动态内存,应使用语句( )。 A.delete[p]; B.delete *p; C.delete &p; D.delete []p; 16.假定指针变量p定义为“int *p=calloc(30,sizeof(int));”,要释放p所指向的动态内存,应使用语句( )。 A.delete[p]; B.deldete(p); C.free[]p; D.free(p); 二、填空题 1.在C语言中,一个函数由函数头和____________组成。 2.在函数外定义的变量称为全局变量,若没有被初始化则系统隐含对它所赋的初值为___________。 3.如果一个函数只允许同一程序文件中的函数调用,则应在访函数定义前加上的C保留字为为__________。 4.如果一个函数直接或间接地调用自身,这样的调用被称为_________调用。 5.调用系统函数时,要先使用#include命令包含该函数的原型语句所在_______文件。 6.函数形参的作用域是该函数的_______。 7.假定p所指对象的值为25,p+1所指对象的值为46,则*p++的值为__________。 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 8.假定p所指对象的值为25,p+1所指对象的值为46,则*++p的值为__________。 9.假定p所指对象的值为25,p+1所指对象的值为46,则执行“*(p++);”语句后,p所指对象的值为________。 10.假定a是一个指针数组,则a+1所指对象的地址比a地址大______字节。 11.若要把一个整型指针p转换为字符指针,则采用的强制转换表达式为___________。 12.假定一个数据对象为int*类型,则指向该对象的指针类型为__________。 13.假定p是一个指向整数对象的指针,则用_______表示指针变量p的地址。 14.若p指向x,则_______与x的等价的。 15.NULL是一个符号常量,通常作为空指针值,它值为_________。 三、写出下列每个程序运行后的输出结果 1. #include printf(\"WW\");break; case 'B':case 'b': printf(\"GG\");break; case 'C':case 'c': printf(\"PP\");break; default:printf(\"BB\");break; } } void main(){ char a1='b',a2='C',a3='f'; SB(a1);SB(a2); SB(a3);SB('A'); printf(\"\\n\"); } 输出结果为: 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 2. #include double SD(int a,int b,char op){ double x; switch(op){ case '+':x=a+b;break; case '-':x=a-b;break; case '*':x=a*b;break; case '/':if(b)x=(double)a/b; else exit(1); break; default:{(\"运算符错!\\n\");exit(1);} } return x; } void main(){ int x=20,y=8; printf(\"%3.2lf \ printf(\"%3.2lf \ printf(\"%3.2lf \} 输出结果为: 3. #include printf(\"subs:x,y=%d,%d\\n\} 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 void main(){ int x=18,y=23; printf(\"main:x,y=%d,%d\\n\ WF(x,y); x=2*x; printf(\"main:x,y=%d,%d\\n\} 输出结果为: 4. #include char s[15]=\"567891234\"; fun(s); printf(\"%s\\n\} void fun(char ss[]){ int i,n=strlen(ss); for(i=0;i 5. #include 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 void InsertSort(int a[],int n) { int i,j,x; for(i=1;i void main() { int i; int a[6]={20,15,32,47,36,28}; InsertSort(a,6); for(i=0;i<6;i++)printf(\"%d \ printf(\"\\n\"); } 输出结果为: 6. #include int a[8]={3,5,7,9,11,13,15,17}; int i,*p=a; for(i=0;i<8;i++){; printf(\"%5d \ if( (i+1)%4==0 )printf(\"\\n\"); } 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 } 输出结果为: 7. #include int a[]={5,10,15,20,25,30}; int b=LA(a,4); int c=LA(a+2,3); printf(\"%d %d\\n\} 输出结果为: 8. #include for(i=0;i int a[]={1,2,3,4,2,4,5,2}; 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 int b=LB(a,4)+LB(&a[3],4); printf(\"b=%d\\n\} 输出结果为: 四、写出下列每个函数的功能 1. #include 函数功能为: 2. #include int c=0;for(int i=0;i 函数功能为: 3. #include 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 int z; printf(\"%d + %d = \ scanf(\"%d\ if(x+y==z)return 1;else return 0; } void main() { int i,a,b,c=0; srand(time(0)); //初始化随机数系列 for(i=0;i b=rand()%20+1; c+=ff(a,b); } printf(\"得分:%d\\n\} 函数功能为: 4. int fun6(int m,int n,int b=2) { if(melse if(m%b==0 && n%b==0)return b*fun6(m/b,n/b,b); else return fun6(m,n,++b); } 函数功能为: 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 5. #include int * a= malloc(n*sizeof(int)); int i; for(i=0;i 函数功能为: 6. #include double s=0;int i,m=0; for(i=0;i 函数功能为: 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 C语言程序设计A 形考作业4 一、选择题 姓 名: 学 号: 得 分: 教师签名: 1. 假定有“struct BOOK{char title[40];float price;};struct BOOK *book;”,则不正确的语句为( )。 A. struct BOOK *x=malloc(book); B.struct BOOK x={“C++ Programming”,27.0}; C.struct BOOK *x=malloc(sizeof(BOOK)); D.struct BOOK **x=&book; 2. 假定有“struct BOOK{char title[40];float price;} book;”,则正确的语句为( )。 A.struct BOOK x=&book; B.struct BOOK *x=&book; C.struct BOOK x=calloc(BOOK); D.struct BOOK *x=BOOK; 3.表示文件结束的符号常量为( )。 A.eof B.Eof C.EOF D.feof 4.C语言中系统函数fopen()是( )一个数据文件的函数。 A.读取 B.写入 C.关闭 D.打开 5.从一个数据文件中读入以换行符结束的一行字符串的函数为( )。 A.gets() B.fgets() C.getc() D.fgetc() 6.向一个二进制文件写入信息的函数fwrite()带有( )参数。 A.1 B.2 C.3 D.4 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 二、填空题 1.假定一个结构类型的定义为“struct A{int a,b;A*c;};”,则该类型的大小为__________字节。 2.假定一个结构类型的定义为“struct B{int a[5],char *b;};”,则该类型的大小为__________字节。 3.假定一个结构类型的定义为“struct D{int a;union{int b;double c;};struct D* d[2];};”,则该类型的大小为__________字节。 4.假定要动态分配一个类型为struct Worker的具有n个元素的数组,并由r指向这个动态数组,则使用语句的表达式为__________________________________________。 5.假定要访问一个结构x中的由a指针成员所指向的对象,则表示方法为_____________。 6.假定要访问一个结构指针p所指向对象中的b指针成员所指的对象,则表示方法为___________。 7.与结构成员访问表达式(*fp).score等价的表达式是_____________。 三、写出下列每个程序运行后的输出结果 1. #include char name[15]; //姓名 int age; //年龄 float pay; //工资 }; void main(){ struct Worker x={\"wanghua\ struct Worker y,*p; y=x;p=&x; printf(\"%s %d %6.2f\\n\ printf(\"%s %d %6.2f\\n\} 输出结果为: 2. #include 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 #include char name[15]; //姓名 int age; //年龄 float pay; //工资 }; void main(){ struct Worker x; char *t=\"louting\"; int d=38;float f=493; strcpy(x.name,t); x.age=d;x.pay=f; x.age++;x.pay*=2; printf(\"%s %d %6.2f\\n\} 输出结果为: 3. #include char name[15]; //姓名 int age; //年龄 float pay; //工资 }; int Less(struct Worker r1,struct Worker r2){ if(r1.age 生命赐给我们,我们必须奉献生命,才能获得生命。 void main(){ struct Worker a[4]={{\"abc\ {\"jkl\ struct Worker x=a[0]; int i; for(i=1;i<4;i++) if(Less(x,a[i]))x=a[i]; printf(\"%s %d %6.2f\\n\} 输出结果为: 四、写出下列每个函数的功能 1. void QA(struct Worker a[],int n){ int i; for(i=0;i 假定结构struct Worker的定义如下: #include char name[15]; //姓名 int age; //年龄 float pay; //工资 }; 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 函数功能为: 2. struct StrNode *QB(int n){ StrNode *f,*p; if(n==0)return NULL; f=(StrNode*) malloc(sizeof(struct StrNode)); scanf(\"%s\ p=f; while(--n){ p=p->next=(StrNode*)malloc(sizeof(struct StrNode)); scanf(\"%s\ } p->next=NULL; return f; } 假定结构struct StrNode的定义如下: struct StrNode{ char name[5]; struct StrNode *next; }; 函数功能为: 3. struct IntNode* FindMax(struct IntNode *f) { struct IntNode *p=f; if(!f)return NULL; f=f->next; 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 while(f){ if(f->data < p->data)p=f; f=f->next; } return p; } 假定结构struct StrNode的定义如下: struct IntNode{ int data; struct IntNode * next; }; 函数功能为: 4. int Count(struct IntNode *f) { int c=0;while(f){ c++; f=f->next; } return c; } 假定结构struct StrNode的定义如下: struct IntNode{ int data; struct IntNode * next; }; 函数功能为: 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 5. struct IntNode* Input(int n) { struct IntNode *f,*p; f=(IntNode*)malloc(sizeof(struct IntNode)); if(n==0)return NULL; f->next=NULL; printf(\"从键盘输入 %d 个整数:\ while(n--){ scanf(\"%d\ p=f; f=(IntNode*)malloc(sizeof(struct IntNode)); f->next=p; } return f->next; } 假定结构struct StrNode的定义如下: struct IntNode{ int data; struct IntNode * next; }; 函数功能为: 6. #include FILE* fout=fopen(fname,\"w\"); 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 生命赐给我们,我们必须奉献生命,才能获得生命。 char a[20]; printf(\"\"); while(1){ scanf(\"%s\ if(strcmp(a,\"end\")==0)break; fputs(a,fout); fputc('\\n',fout); } fclose(fout); } void main() { char *p=\"d:\\\\xxk\\\\xuxk1.txt\"; JA(p); } 函数功能为: 希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。 因篇幅问题不能全部显示,请点此查看更多更全内容