总复习题-2

更新时间:2024-04-05 04:29:01 阅读量: 综合文库 文档下载

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

复习题-2

一、单项选择题 (每小题 1分,共 15分) 1.一个C语言程序是由( B )

A.一个主程序和若干子程序组成 B.函数组成 C.若干过程组成 D.若干子程序组成 2.下面正确的字符常量是( C )

A. ?c\ B.'\\\\\C. 'w' D.\

3.判断字符型变量c1是否为小写字母字符的正确表达式为( D ) A.?a?<=c1<=?z? B.(c1>=a)&&(c1<=z) C. (?a?>=c1)||(?z?<=c1) D. (c1>=?a?)&&(c1<=?z?) 4.在C语言中,char型数据在内存中存储形式是( D ) A.补码 B.反码 C.原码 D.ASCII码

5.下列表达式中,满足“当x的值为偶数时值为真,为奇数时值为假”的要求的是(C ) A.x%2==1 B.!(x%2==0) C.(x/2*2-x)==0 D.(x%2) 6.下面程序段 int k=2;

while (k==0) {printf(“%d”,k);k--;}

则下面描述中正确的是( C )。

A.while循环执行两次 B.循环是无限循环

C.循环题语句一次也不执行 D.循环体语句执行一次 7.设:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b) && (n=c>d)后n的值为( B ) A.1 B.2 C.3 D.4

8.以下正确的函数定义是( D )。

A.double fun(int x, int y) B.double fun(int x,y) { {

z=x+y ; int z ; return z ; return z ; } }

C.fun (x,y) D.double fun (int x, int y) { {

int x, y ; double z ; double z ; z=x+y ;

1

z=x+y ; return z ;

return z ; } } 9.执行下列程序片段时输出结果是 C 。 int x=13,y=5;

printf(“%d”,x%=(y/=2));

A.3 B.2 C.1 D.0 10.以下数组定义合法的是( C )。

A. int x(10); C. int x[10];

B. int x[10] D. int n,x[n];

11.若有说明:int *p,m=5,n;以下程序段正确的是( D )。

A.p=&n ; B.p = &n ; scanf(“%d”,&p); scanf(“%d”,*p); C.scanf(“%d”,&n); D.p = &n ; *p=n ; *p = m ; 12.若对两个数组a和b进行初始化 char a[]=\

char b[]={'A', 'B', 'C', 'D', 'E', 'F'};

则下列叙述正确的是( D )。 A. a与b数组完全相同 B. a与b数组长度相同 C. a与b数组都存放字符串 D. 数组a比数组b长度长 13.下面程序段的运行结果是( B )。

char *s=”abcde” ;

s+=2 ; printf(“%c”,*s); A.cde B.字符c C.字符c的地址 D.不确定 14.以下对结构体变量成员不正确的引用是( D )。

struct pupil {

char name[20]; int age; int sex ; } pup[5], *p=pup ;

A.scanf(“%s”,pup[0].name); B.scanf(“%d”,&pup[0].age); C.scanf(“%d”,&(p->sex)); D.scanf(“%d”,p->age); 15.利用fseek函数可实现的操作是( A )。 A.改变文件的位置指针 B.文件的顺序读写 C.文件的随机读写 D.以上答案均正确

二、基础知识填空(每空2分,共20分)

x?y)%2/4的1. 已知int a=7;float x=2.5,y=4.7;计算表达式x?a%3*(int)(值的类型为 [1] double

2.将条件“y能被4整除但不能被100整除,或y能被400整除”写成逻辑表达式 [2]

(y%4==0&&y0!=0)||(y@0==0) 。

2

3.数学表达式

a2?b2的C语言表达式是 [3] sqrt((x*x+y*y))/fabs(a-b)

x?y(注:fabs()为求绝对值函数)

4. 设有数组定义: char array []=\则数组 array所占的空间为 [4] 6字节

5.x,y,z都是整型变量,写出x,y,z中有两个负数的表达式: [5] (x<0&&y<0)||(x<0&&z<0)||(y<0&&z<0) 。

6.函数调用语句:fun((a,b),(c,d,e))实参个数为 [6] 2 。 7.若有程序段:

int *p[3],a[6],i;

for (i=0; i<3; i++) p[i]=&a[2*i] ;

则*p[0]引用的是a数组元素 a[0] ,*(p[1]+1)引用的是a数组元素 a[3] 。 8.若有定义

#define s(x) (x)*x*2 int k=5,j=2; 则执行语句z=s(k+j);后,z的值为 39 。 9.若有以下程序段:

int a=1,b=2,c=3; struct dent {

int n ; int *m ;

} s[3] = {{101,&a},{102,&b},{103,&c}}; struct dent *p=s ; 则*(++p)->m的值为 [10] 2 。

三、程序阅读题(每题3分,共21分)

1.输入5,9回车后,下面程序输出语句的第一行是 *p1=9,*p2=5 ,第二行是 a=5,b=9 。

#include

void swap(int *,int *); int main()

{ int a, b, *pa=&a, *pb=&b;

scanf(“%d,%d”,&a,&b); swap (pa,pb);

printf(“a=%d,b=%d\\n”,a,b); return 0; }

void swap (int *p1,int *p2) {

int *p; p=p1; p1=p2; p2=p;

printf(“*p1=%d,*p2=%d\\n”,*p1,*p2); }

2.输入72和32,下面程序执行的结果是 8 #include int main()

3

{ int a,b,r;

scanf(\ do {

r=a%b; a=b; b=r;

}while(r!=0);

printf(\ return 0;

}

3.输入6,下面程序的执行结果是: 8 #include

unsigned int fact (unsigned int ); int main()

{ unsigned int n,fac; scanf(\ fac=fact (n);

printf(\ return 0; }

unsigned int fact (unsigned int n) {

unsigned int result; if(n==1||n==2) result=1; else

result= fact(n-1)+fact(n-2); return result; }

4.下面程序的输出结果是 10 11 12 。 #include int fun(int);

int main() {

int i,a=5;

for(i=0;i<3;i++)

printf(\printf(\return 0; }

int fun(int a) { int b=0;

4

static int c=3; b++; c++;

return(a+b+c);

}

5.下列程序的输出结果的第一行是 abcdefg ,第二行是 ABCGH 。 #include int main() {

char a[80], b[80], *p=”aAbBcdDefgGH”; int i=0, j=0; while(*p!=?\\0?) {

if (*p>=?a?&&*p<=?z?) {

a[i]=*p; i++; }

else {

b[j]=*p; j++; } p++; }

a[i]=b[j]=?\\0?; puts(a); puts(b); return 0; }

6.下面程序执行的结果是 2 3 7 9 11 0 6 7 5 4 #include

void inv(int [], int ); int main()

{ int i,a[10]={3,7,9,11,0,6,7,5,4,2}; inv(a,10);

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

printf(\

printf(\return 0; }

void inv(int x[], int n) { int t,i;

i=n-1; t=x[n-1]; for(;i>0;i--) x[i]=x[i-1]; x[0]=t; }

7.下面函数的功能是 比较两个字符串大小 int str_cat(char *s,char *t)

5

{

while (*s&&*t&&*s==*t) {

s++;t++;

}

return (*s-*t); }

四、程序填空题(每空2分,共18分)

1.以下程序输出x,y,z三个数中的最大值,补足所缺语句。 #include

int main ( )

{ int x=4,y=5,z=8 ; int u,v;

u = x>y ? [1] x:y ; v = u>z ? [2] u:z ; printf (“%d”,v); return 0; }

2. 有15个数按从小到大顺序存放在一个数组中,当输入一个数值时,要求用二分查找法找出该数是数组中第几个元素的值;如果该数不在数组中,则显示相应的提示,补足所缺语句。

#include #define N 15 int main()

{ int i, num, top, bott, mid, a[N];

printf(\请输入15个数(a[i]>a[i-1])\\n\ scanf(\ i=1;

while(i

scanf(\ if(a[i]>=a[i-1]) i++; else{

printf(\请重新输入a[i]\

printf(\必须大于%d\\n\ } }

printf(\请输入查找数据: \ scanf(\

for(top=0, bott=N-1; top<=bott;) {

mid= [3] (top+bott)/2 ; if(num==a[mid]) {

6

printf(\位于数组中第%d个数\\n\ break; } else if(num

if(top>bott)

printf(\不在数组中\\n\return 0; }

3.下面程序是判断输入的数n是否为回文数,请填空使程序完整。 #include int main() {

int n,m=0,k; do {

scanf(\ if(n<=0)

printf(\数据输入错误,请重新输入!\\n\}while(n<=0); k=n;

while(k!=0) {

m= [6] m*10+k ; k=k/10; }

if( [7] m==n ) printf(\是回文数!\\n\else

printf(\不是回文数!\\n\ return 0; }

4. 以下程序用来检查二维数组是否对称(即:对所有i,j都有a[i][j]=a[j][i])。

#include int main(){

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

if( [8] a[i][j]!=a[j][i] ){ found = [9] 1 ; break; }

7

if(found) break; }

if(found) printf(\不对称\\n\else printf(\对称\\n\return 0; }

五、改正下面程序错误(每处2分,共6分,注:错误在注释语句/****found****/下面1~3行以内):

函数fun的功能是: 将s所指字符串中位于偶数位置的字符同时ASCII码为偶数的字符放入t所指数组中(规定第一个字符放在第0位中)。 例如, 字符串中的数据为: AABBCCDDEEFF, 则输出应当是:BDF。

1.#include 2.#include 3.#define N 80

4.void fun(char *s, char t[]) 5.{ int i, j=0;

6. for(i=0; i

8. if(i%2 && s[i]%2==0) 第8行 : i%2==0 9. t[j++]=s[i];

10./*************found********/ 11. t[j]=”\\0”; 第11行: t[j]=’\\0’; 12.}

13.int main()

14.{ char s[N], t[N]; 15. gets(s); 16. fun(s, t);

17. printf(\结果是 : %s\\n\18. return 0; 19.}

六、编程题(第1小题10分,第2小题10分,共 20分)

1111?????(?1)n?11.输入正整数n,求数列s?1?之和 223334444n?n#include

int main() {

double sum=0,t,s=1; 1分 int i,j,n; do {

scanf(\分

8

}while(n<=0);

for(i=1;i<=n;i++) 1分 {

t=0; }

for(j=1;j<=i;j++) 1分 t=t*10+i; 2分 sum=sum+s*1.0/t; 2分 s=-s; 1分

printf(\分 return 0; }

2.有N个学生,每个学生的数据包括学号,姓名,3门课的成绩,从键盘输学生信息,要求按学生3门课总成绩排序,前10%为优秀,最后5%为不合格,其余的为合格。并输出学生信息(包括学号、姓名、3门课的成绩、总分数和等级)。 #include

#include #define N 30 struct student {

long int num; char name[20]; float s1,s2,s3; float sum;

char level[10];

}; 2分 void fun(struct student st[],int n); int main() {

struct student stu[N]; 1分 int i;

for(i=0;i

scanf(\ scanf(\

scanf(\

} 2分 fun(stu,N); return 0; }

void fun(struct student st[],int n) {

int i,j,k;

9

struct student t; for(i=0;i

st[i].sum=st[i].s1+st[i].s2+st[i].s3; 1分 for(i=0;i

k=i;

for(j=i+1;jst[k].sum) k=j; 1分 if(k!=i) {

t=st[i];

st[i]=st[k];

st[k]=t;

} 1分 }

for(i=0;i

if (i<=n*0.1) strcpy(st[i].level,\优秀\ else if(i>n*0.1&&i<=n*0.9) strcpy(st[i].level,\合格\

else

strcpy(st[i].level,\不合格\分

} } 3.

答题规范

一、单项选择题

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.

二、基础知识填空

[1]. [2]. [3]. [4]. [5]. [6]. [7]. [8]. [9]. [10].

10

三、程序阅读题

1. 3. 5. 7. 2. 4. 6. 四、程序填空题

[1]. [3]. [5]. [7]. [9]. [2]. [4]. [6]. [8].

五、改正下面程序错误

第 行 :

第 行 :

六、编程题

第11页/ 共11页

三、程序阅读题

1. 3. 5. 7. 2. 4. 6. 四、程序填空题

[1]. [3]. [5]. [7]. [9]. [2]. [4]. [6]. [8].

五、改正下面程序错误

第 行 :

第 行 :

六、编程题

第11页/ 共11页

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

Top