福建省二级C模拟题(1)

更新时间:2023-11-25 13:28:01 阅读量: 教育文库 文档下载

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

一、选择题

1. 下面关于C语言的叙述中,正确的是(d )。

A)每行只能写一条语句 B)程序中必须包含有输入语句 C)main函数必须位于文件的开头 D) 每条语句最后必须有一个分号 2.在C语言中,正确的用户标识符是(b )。

A)3f. B)_for C)struct D)_f.5 3.若有定义:int a=2; 则正确的赋值表达式是(a )。

A)a-=(a*3) B)double (-a) C)a*3 D)a*4=3 4. 下面叙述正确的是( b)。

A)2/3与2.0/3.0等价 B)(int)2.0/3与2/3等价

C)++5与6等价 D)’A’与”A”等价

5.若已定义:float m;拟从键盘输入135.78这一数据给变量m,则应选用的语句是(d )。 A)scanf(”%5.2f”,&m); B)scanf(”%3.2f”,&m);

C)scanf(”%6.2f”,&m); D)scanf(”o”,&m);

6. 若已定义:int a=3,b=15,c;则语句c=a>b;运行后c的值为( b)。 A)1 B)0 C).t. D).f. 7. 已知double a=5.2;则正确的赋值表达式是( a ). A)a+=a-=(a=4)*(a=3) B)a=a*3=2

C)a%3 D)a=double (-3) 8. 以下的if语句中,x的值一定被重新赋值的是(b )。 A)if(x==y) x+=y;

B)if(x>y && x!=y)

x+=y; C)if(x!=y)

scanf(”%d”,&x); else

scanf(”%d”,&y); D)if(x

{x++;y++;}

9.设有整型变量x,下述语句(b )不会出现死循环。

A)for(;;x+=1); B)for(;(x=getchar())!=’\\n’;); C)while(1){x++;} D)for(x=10;;x--); 10. C语言中数组元素下标的数据类型是(b )。

A)实型常量 B)整型常量或整型表达式 C)任何类型的表达式 D)字符型常量 11.设有如下程序段:

int a[3][3]={1,0,2,1,0,2,1,0,1},i,j,s=0; for(i=0;i<3;i++) for(j=0;j

则执行该程序段后,s的值是(c )。

A)0 B)1 C)2 D)3 12.设有以下变量定义:

char str1[]=”string”,str2[8],*str3,*str4=”string”; (a )是正确的。

A)strcpy(str1,”China”); B)str2=”China”;

C)strcpy(*str3,”China”); D)strcpy(str4[0],”China”); 13. 设有如下函数定义: int fun(char *str)

{char *p=str;

while(*p!=’\\0’)p++; return (p-str); }

则以下语句执行后的输出结果是( a)。 printf(”%d\\n”,fun(”Student”));

A)7 B)8 C)9 D)10 14. 若有以下宏定义, #define MOD(x,y) x%y

则执行以下程序段后,z的值是(d ) int z,a=15,b=100; z=MOD(b,a);

A)100 B)15 C)11 D)10

15.设有以下语句,则(d )是对a数组元素的不正确引用,其中0≤i<10。 int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;

A)a[p-a] B)*(&a[i]) C)p[i] D)*(*(a+i))

16. 若有以下程序段,且0≤i<4,0≤j<3,则不能正确访问a数组元素的是(d int i,j,(*p)[3];

int a[][3]={1,2,3,4,5,6,7,8,9,10,11,12}; p=a;

A)*(*(a+i)+j) B)p[i][j] C)(*(p+i))[j] D)p[i]+j 17. 以下程序段的运行结果是(b )。 union {int num; char str[2]; }s;

s.num=20;

s.str[0]=’A’; s.str[1]=’\\0’;

printf(”%d”,s.num);

A)20 B)65 C)0 D)A 18. 若有以下定义: struct link {int data;

struct link *next; }*head,*p;

并已建立如下图所示的链表结构: head data next data next ? data NULL 指针p指向如下结点: p data next 则能够把p所指结点插入到链表中成为链表第2个结点的程序段是( a)。 A)p->next=head->next; head->next=p; B)head->next=p; p->next=head->next; C)p.next=head.next; head.next=p;

D)(*head).next=p; (*p).next=(*head).next; 19.对枚举类型进行定义,不正确的是( a)。

A)enum b{1,2,3} B)enum a{A,B,C};

C)enum c{D=3,E,F} D)enum d{X=0,Y=5,Z=9}; 20.以下程序的功能是(a )。

)。 #include main()

{FILE *fp; long int n;

fp=fopen (”wj.txt”, ”rb”); n=ftell(fp); fclose(fp);

printf (”%ld”,n); }

A)计算文件wj.txt的起始地址 B)计算文件wj.txt的终止起始地址 C)计算文件wj.txt内容的字节数 D)将文件指针定位到文件末尾 二、改错题

改错题:共2小题,每题10分,说明如下:

(1)修改程序在每对“/**/”之间存在的错误;

(2)不得删改程序中所有的“/**/”注释和其它代码; (3)源程序均在考生文件夹中,务必以原文件名保存程序;

(4)按Alt+Tab键,切换考试程序与Turbo C;按Alt+Enter键,切换Turbo C窗口大小。

1.程序cmody011.c的功能是:从字符串数组str1中取出ASCII码值为偶数且下标为偶数的字符依次存放到字符串t中。

例如,若str1所指的字符串为:4AZ18c?Ge9a0z!则t所指的字符串为:4Z8z 注意:数组下标从0开始。

#include #include #include #include void main()

{ char str1[100],t[200]; int i,j;

/**/ i=0; /**/ clrscr();

strcpy(str1,”4AZ18c?Ge9a0z!”); for(i=0;i

/**/if ((str1[i]%2==0) &&(i%2!=0)) /**/ {

t[j]=str1[i]; j++; } }

t[j]=’\\0’;

printf(”\\n Original string:%s\\n”,str1); printf(”\\n Result string:%s\\n”,t); }

2.程序cmody012.c中,函数fun(int n)的功能是:根据参数n,计算机大于10的最小n个能被3整除的正整数的倒数之和。例如:

fun?8??111???121518?1?0.396 33 #include #include #include #include #define M 50

double fun(int n) { double y=0.0; int i,j; j=0;

for(i=1;;i++) {

/**/if((i<10)&&(i%3==0))/**/ {

/**/y+=1/j;/**/ j++; }

if(j==n) break; }

return y; }

void main() {clrscr();

printf(”fun(8)=%8.3lf\\n”,fun(8)); }

三、填空题

填空题:共3小题,每题8分,说明如下:

(1)编写程序,补充在每对“/**/”之间的空白处,以完成题目的要求; (2)不得删改程序中所有的“/**/”注释和其它代码; (3)源程序均在考生文件中;务必以原文件名保存程序;

(4)按Alt+Tab键,切换考试程序与Turbo C;按Alt+Enter键,切换Turbo C窗口大小。 1.补充程序Ccon011.c,该程序的功能是计算阶乘。 main()

{/**/ /**/p; int i; p=1;

/**/ /**/(i=1;i<=8;i++) p=p*i;

printf(“\\np=%ld”,p); getch(); } 2.补充程序Ccon012.c,该程序的功能是对输入的两个整数,按实数相除,输出它们的商和商的第二位小数。

#include void main() {

int a,b,c;

float f; clrscr();

printf(“Please input a b:”); scanf (”%d%d”,&a,&b); f=/**/ /**/;

c=/**/ /**/(f*100);

printf(“\\n a/b=%f The second decimal place is:%d\\n”,f,c); getch(); } 3.补充程序Ccon013.c,程序实现从10个数中找出最大值和最小值。 #include #include int max,min;

void find_max_min(int *p,int n) {

int *q; max=min=*p;

for(q=p;q*q)min=*q; }

void main() {

int i,num[10];

printf (”Input 10 numbers:”);

for(i=0;i<10;i++) scanf (”%d”,&num[i]); find_max_min(/**/ /**/,10); printf(”max=%d,min=%d\\n”,max,min); } 四、编程题

编程题:共2小题,每题11分,说明如下:

(1)在一对“/**/”之间编写程序,以完成题目的要求; (2)不得删改程序中所有的“/**/”注释和其它代码; (3)源程序均在考生文件中;务必以原文件名保存程序;

(4)按Alt+Tab键,切换考试程序与Turbo C;按Alt+Enter键,切换Turbo C窗口大小。 1.打开考生文件夹中的cprog011.c,完成其中的函数fun1,该函数的数学表达式是:

1?sinx?exfun1?x??

1?xfun1(3.76)=9.111

例如:fun1(0.76)=2.175 fun1(3.00)= 5.307 #include #include double fun1(double x) {/**/

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

Top