11年C语言考试题B卷答案

更新时间:2023-07-21 04:47:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

所在年级、班级 注意

四三二一、、、、试考姓密卷生名封印在、线刷答准内不题考不清前证准楚应号答。先不题可将许。举姓涂

手名改向、,监学否考号则教、试师年卷询级无问和效。班。

填写在指定的方框内。

卷号:A卷

二O一O —二O一一 学年第二学期

程序设计方法(一) 标答

( 08gb信管12班用)

注意:学号、姓名和所在年级班级不写、不写全或写在密封线外者,试卷作废。

一、 判断题(共5小题,每题2分,共10分 )

1. C语言中的变量可以在使用之前的任何位置进行定义。( T ) 2. 赋值语句属于表达式语句,是赋值表达式与分号组合而成。( T ) 3. 数组中各个元素的类型必须一致。 ( T )

4. 指针变量存放指定类型的数据内容。( F ) 5. 文本文件存储的数据是内存数据的映射,程序能方便使用文本数据。( F )

二.单选题(共10小题,每题2分,共20分 )

1. 设变量定义:int a, b ; double x=1.42; 符合C语言语法的表达式是( A ). A) a+=a- =(b*4)*(a=3);

B) x%( -3 );

C) a=a*3=2

D) x=float(a)

2. 若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是:( B ) A、0 B、1 C、2 D、不知道a的值,不能确定

3.已知a=1,执行语句if(a=2) printf(“yes”);else printf(“no”);后,输出的结果是(C)。 A、1 B、2 C、yes D、no

4.已知x=-1; 执行do {x = x * x; } while ( ! x) ;语句时,( D )。 A) 循环体将执行无限次 B) 循环体将执行两次 C) 系统将提示有语法错误

D) 循环体将执行一次

5. 程序已定义int a=2,b=2,c=2;,printf(”%d\n”,a/b&c); ,程序运行后的结果是(A)。 A)0 B)1 C)2 D)3

6. 若已定义语句char sl[10]= "abcd!", *s2="n123\\";,执行printf("%d %d\n",

strlen(s1),strlen(s2));,则输出结果是( B )

A) )10 5 B 5 5 C)10 7 D)5 8

7. 从函数出现的位置来看,函数调用方式不包括的选项为( C )。 A)函数语句 B)函数表达式

C)函数返回值 D)函数参数

8. 若有以下定义int x[10],*pt=x;则对x数组元素的正确应用是( D )。 A)*&x[10] B) pt+3 C)*(pt+10) D)*(x+3) 9. 已定义结构体变量struct { int day; char mouth; int year;} a, *p = &a;,以下引用成员变量的选项中错误的是( C ) A)a.day

B)p->month

C) *p.year

D)( *p ).day

10. 向文件中写一个数据块,使用的命令是( A )。 A)fread B)fwrite C)fputs D) fputc

三.填空题(共10小题,每题2

分,共20分 )

1、C语言是函数型语言,一个函数由(函数首部)和(函数体)两部分组成。 2、用int iA;定义变量后,确定了变量的(变量名)为iA,数据类型为(整型)。 3、C语言的基本语句包括声明语句、(空语句)、(复合语句)、控制语句、表达式语句、函数调用语句等基本语句。

4、break;语句可以使用在(多分支选择)结构和(循环)结构的语句之中。 5、 while循环语句中的条件表达式为真( 执行循环体 ),循环体中必须包括(修

改)循环变量值的语句。

6、 在C语言中,数组名是地址(常量 ),指向数组的指针是地址(变量)。 7、 在程序中不能嵌套(定义)函数,可以嵌套(调用)函数。

8、 在参数说明中的*号表示指针变量的(定义符),在执行语句中的*号表示指针变量的取内容(运算符)。

9、 定义共用体变量但没有定义指针时,引用成员变量的方法为:( 共用体变量名). ( 成员名 )。 10、打开文件用(fopen

)命令,关闭文件用(fclose)命令。

四、改错题:(共5

小题,每题2分,共10分

1. 如下程序使用逻辑表达式为变量赋值,改正程序中的错误。 #include <stdio.h> main() { int a,b,c; double w=1.2;

(a=2) || (b=4); // (a=2) && (b=4); c=int(w+a)+int(w+b); // c=(int)(w+a)+(int)(w+b); printf("c=%d \n",c); }

1

2. 改正if - else语句中的错误。 #include <stdio.h> main()

{ double a=1, b, c;

/********** found **********/

xcanf("%d",&b); // scanf("%f ",&b); if(b=1);c=a-b; // if(b = = 1) c = a - b; else c=a+b; printf("c=%d \n",c);

}

3. 求n的阶乘n!,请改下程序中的错误。 #include <stdio.h>

main( )

{ int k, n, In;;

/********** found **********/ scanf(“%d,%d”, k,n ) ;

for(k=1,l>=n,k++; ) // for(k=1; k<=n; k++) In = * K // In *= k ; printf(“%d\n”, In) ; }

4. 子函数的功能是将字符串中的小写字符转换成大字字符,更正子函数调中的错误。

/********** found **********/ void fun(char * x )

{ if( a <=x<='z' ) // if( *x>='a' && *x<='z' ) x=x-32 ; // *x=*x-32 ; } main( )

{ char a[6]={"12ab3"}; int k = 0 ;

for( k=0; k< 6; k++) fun( &a[k]); printf("%s\n",a); }

5.结构体struct students类型变量定义如下,改正程序中的错误。 #include <stdio.h> typedef struct students { char name[16]; char sex; int age; char addr[20]; } STUD;

/********** found **********/ main() {

typedef struct students stu={"wangFeng",'M',19,"wuhan"}, *s=&stu; printf("name=%s,age=%d,addr=%s\n",,s->age,*s.addr); }

// STUD stu={"wangFeng",'M',19,"wuhan"}, *s=&stu;

// printf("name=%s,age=%d,addr=%s\n",,s->age,(*s).addr);

五、读程序写结果:(共5小题,每题4分,共20分 ) 1. 阅读if-else-if结构的程序,试分析程序的输出结果。( 4 ) #include < stdio.h > main()

{ int a=1,b=2,c=3,d=0; if (a = = 1) if (b!=2)

if(c!=3) d=1; else d=2; else if(c!=3) d=3; else d=4; else d=5; printf("%d\n",d); }

2、阅读二维数组,并写出输出结果。(5689)

2

#include <stdio.h>

main ()

{ int i,j,a[3][3]={1,2,3,4,5,6,7,8,9}; for (i=1; i<3;i++)

for(j=1; j<3; j++) printtf(”%d”, a[i][j]); printf(”\n”); }

3.运行以下程序,写出输出结果。agaagag #include <stdio.h> #include <string.h> fun(char *w, int n) { char t,*s1,*s2; s1=w; s2=w+n-1; while(s1<s2) { t=*s1++; *s1=*s2--; *s2=t; }

} main( )

{ char a[]="abcdefg",*p=a; fun(p,strlen(p)); puts(p);

}

4、阅读结构体程序,写出输出结果。

#include <stdio.h> // 输出结果为( a, 11,22, 18.750000 )main()

{ struct stType { char chA; short shB; int iC; float fD; };

struct stType stE={'A',1,2,18.75},*p=&stE;

printf("%C,%d,%d,%f\n",stE.chA+32,p->shB+10,(*p).iC+20,stE.fD); }

5、执行以下程序,打开file.dat文件,文件中的数据为( end ) #include <stdio.h>

void writeStr(char *fn,char *str) { FILE *fp; fp = fopen(fn, "w"); fputs(str,fp); fclose(fp); } main( ) { writeStr("t1.dat","start"); writeStr("t1.dat","end");

}

六、编程题题( 共5小题,每题4分,共20分 )

1、已知双精度型变量x = 4.56789,试将该数精确到小数点后的第2位。 #include <stdio.h> main() {

double x = 4.56789; x = (int)(x*1000+.5)/1000.0;

printf("%f\n",x);

}

2、编制用辗转除法求最大公约数的程序,已知两个整数分别为14、63,编程求最大公约数。7 解:

#include <stdio.h>

main( )

{ int a , b, c, t , r ; scanf(“%d,%d”, &a, &b ) ; if(a > b ) { t = a; a = b; b = a; } r = a % b;

while( r! = 0 ) {a = b;b = r;r = a % b;}

3

printf(“%d\n”,,b); }

3、试编程输出如下的字符图形。 ********* #include <stdio.h> ******* main( ) ***** { *** *

4、主函数如下,试编制交换指针变量x、y内容的子程序。 #include <stdio.h>

void fun(char *x, char *y)

{ // int t; // t = *x;

// *x = *y; // *y = t; } main()

{ int a=26,b=48; fun(&a,&b);

printf("%d,%d \n" ,a,b); }

5、已知变量与指针定义如下,pa指向a[3],px指向x,试编程求x=*pa+*px。#include "stdio.h" main( )

{ int a[4]={6,2,4,5}, x=3,*pa,*px; pa=&a[3];

px=&x; x=*pa+*px; printf("x=%d\n",x); }

4

本文来源:https://www.bwwdw.com/article/9pu1.html

Top