资源描述
资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。
B卷
— 第二学期
《程序设计语言(C)》
参考答案和评分标准
专业班级
姓 名
学 号
开课系室 软件工程系
考试日期 7月3日
题 号
一
二
三
总分
得 分
阅卷人
程序设计语言(C)试卷( B卷) 答题卡
说明: 1.选择题和判断题必须填在答题卡上才有效, 综述题写在指定位置。
得分
2.本试卷共13页, 不得拆开。
一、 单项选择题( 正确的答案涂黑或画圈,20分)
1
A
B
●
D
11
A
B
●
D
2
A
●
C
D
12
●
B
C
D
3
●
B
C
D
13
A
●
C
D
4
A
●
C
D
14
A
B
C
●
5
●
B
C
D
15
●
B
C
D
6
A
●
C
D
16
A
●
C
D
7
A
B
C
●
17
A
B
C
●
8
A
B
●
D
18
A
●
C
D
9
A
B
●
D
19
A
●
C
D
10
A
●
C
D
20
A
B
C
●
得分
二、 读程序填空题
( 在空格处填写正确答案, 20分)
⑴
12
⑹
a[10]或a[]
⑵
&a[i]
⑺
a [i-1]
⑶
i%4==0
⑻
a[10-1-i ]
⑷
*q++ = *p++或
*(q+i)=*(p+i)或
b[i]=a[i]
⑼
>0
⑸
q=b
⑽
i
得分
三、 编程题( 60分, 在下面的空白处编写程序)
1、 编程计算下面函数的值, 其中x由键盘输入。( 12分)
-1 x≤-1
y= -1<x<1
(x+1)2 x≥1
参考答案:
#include <math.h>
main()
{
int x;
float y;
printf("input x \n");
scanf("%d",&x);
if(x<=-1) y=-1;
else if(x>-1 && x<1) y=exp(x);
else y=(x+1)*(x+1) ;
printf("%f",y);
}
[评分标准]: 头文件、 程序框架占2分; 读入x值占1分; 每个分支语句各占3分, 共9分。
2. 一球从200米高度自由落下, 每次落地后反跳回原高度的一半再落下, 求它在第15次落地时, 共经过多少米? 第15次反弹多高? (6分)
参考答案:
#include <stdio.h>
main( )
{ float sn=200.0,hn=sn/2;
int n;
for(n=2;n<=15;n++)
{ sn=sn+2*hn;
hn=hn/2;
}
printf(”第15次落地共经过%f米\n”,sn);
printf(”第15次反弹%f米\n”, hn);
}
[评分标准]: 头文件、 程序框架占2分; 变量初始化占1分; for循环占3分。
3.编写一函数sum,求二维数组(M*M)上三角(含对角线)之和。( 12分)
参考答案:
int sum(int a[M][M])
{
int s=0,k,n; /*变量声明*/
for(k=0;k<M;k++)
for(n=k;n<M;n++)
s+=a[k][n]; /*求和*/
return s; /*返回结果*/
}
[评分标准]: 函数头4分(返回类型、 数组说明各占2分);返回语句占3分; 内层循环占3分; 外层循环占1分; 元素求和占1分。
4. 从键盘上输入数组str(长度不大于100), 再从键盘上输入一个字符, 从数组str中删除该字符, 并输出删除字符后的字符串。( 12分)
参考答案:
#include <stdio.h>
void main()
{ char str[100],ch; /*下标从0到99*/
int m=0,k=0;
while((str[m]=getchar())!='\n') m++;
str[m]= '\0';
ch=getchar();
for(m=0;str[m]!=‘\0’;m++)
if(str[m]!=ch) {str[k]=str[m];k++;}
str[k]=‘\0’;
puts(str);
}
[评分标准]: 头文件、 程序框架占2分; 变量定义及初始化部分占2分; str结束条件判断占2分; for循环占2分; 删除指定字符( 符合条件的保留) 占2分; str赋字符串结束标记占1分; 输出字符串占1分。
5. 找出数组a[N]中的最大数及其下标。( 10分)
参考答案:
#define N 10
#include <stdio.h>
main()
{ int a[N]={ 3,1,8,5,11,23,9,6, 4, 7};
int k,max,i;
max=a[0];k=0;
for(i=1;i<N;i++)
if(a[i]>max) {max=a[i];k=i;}
printf("max=a[%d]=%d\n", k,max);
}
[评分标准]: 头文件、 程序框架占2分; 变量定义及初始化部分占2分; 数组定义及初始化部分占2分 ; for循环占2分;找出最大值比占1分; 找出下标占1分。
6.编写子函数search, 从字符串str中查找某字符ch( str、 ch由主函数提供) 第一次出现的位置和出现的次数; 函数返回字符的位置, 若串str中没有字符ch, 则返回-1。比如: 当str为"abmcmnkt",ch为'm'时, 位置为3, 次数为2。要求: 不允许使用全局变量。
主程序部分源代码如下。( 8分)
参考答案:
#include<stdio.h>
int search(char str[], char ch, int *p)
{
int i,j=0,a[10];
for(i=0;i<strlen(str);i++)
{
if(str[i]= =ch)
{
a[j++]=i;
}
}
*p=j;
return (a[0]+1);
}
[评分标准]: 头文件、 程序框架占2分; 形参定义占1分; 变量定义及初始化部分占1分; for循环及找出字符串中与所给字符相同的字符占3分; 返回值占1分。
main()
{
int k,m;
char string[20] ,ch;
printf("input a string and a character\n");
gets(string);
ch=getchar();
k=search(string,ch,&m);
printf("the first position is %d and the number of this character is %d\n",k,m);
}
展开阅读全文