900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > c高级语言程序设计B试题 --2-《高级语言程序设计(C)》期末考试-题

c高级语言程序设计B试题 --2-《高级语言程序设计(C)》期末考试-题

时间:2023-04-13 23:27:44

相关推荐

c高级语言程序设计B试题 --2-《高级语言程序设计(C)》期末考试-题

一.判断题:

1-1

局部变量如果没有指定初值,则其初值不确定。 (2分)

T

F

1-2

实参向形参进行数值传递时,数值传递的方向是单向的,即形参变量值的改变不影响实参变量的值。(2分)

T

F

1-3

文件的读函数是从输入文件中读取信息,并存放在内存中。(2分)

T

F

1-4

C语言中,编译预处理后,所有的符号常量名和宏名都用相应的字符串替换。(2分)

T

F

1-5

用typedef可以增加新类型。(2分)

T

F

答案:

T T T T F

二.单选题:

2-1

以下数组定义中错误的是( )。(2分)

A.

int x[][3]={0};

B.

int x[2][3]={{1,2},{3,4},{5,6)};

C.

int x[][3]={{1,2,3},(4,5,6)};

D.

int x[2][3]={1,2,3,4,5,6};

2-2

以下不正确的赋值或赋初值的方式是( )。(2分)

A.

char str[]="string";

B.

char str[7]={'s', 't', 'r', 'i', 'n', 'g'};

C.

char str[10];str="string";

D.

char str[7]={'s', 't', 'r', 'i', 'n', 'g', ’\0’};

2-3

以下枚举类型的定义中,正确的是()。(2分)

A.

enum a={one,two,three};

B.

enum a{one=9,two=-1,three};

C.

enum a={"one","two","three"};

D.

enum a{"one","two","three"};

2-4

若定义pf为指向float类型变量f的指针,下列语句中__是正确的。(2分)

A.

float f, *pf = f;

B.

float f, *pf = &f;

C.

float *pf = &f, f;

D.

float f, *pf =0.0;

2-5

在单链表中,若p所指的结点不是最后结点,在p之后插入s所指结点,则执行( )(2分)

A.

s->next=p; p->next=s;

B.

s->next=p->next; p=s;

C.

s->next=p->next; p->next=s;

D.

p->next=s; s->next=p;

答案:

B C B B C

三.函数题:

递归求Fabonacci数列 (15分)

本题要求实现求Fabonacci数列项的函数。Fabonacci数列的定义如下:

f(n)=f(n?2)+f(n?1) (n≥2),其中f(0)=0,f(1)=1。

函数接口定义:

int f( int n );

裁判测试程序样例:

#include

int f( int n );

int main()

{

int n;

scanf("%d", &n);

printf("%d\n", f(n));

return 0;

}

/* 你的代码将被嵌在这里 */

输入样例:

6

输出样例:

8

参考答案:

int f( int n )

{

do

{

if(n==0)

{

return 0;

break;

}

else

if(n==1)

{

return 1;

break;

}

else

{

return(f(n-2)+f(n-1));

}

}while(n>=0);

}

四.编程题:

4-1 成绩转换 (15分)

本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:

大于等于90分为A;

小于90且大于等于80为B;

小于80且大于等于70为C;

小于70且大于等于60为D;

小于60为E。

输入格式:

输入在一行中给出一个整数的百分制成绩。

输出格式:

在一行中输出对应的五分制成绩。

输入样例:

90

输出样例:

A

参考代码:

#include

#include

main()

{

int a;

scanf("%d",&a);

if(a>=90)

printf("A");

else

if(a>=80)

printf("B");

else

if(a>=70)

printf("C");

else

if(a>=60)

printf("D");

else

printf("E");

}

4-2 输出100~200之间素数 (15分)

求出100~200之间的全部素数,每行输出8个数,每个数宽度为5列。

输出格式:

每行输出8个素数数,每个素数宽度为5列。

输出样例:

101 103 107 109 113 127 131 137

139 149 151 157 163 167 173 179

181 191 193 197 199

参考代码:

#include

#include

int sushu(int a);

int sushu(int a)

{

int i,flag=1;

if(a==1)

return 0;

else

{

for(i=2;i<=sqrt(a);i++)

{

if(a%i==0)

{

flag=0;

break;

}

}

if(flag==1)

return 1;

else

return 0;

}

}

main()

{

int i,j=0;

for(i=100;i<=200;i++)

{

if(sushu(i)==1)

{

printf("%5d",i);

j++;

if(j==8 || j==16||j==24)

printf("\n");

}

}

}

4-3 交换最小值和最大值 (15分)

本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。

注意:题目保证最大和最小值都是唯一的。

输入格式:

输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。

输出格式:

在一行中顺序输出交换后的序列,每个整数后跟一个空格。

输入样例:

5

8 2 5 1 4

输出样例:

1 2 5 4 8

参考代码:

#include

#include

int main()

{

int a[10],b[10],n,i,j,k,t;

scanf("%d",&n);

for(i=0;i

{

scanf("%d",&a[i]);

b[i]=a[i];

}

for(i=0;i

{

k=i;

for(j=i+1;j

{

if(a[k]

k=j;

}

if(k!=i)

{

t=a[k];

a[k]=a[i];

a[i]=t;

}

}

for(i=0;i

{

if(a[n-1]==b[i])

{

t=b[0];

b[0]=b[i];

b[i]=t;

}

}

for(i=0;i

{

if(a[0]==b[i])

{

t=b[n-1];

b[n-1]=b[i];

b[i]=t;

}

}

for(i=0;i

{

printf("%d ",b[i]);

}

}

4-4 计算职工工资 (20分)

给定N个职员的信息,包括姓名、基本工资、浮动工资和支出,要求编写程序顺序输出每位职员的姓名和实发工资(实发工资=基本工资+浮动工资-支出)。

输入格式:

输入在一行中给出正整数N。随后N行,每行给出一位职员的信息,格式为“姓名 基本工资 浮动工资 支出”,中间以空格分隔。其中“姓名”为长度小于10的不包含空白字符的非空字符串,其他输入、输出保证在单精度范围内。

输出格式:

按照输入顺序,每行输出一位职员的姓名和实发工资,间隔一个空格,工资保留2位小数。

输入样例:

3

zhao 240 400 75

qian 360 120 50

zhou 560 150 80

输出样例:

zhao 565.00

qian 430.00

zhou 630.00

参考代码:

#include

struct str

{

char name[20];

float ji;

float fu;

float zhi;

float shi;

}t[10000];

int main()

{

int n,i;

scanf("%d",&n);

for(i=0;i

{scanf("%s %f %f %f",t[i].name,&t[i].ji,&t[i].fu,&t[i].zhi);

t[i].shi=t[i].ji+t[i].fu-t[i].zhi;

}

for(i=0;i

{

printf("%s %.2f\n",t[i].name,t[i].shi);

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。