c语言程序设计考试题 字符串,C语言程序设计期末考试模拟试卷

  • Post author:
  • Post category:其他


单项选择题

在下列各题的备选项中,请选择一个最符合题意的选项。

1) 若有以下程序段

int r=8;

printf(“%d\n”,r>>1);

输出结果:是( )。

A.4

B.8

C.16

D.2

2) 若有以下语句

typedef struct S {

int g;

char h;

} T;

以下叙述中正确的是( )。

A.可用T定义结构体变量

B.可用S定义结构体变量

C.S是struct类型的变量

D.T是struct S类型的变量

3) 以下选项中,当x为大于1的奇数时,值为0的表达式是( )。

A.x%2==0

B.x/2

C.x%2!=0

D.x%2==1

4) 有以下程序

#include

#define f(x) x*x*x

main()

{

int a=3,s,t;

s=f(a+1);

t=f((a+1));

printf(“%d,%d\n”,s,t);

}

程序运行后的输出结果是( )。

A.10,64

B.10,10

C.64,10

D.64,64

5) char w;int x;float y;则表达式w*x+y-3.14的结果类型是()。

A.float

B.char

C.int

D.Double

6) 若执行以下程序时从键盘上输入3和4,则输出的结果是( )。

main()

{

int a,b,s;

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

s=a;

if(a

s*=s;

printf(“%d\n”,s);

}

A.14

B.16

C.18

D.20

7) 下面程序的输出结果是( )。

#include

#define SUB(X,Y) (X)*Y

main()

{

int a=3,b=4;

printf(“%d\n”,SUB(a++,b++));

}

A.12

B.15

C.16

D.20

8) 指针s所指字符串的长度为( )。

char *s=”\\abc\\\n”;

A.9

B.7

C.6

D.说明不合法

9) 对于以下的变量定义,表达式( )不符合C语言语法。

struct node {

int len;

char *pk;

} x = {2, “right”}, *p = &x;

A.p->pk

B.*p.pk

C.*p->pk

D.*x.pk

10) 若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为( )。

A.-1

B.0

C.1

D.3

填空题

请将下列试题的空白处补充完整。

1) C语言程序总是从( )函数开始执行。

2)
bVzW6Y
的C语言表达式( )。

3) 下列程序的输出结果为________。

#include

main()

{

int m=8;

if(m–<8) printf(“%d\n”,++m);

else printf(“%d\n”,–m);

}

4) 若有说明int a[3][4]={

{1,2}, {0}, {4,6,8,10}},则a数组的元素个数为( )。

5) 己知int a[][3]={1,2,3,4,5,6};,数组元素a[1][1]的值是( )。

6) 有以下程序,执行后输出结果是____。

#include

main()

{

unsigned char a,b;

a=4|3;

b=4&3;

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

}

程序填空题

请将下列程序中的空白处补充完整。

1) 本程序中函数fun的功能是将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入”Ab,cD”,则输出”ab,cd”。请将下述程序补充完整(注意:不改动程序的结构,不得增行或删行)。

#include

#include

#include

char 【1】 fun(char tt[])

{

int i;

for(i=0;tt[i];i++)

{

if((tt[i]>=’A’)&&(tt[i]<= 【2】 ))

tt[i]+=32;

}

return(tt);

}

main()

{

char tt[81];

printf(“\nPlease enter a string: “);

gets(tt);

printf(“\nThe result string is: \n%s”,fun( 【3】 ));

}

2) 以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请填空。

main( )

{ int x[10],a[9],i;

for (i=0;i<10;i++)scanf(“%d”,&x[i]);

for( 【1】 ;i<10;i++)

a[i-1]=x[i]+ 【2】 ;

for(i=0;i<9;i++) printf(“%d”,a[i]);

printf(“\n”);

}

程序改错题

请按要求修改下列程序中的错误。

1) 下列给定程序的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。例如,若输入“good luck!”,则应输出“Good Luck!”。

请修改程序中的错误,使程序能得出正确的结果。

注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。

#include

#include

#include

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

void top(char s)

{

int i=0;

for(;*s;s++)

if(i)

{

if(*s==’ ‘)

i=0;

}

else

{

if(*s!=’ ‘)

{

i=1;

*s=toupper(*s);

}

}

}

main()

{

char str[81];

printf(“\nPlease enter an English text line: “);

gets(str);

printf(“\n\nBefore changing:\n %s”,str);

top(str);

printf(“\nAfter changing:\n %s\n”,str);

}

2) 下列给定的程序中,函数fun的功能是交换主函数中两个变量的值。例如,若变量x中的值为1,y中的值为2,则程序运行后x中的值为2,y中的值为1。

请修改程序中的错误,得出正确的结果。

注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。

#include

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

void fun(int a,int b)

{

int t;

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

t=a;a=b;b=t;

}

main()

{

int x,y;

x=1;

y=2;

fun(&x,&y);

printf(“the result is %d,%d\n”,x,y);

}

程序设计题

请按照试题要求,完成规定的程序设计。

1) 编写程序验证歌德巴赫猜想:1000-2000中的每一个偶数都可以表示成两个素数之和。如果此猜想成立,显示”all numbers are OK!;否则显示”n is not OK!”,这里n是第一个使猜想不成立的偶数。

2) 编写程序,实现如下功能:

对键盘输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如,输入的两个字符串分别为”abcdefg”和”abceef”,则输出为-1。

3) N名学生的成绩已经在主函数中放入一个带头结点的链表结构中,head指向链表的头结点。请编写程序,它的功能是求出平均分、由函数值返回。