c语言程序设计期末试题A

时间:2025-03-15

C语言程序设计 期末试题A

一.单选题(每题2分,共20分)

2.下列选项中,不能用作标识符的是( D )。

A._1234_ B._1_2 C.int_2_ D.2_int_

3.以下定义语句中正确的是( C )

A.char a='A, 'b='B'; B.float a=b=10.0;

C.int a=10, *b=&a; D.float *a, b=&a;

4.#define d 2

int a=0; double b=1.25; char c='A';

则下面语句中错误的是( D )

A.a++; B.b++; C.c++; D.d++;

6.double a, b; int w; long c;

各变量已正确赋值,则下列选项中错误的表达式是( A )

A.a=a+b=b++ B.w%(int)a+b C.(c+w)%(int)a D.w=a==b;

8.int a, *pa=&a; 以下scanf语句中能正确为变量a读入数据的是( A )

A.scanf("%d", pa); B.scanf("%d", a);

C.scanf("%d", &pa); D.scanf("%d", *pa);

9.char *c[]={ "www", "fuwod", "com", "wbs", "C" };则表达式*c[1]>*c[2]比较的是( A )

A.字符f和字符c B.字符串fuwod和字符串com

C.字符w和字符f D.字符串ww和字符串com

10.执行语句for(i=1; i++<4; );后变量i的值是( C )

A.3 B.4 C.5 D.不定

二.填空题(每空2分,共18分)

1.int a=7; float x=2.5, y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值为

2.int a[10]={ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, *p=&a[3], b=p[5]; 则b的值是

3.函数swap(int x, int y)实现对x和y值的交换。则执行语句

int a[2]={ 1, 2 }; swap(a[0], a[1]);后,

4.#define f(z) z*z

int k=f(4+4)/f(2+2);

k的值是。

5.书写语句求a、b两个数的最大值max。 ;

6.执行int x=7; x+=x-=x+x;后,x的值是。

三.读程序,写结果(每题6分,共24分)

1.有以下程序

int f(int a){ int b=0; static c=3; b=b+1; c=c+1; return(a+b+c); }

main(){ int a=2, i; for(i=0; i<3; i++) printf("%2d", f(a)); }

结果是 7 8 9 。

2.有以下程序

void f(int y, int *x){ y=y+*x; *x=*x+y; }

main(){ int x=2, y=4; f(y, &x); printf("x=%d,y=%d\n", x,y); }

结果是 x=8,y=4 。

3.#define LETTER 1

#include <stdio.h>

void main()

{ char str[20]="C Language", c; int i=0;

while((c=str[i])!='\0')

{ i++;

#ifdef LETTER

if(c>='a' && c<'z') c=c+1;

else if(c=='z') c=c-25;

#else

if(c>='B' && c<='Z') c=c-1;

else if(c=='A') c=c+25;

#endif

printf("%c", c);

}

}

结果是 C Lbohvbhf 。

4.void fun(int *a, int i, int j)

{ int t;

if(i<j)

{ t=a[i]; a[i]=a[j]; a[j]=t;

i++; j--;

for(i=0; i<4; i++) printf("%2d", a[i]);

fun(a, i, j);

}

}

main()

{ int x[]={ 2, 6, 1, 8}, i; fun(x, 0, 3);

for(i=0; i<4; i++) printf("%2d", x[i]);

}

结果是 8 6 1 2 8 6 1 2 。

四.程序填空(每空1分,共8分)

下面程序的功能是:计算从命令行中输入的第2个参数开始的所有参数中是回文字符串的参数个数。(顺读和倒读都一样的字符串称为“回文”,如level就是回文)请填空。

#include <stdio.h>

int sumhw( char **p, int n); char jughw(char *str);

main(int argc, char *argv[])

{ int s;

if (argc<2) puts("请输入有效参数");

else

{ printf("共有%d个回文串\n", s);

}

}

int sumhw(char **p,int n)

{ char flag; int i, sum=0;

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

{ }

return sum;

}

char jughw(char *str)

{ char *p1, *p2; int n;

n=strlen(str); p1=str; p2= ;

while( )

{ if(*p1!=*p2) break; else {p1++; ; } }

return 'N';

else return 'Y';

}

五.编程题(30分)

1.用指针和数组两种方法实现如下功能:将一个字符串按逆序存放。(18分)

要求

(1)主函数中完成输入和输出字符串。

(2)逆序存放功能用子函数完成。

(1)数组法

#include <string.h>

#include <stdio.h>

#define N 20

void inv(char str[], int n)

{ int i, j, t;

for(i=0, j=n-1; i<=j; i++, j--) { t=str[i]; str[i]=str[j]; str[j]=t; }

}

void main(){ char str[N]; gets(str); inv(str, strlen(str)); puts(str); }

(2)指针法

#include <string.h>

#include <stdio.h>

#define N 20

void inv(char *str, int n)

{ char *i, *j, t;

for(i=str, j=str+n-1; i<=j; i++, j--) { t=*i; *i=*j; *j=t; }

}

void main(){ char str[N]; gets(str); inv(str, strlen(str)); puts(str); }

2.一个整型数组有10个元素,编程删除所有值为n的元素。(12分)

要求

(1)主函数完成n的输入,数组元素输入以及删除后数组元素的输出。

(2)删除功能用子函数完成。

int m;

void del_element(int num[], int n)

{ int i, j;

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

if(num[i]==n)

{

for(j=i+1; j<m; j++) num[j-1]=num[j];

m--; i--;

}

}

void main()

{ int num[10], i, n; m=10;

for(i=0; i<10; i++) scanf("%d", &num[i]);

scanf("%d", &n); del_element(num, n);

for(i=0; i<m; i++) printf("%d ", num[i]);

}

…… 此处隐藏:1259字,全部文档内容请下载后查看。喜欢就下载吧 ……
c语言程序设计期末试题A.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219