一、单项选择题(每题3分,共30分,注意:答案写在后面的答题卡内,否则0分)
1、若有定义:int a=8, b=5, c; 执行语句c = a/b+0。4 ;后,c的值为( )。
A) 1.4 B) 1 C) 2。0 D) 2
2 、以下程序中,while 循环的次数是( )。
#include <stdio。h〉
void main(void)
{ int i = 0;
while (i<10) {if (i〈1) continue;
if (i= =5) break; i++; } }
A) 1 B) 死循环,不能确定次数 C) 6 D) 10
3、以下程序的输出结果是( )。
#include <stdio.h〉
void main(void)
{ int a = 0, i;
for (i=1; i<5; i++)
{ switch (i) { case 0:
case 3: a += 2;
case 1:
case 2: a += 3;
default: a += 5; }
}
printf(“%d\n", a);
}
A) 31 B) 13 C) 10 D) 20
4、以下程序的输出结果是( )。
#include <stdio。h〉
void main(void)
{ int a = 5, b = 4, c = 6, d;
printf(“%d\n”, d=a>b?(a>c?a: c): b);
}
A) 5 B) 4 C) 6 D) 不确定
5、执行以下程序后的输出结果是( )
#include <stdio.h>
void main(void)
{
char a[]="abc\0abc";
printf(“%s", a);
}
A) abc\0abc B) abc\ C) abc\0 D) abc
6、当调用函数时,实参是一个数组名,则向函数传送的是( )。
A) 数组的长度 B) 数组的首地址
C) 数组每一个元素的地址 D) 数组每个元素中的值
A) 数组的长度 B) 数组的首地址
C) 数组每一个元素的地址 D) 数组每个元素中的值
7、执行以下程序后,a的值为( ).
int *p, a = 10, b=1;
p = &a; a = *p + b;
A) 12 B) 编译出错 C) 10 D) 11
8、以下正确的叙述是( ).
A) 在C语言中,main函数必须位于文件的开头
B) C语言每行中只能写一条语句
C) C语言本身没有输入、输出语句
D) 对一个C语言进行编译预处理时,可检查宏定义的语法错误
9、以下程序的输出结果是( )。
void main(void)
{ int a = 4, b = 5, c = 0, d;
d = !a && !b || !c;
printf(“%d\n”, d);
}
A) 1 B) 0 C) 非0的数 D) –1
10、执行以下程序段后,变量y的值是( )。
int x, y;
x = 1;
y = (++x*5);
A) 5 B) 10 C) 15 D) 20
单项选择题答题卡 | |||||||
1 | 2 | 3 | 4 | 5 | 空值是指零长度的字符串6 | 7 | 8 |
B | B | A | C | D | B | D | C |
9 | 10 | ||||||
A | B | ||||||
评分标准:每题选对满分,选错0分。
二、分析结果题(20分)
1、(9分)
#include <stdio。h〉
void f(int c)
{ int a=0;
static int b=0;
a++;
b++;
printf(”%d: a=%d, b=%d\n”, c, a, b);
}
void main(void)
{ int i;
for (i=1; i<=3; i++) f( i );
}
运行结果为:
1: a=1,b=1
2: a=1,b=2
3: a=1,b=3
评分标准:写对一行给3分,全写对给9分。
2、(11分)
#include <stdio.h>
void main(void)
{
int num,c;
num=2004;
do {
c=num%10;
printf(”%d”,c);
} while((num/=10)>0);
printf(”\n");
}
运行结果为:4002
评分标准:写对11分,否则0分。
三、程序填空题(每空4分,共20分)
1、求1!+2!+3!+.。。+10!
#include <stdio。h>
void main(void)
{
float s = 0, t = 1;
int n;
for (n=1; n〈=10 ; n++) {
t=t*n ;
s=s+t ; }
printf(“1!+2!+3!+.。.+10!=%f", s);
}
评分标准:写对一个空4分。
2、以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。
void exchange(int *x, int *y)
{
void exchange(int *x, int *y)
{
int t;
t=*y;
*y = * x ;
*x = t ;}
评分标准:写对一个空4分。
四、程序设计题(30分)
(1)sum=2+5+8+11+14---—,输入正整数n,求sum的前n项和。(10分)
void main()
{
int n,i,t,sum=0; //1 分
scanf(”%d",&n); //1分
t=2; //1分
for(i=1;i<=n;i++) //2分
{
sum=sum+t; //2分
t=t+3; //2分
}
printf("sum=%d”,sum); //1 分
}
(2) 今有100块砖,需100人来搬,男搬4,女搬3,两个小孩搬一砖.
问男、女、小孩各几何?(8分)
# include ”stdio.h"
void main( )
{ int man,woman,child; //1分
for(man=0;man<=100;man++) //1分
for(woman=0;woman<=100;woman++) //1分
for(child=0;child〈=100;child++) //1分
{
if (8*man+6*woman+child==200 && man+woman+child==100) //2分
printf(”%d %d %d\n”,man,woman,child); //2分
}
}
(3)求一个矩阵外围元素之和。(12分)
#include 〈stdio。h〉
#define N 4
#define M 5
double matrix_sum(double matrix[][M])
{ double sum=0;
int k;
for (k=0;k<N;k++)
{sum=sum+matrix[k][0];
sum=sum+matrix[k][M-1]; //3分
}
for (k=1;k<M-1;k++)
{sum=sum+matrix[0][k];
sum=sum+matrix[N-1][k]; //3 分
}
return sum; //1 分
}
void main()
{
int i,j;
double matrix_source[N][M];
double t;
double result;
for (i=0;i<N;i++)
for (j=0;j〈M;j++)
{scanf("%lf”,&t); // 1 分
matrix_source[i][j]=t; // 2分
}
result=matrix_sum(matrix_source); //2 分
printf("%lf\n",result);
}
二、单项选择题(每题2分,共30分,注意:答案写在后面的答题卡内,否则0分)
1、下面哪一个是正确的标识符( )
A qbc? B bc$ C _bc D 2bc
2、设有int a[6]={1,2,3,4,5,6},*p=a;则*(p+3)与(*a+3)的值为( )
A 1,3 B 3,3 C 4,4 D 4,6
3、 设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a〉b)&&(n=c>d)运算后,n的值为( )
A 0 B 1 C 2 D 3
A 0 B 1 C 2 D 3
4、t为int类型,进入下面的循环之前,t的值为0
while( t=l )
{ ……}
则以下叙述中正确的是( )
A 循环控制表达式的值为0 B 循环控制表达式的值为1
C 循环控制表达式不合法 D 以上说法都不对
while( t=l )
{ ……}
则以下叙述中正确的是( )
A 循环控制表达式的值为0 B 循环控制表达式的值为1
C 循环控制表达式不合法 D 以上说法都不对
5、设int i=4,j=8,k;则表达式k=(i++,++i,j++)的值为( )
A 4 B 8 C 9 D 10
6、有宏定义 #define MULT1(a,b) a*b
#define MULT2(a,b) (a)*(b)
A 4 B 8 C 9 D 10
6、有宏定义 #define MULT1(a,b) a*b
#define MULT2(a,b) (a)*(b)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论