一、选择题(每小题 3 分,共 72 分)
1. 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】输入一批以-1 结束的整数,求偶数和。例如:输入 2 5 1 6 3 -1,输出 sum=8。
【程序】
#include
void main()
{
int x ,sum;
sum=0;
(1)
(2)
(3)
(4)
;
{
;
)
if(
sum=sum+x;
}
printf(“sum=%d” ,sum);
}
【供选择的答案】
(1) A、scanf(“%lf”,x)
(2) A、while(x ==-1)
(3) A、x==2
(4) A、scanf(“%d”, &x)
B、scanf(“%d”,&x) C、scanf(“%d”,*x) D、scanf(“%lf”,&x)
B、while(x!=-1)
B、x%2==2
B、scanf(“%d”,x)
C、if(x==-1)
C、x%2==0
C、sum=0
D、if(x!=-1)
D、x/2==0
D、x=sum
2. 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】以下程序调用函数 f,将一个整数首尾倒置,若程序输入 12345,则输出 54321;
若程序输入-34567,则输出-76543。
【程序】
#include
#include
(5)
{
long m,y=0;
(6)
;
while ( m!=0 ) {
y=y*10+m%10;
}
if ( n>=0 )
return
else
(7)
y;
(8)
}
void main()
{
putchar(’ ’);
;
;
printf ("%ld\t",f (12345) ) ;
printf ("%ld\n",f (-34567) ) ;
}
【供选择的答案】
(5) A、long f(long n);
(6) A、m=n
(7) A、m=m/10
(8) A、return n
B、long f(long n)
B、m=-n
B、m=m*10
B、return 0
C、long f(int n)
C、m=fabs(n)
C、m=m%10
C、return 1
D、int f(long n)
D、m=y
D、m=n/10
D、return –y
3. 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】输入 10 个整数,将它们从小到大排序后输出。
运行示例:
Enter 10 integers: 1 3 -9 80 150 7 0 6 5 37
After sorted: -9 0 1 3 5 6 7 37 80 150
【程序】
#include
void main( )
{
int i, j, t, a[10];
printf("Enter 10 integers: ");
for(i = 0; i < 10; i++)
(11)
; j++)
);
;
){
scanf(
(9)
for(i = 1; i < 10; i++)
for(
(10)
(12)
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
if(
}
printf("After sorted: ");
for(i = 0; i < 10; i++)
printf("%d ", a[i]);
printf("\n");
}
【供选择的答案】
(9) A、"%f", a[i]
(10) A、j = 0
(11) A、j > i
(12) A、a[j-1] < a[j]
B、"%lf", a+i
B、j = 1
B、j < 9 - i
B、a[j] > a[j+1]
C、"%s", a
C、j = i
C、j < 10 - i
C、a[j] < a[j+1]
D、"%d", &a[i]
D、j = i - 1
D、j > i - 1
D、a[i] < a[j]
4. 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
#include
void main( )
{
int k;
for(k = 5; k > 0; k--){
if(k==3)
break;
/* 第 6 行 */
printf("%d ", k);
}
}
(13) 程序的输出是
(13)
B、5 4 2 1
。
C、5 4
A、5 4 3 2 1
D、3
(14) 将第 6 行中的 break 改为 continue 后,程序的输出是
D、3
A、5 4 3 2 1
B、5 4 2 1
C、5 4
(14)
。
(15) 将第 6 行中的 break 删除(保留分号)后,程序的输出是
(15)
。
B、5 4 2 1
A、5 4 3 2 1
C、5 4
(16) 将第 6 行全部删除后,程序的输出是
C、5 4
A、5 4 3 2 1
B、5 4 2 1
D、3
(16)
。
D、3
5. 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】输入一个字符串和一个正整数 m,将该字符串中的前 m 个字符复制到另一个字
符串中,再输出后一个字符串。
运行示例 1:
Enter a string: How are you!
Enter an integer: 7
The new string is How are
运行示例 2:
Enter a string: How are you!
Enter an integer: 70
The new string is How are you!
运行示例 3:
Enter a string: How are you!
Enter an integer: 0
The new string is
【程序】
#include
#include <
(17)
void main( )
{
char s[80], t[80], i, m;
printf("Enter a string:");
gets(s);
printf("Enter an integer:");
scanf("%d", &m);
>
for(i = 0;
(18)
; i++)
(19)
;
(20)
printf("The new string is ");
puts(t);
}
【供选择的答案】
(17) A、ctype.h
(18) A、i < m
(19) A、*s++ = *t++
(20) A、*++t = '\0';
B、math.h
B、s[i]!= '\0'
B、t[i] = s[i]
B、;
D、string.h
C、stdio.h
C、s[i]!= '\0' && i < m D、s[i]!= '\0' || i < m
C、*t++ = *s++
C、*++s = '\0';
D、s[i] = t[i]
D、t[i] = '\0';
6. 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。
计算两位学生的平均成绩,保存在结构中,然后列表输出学生的姓名和平均成绩。
#include
struct student
{
char name[8];
int math;
int english;
int average;
};
void GetAverage(______(21)______)
{
int sum=0;
sum = ______(22)______;
p->average = sum/2;
}
void main()
{
int i;
struct student stu[2]={{"Mary", 90, 95, 0},{"John ", 88, 80, 0}};
for(i=0;i<2;i++)
GetAverage(______(23)______);
printf("Name\tAverage\n");
for(i=0;i<2;i++)
printf(______(24)______);
}
【供选择的答案】
(21) A、struct *p
C、struct student p
(22) A、p->math+p->english
C、stu[i]->math+stu[i]->english
(23) A、stu
C、stu [i]
B、struct student *p
D、student *p
B、p.math+p.english
D、stu[i].math+stu[i].english
B、&stu
D、&stu[i]
(24) A、"%s\t %d\n", stu[i]->name, stu[i]->average
C、"%s\t %d\n", stu[i].name, stu[i].average
B、"%d\n", stu[i]
D、"%s\n", stu[i]
二、编程题(共 28 分)
1. 写程序,输入 100 个整数并将其保存在数组中,输出该数组中绝对值最大的元素及其下标
值(注:如果具有最大绝对值的元素个数不止一个,那么输出第一个绝对值最大的元素及
其下标)。(14 分)
2. 写程序,在主函数中输入一个正整数 n,求下列算式的值。要求定义和调用 2 个函数:sumn(n)
计算累加和 1+2+…+n; mypow(n)计算 n 的 n 次幂(即 nn),2 个函数的返回值类型都是
double。 (14 分)
1
2
2
21
3
3
321
4
4
4321
)1(
...
n
1
n n
...
21
n
一、选择题(每小题 3 分,共 72 分)
1. BBCA 2. BCAD 3. DACB 4. CBAD 5.DCBD 6. BADC
二、编程(共 28 分)
1. (14 分)
#include
#include
void main( )
{
(2 分)
int i,a[100];
int max, maxi;
for(i=0;i<100;i++) scanf("%d",&a[i]);
max= a[0];
maxi=0;
for(i=1;i<100;i++)
if(fabs(a[i])> fabs(max) ){
max= a[i];
maxi=i;
}
(1 分)
(2 分)
(2 分)
(1 分)
(4 分)
printf("max=%d, maxi=%d\n", max, maxi);
(2 分)
}
2. (14 分)
#include
double sumn(int n)
{
double p=0;
int i;
for( i=1; i<=n; i++)
return p;
}
p+=i;
(1 分)
(1 分)
(1 分)
(1 分)
double mypow(int n)
{
int i;
double s=1;
for( i=1; i<=n; i++)
return s;
s*=n;
(1 分)
(1 分)
(1 分)
(1 分