大工C语言2013全校模拟

更新时间:2024-06-27 17:30:01 阅读量: 综合文库 文档下载

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

一、 选择题

1、sizeof(float)是()。

A、一个浮点表达式

B、一个不合法的表达式

C、函数调用结果是一个整型表达式。 D、一种函数调用

2、下列数据中属于\字符串常量\的是( )。

A、'A' B、\C、ABC D、'ABC'

3、用下面的scanf函数输入数据,使得i=10,k=15选择正确的键盘输入方法( ).

(用\表示回车,U表示空格) main() {int i,k;

scanf(\}

A、i=10[CR]k=15[CR] B、i=10,k=15[CR] C、10U15[CR] D、10,15[CR]

4、逻辑表达式3<2||-1&&4>3-!0的值为:( )

A、1 B、3 C、0 D、2

5、下列运算符中是C语言关系运算符的是()。

A、& B、~ C、!= D、!

6、语句while(!E);中的表达式!E等价于()。

A、E==1 B、E!=0 C、E!=1 D、E==0

7、以下正确的描述是( ).

A、只能在循环体内和switch语句内使用break语句 B、continue语句的作用是终止整个循环的执行

C、从多层嵌套的外层循环中退出时,只能使用goto语句 D、在循环体内使用break和continue语句的作用相同

8、下面各语句中,能正确进行赋字符串操作的语句是( ).

A、char s1[5][ ]={\

B、char s2[6]={'A','B','C','D','E'}; C、char st[ ][ ]={\

D、char s[5]={'A','B','C','D','E'};

9、若有说明: int a[3][4]={0};则下面正确的叙述是()。

A、数组a中每个元素均可得到初值0 B、只有元素a[0][0]可得到初值0

C、数组a中各元素都可得到初值,但其值不一定为0 D、此说明语句不正确

10、若有说明 int a[3][4];则a数组元素的非法引用是()。

A、a[1][3] B、a[0][4] C、a[0][2*1] D、a[4-2][0]

11、执行下面程序后,输出结果是()。 main()

{ int a,b,c; a=45,b=27,c=0; c=max(a,b);

printf(\}

int max(int x,int y) { int z;

if(x>y) z=x; else z=y; return(z); }

A、72 B、18 C、27 D、45

12、以下正确的描述是:在C语言程序中()。

A、函数的定义可以嵌套,但函数的调用不可以嵌套 B、函数的定义不可以嵌套,但函数的调用可以嵌套 C、函数的定义和函数的调用均可以嵌套 D、函数的定义和函数的调用均不可以嵌套

13、在C语言的函数中,下列正确的说法是()。

A、形参可以是常量和变量 B、可以有也可以没有形参 C、数组名不能作形参 D、必须有形参

14、设有宏定义#define PI 3.14 和#define S(r) PI*r*r,则S(2)的值为( ).

A、6.28 B、12.56 C、3.14

D、9.42

15、int a[10]={1,2,3,4,5,6,7,8};int *p;p=&a[5];p[-3]的值是()。

A、4 B、2

C、不一定 D、3

16、若有以下程序段,则使用错误的选项是( ). struct student {

int num; int age; };

struct student stu[3] ={{1001,20},{1002,19},{1004,20}}; main(); {

struct student *p; p=stu; … ; }

A、(*p).num B、(p++)->num C、p=&stu.age D、p++

17、若以\方式打开一个已存在的文件,则以下叙述正确的是()。

A、文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作 B、以上各种说法皆不正确 C、文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作 D、文件打开时,原有文件内容被删除,只可作写操作 答案:CBBAC DABAB DBBBD CA

二、 判断

1、#define 和printf 都不是C语句。

2、格式字符%x用来以十六进制形式输出整数.

3、语句if(a>b) printf(\可以用条件表达式a>b?a:b取代.

4、逻辑表达式-5&&!8的值为1.

5、循环结构中的continue语句是使整个循环终止执行 6、for循环语句不能用于循环次数未知的情况下. 7、引用数组元素时,数组元素下标必须是整型常量. 8、数组的首地址一定是第一个数组元素的地址.

9、数组整体不参加数据处理(即不参加各种运算),参加数据处理的只能是数组的元素.

10、数组名作为函数调用时的实参,实际上传递给形参的是数组全部元素的值. 11、在主函数中,必须要对被调用函数进行类型说明,否则在编译时会出现错

误.

12、在一个函数中定义的静态局部变量不能被另外一个函数所调用. 13、计算机编译系统对宏定义在编译时进行语法检查. 14、指向某一变量的指针,就是该变量的内存地址.

15、对于不同类型的数据,若想合成一个有机的整体,可以引用结构体进行定义。 16、在打开文件时,必须说明文件的使用方式,\表示以只读方式打开一个文

件.

答案:对对对错对 对对错对对 对对对对对 对

三、 填空

1、int x=2;z=x++-1; 则x的值为_____.

2、设x=2.5,a=7,y=4.7,算术表达式x+a%3*(int)(x+y)%2/4的值为_____. 3、设x=62,表达式x>=60&&x<70||x==1的值为_____. 4、c语言表达式5>2>7>8的值是_____.

5、字符串比较的库函数是_____,只写函数名即可.

6、从函数的形式上看,函数分为无参函数和_____两种类型.

7、设有以下共用体类型说明和变量定义,则变量a在内存所占字节数是 _____。

union stud { char num[6]; float s[4]; double ave; } a,*p; 8、在C语言中,根据要处理的文件存储的编码形式,可以把文件分为ASCII文件和_____文件.

答案:(1)3 (2) 2.5 (3)1 (4) 0 (5) strcmp (6) 有参函数 (7)

16 (8) 二进制

四、 程序设计

1、功能:用函数求N个[10,60]上的整数中能被5整除的最大的数,如存在则返回这个最大值,如果不存在则返回0。

------------------------------------------------*/ #include \#include \#define N 30

int find(int arr[],int n) {

int m=0;

/*********Begin**********/ /********** End **********/ return(m); }

main() {

int a[N],i,k; void TestFunc(); for(i=0;i

printf(\

if((i+1)%5==0) printf(\}

k=find(a,N); if(k==0)

printf(\else

printf(\TestFunc(); }

void TestFunc() {

FILE *IN,*OUT; int n; int i[5]; int o;

IN=fopen(\if(IN==NULL) {

printf(\}

OUT=fopen(\if(OUT==NULL) {

printf(\}

for(n=0;n<5;n++) {

fscanf(IN,\}

o=find(i,5);

fprintf(OUT,\fclose(IN); fclose(OUT); }

【参考代码】 int i;

for(i=0;i

if(arr[i]%5==0 && arr[i]>m) m=arr[i];

===============

2、

功能:根据整型参数n,计算如图公式的值。

------------------------------------------------*/ #include \#include \double fun(int n) {

/*********Begin**********/ /********** End **********/ }

main() {

int m;

void TestFunc(); printf(\scanf(\

printf(\TestFunc(); }

void TestFunc() {

FILE *IN,*OUT; int s ; int t; double o;

IN=fopen(\if(IN==NULL) {

printf(\}

OUT=fopen(\if(OUT==NULL) {

printf(\}

for(s=1;s<=5;s++) {

fscanf(IN,\o=fun(t);

fprintf(OUT,\}

fclose(IN); fclose(OUT); }

【参考代码】double a=1;int i; for(i=1;i

===============

五、程序改错

1、功能:实现3行3列矩阵的转置,即行列互换。

------------------------------------------------------*/ #include \

void fun(int a[3][3],int n) {

int i,j,t;

for(i=0;i

/**********ERROR**********/ scanf(\for(i=0;i

for(j=0;j

printf(\printf(\}

for(i=0;i

/**********ERROR**********/ for(j=0;j

/**********ERROR**********/ a[i][j]=t;

a[i][j]=a[j][i];

/**********ERROR**********/ t=a[j][i]; }

for(i=0;i

for(j=0;j

printf(\printf(\} }

main() {

int b[3][3]; fun(b,3); }

【改错1】 【参考答案】

scanf(\scanf(\

============================================================ 【改错2】 【参考答案】 for(j=0;jj;j++) for(j=0;j<=i;j++) for(j=0;i>=j;j++) for(j=i+1;j=j;j++) for(j=i+1;j<=n-1;j++) for(j=i;j<=n-i;j++)

=========================================== 【改错3】 【参考答案】 t=a[i][j];

=========================================== 【改错4】 【参考答案】 a[j][i]=t;

===========================================

2、功能:从键盘输入10个字符,统计其中数字字符的个数。 ------------------------------------------------------*/ #include int main( ) {

int i,sum=0; char c;

for(i=11;i>=2;i--) {

/**********ERROR**********/ c=gets( );

if(c< '0' ||c> '9')

/**********ERROR**********/ break; ++sum; }

printf(\return 0;

}

【改错1】 【参考答案】 c=getchar( );

============================================================ 【改错2】 【参考答案】 continue;

===========================================

六、程序填空

1、功能:从键盘上输入2名学生4门课成绩,求每个学生的平均成绩,并统计不及格门次。

------------------------------------- #include #include \int main() {

int i,j,n=0; float x,sum,avg; for(i=1;i<=2;i++) {

/***********FILL***********/ ____________; for(j=1;j<=4;j++) {

scanf(\if(x<60) n++;

/***********FILL***********/ ___________; }

avg=sum/4.0;

printf(\}

printf(\return 0; }

【空1】 【参考答案】 sum=0

=========================================== 【空2】 【参考答案】 sum=sum+x sum+=x

===========================================

2、功能:设数组a中的元素均为正整数,以下程序是求a中偶数的个数

和偶数的平均值。

------------------------------------- #include int main() {

int a[10]={1,2,3,4,5,6,7,8,9,10}; int k,s,i; float ave;

for(k=s=i=0;i<10;i++)

/***********FILL***********/ {

if(a[i]%2!=0)_______;

/***********FILL***********/ s+=________; k++; }

if(k!=0) {

ave=s/k;

printf(\}

return 0; }

【空1】

【参考答案】 continue

=========================================== 【空2】 【学生答案】 s+=________; 【参考答案】 a[i]

===========================================

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

Top