c语言学习
一、选择
(每小题1分,共10分) 1(有如下程序:
main()
{ int n=9;
while(n>6)
{ n--;
printf("%d",n);
}
}
该程序的输出结果是【 】。
A(987 B(8765 C(876 D(9876
2(有如下程序:
main()
{ int x=1,a=0,b=0;
switch(x)
{ case 0: b++;
case 1: a++;
case 2: a++;b++; }
printf("a=%d,b=%d\n",a,b);
}
该程序的输出结果是【 】。
(a=2,b=1 B(a=1,b=1 C(a=1,b=0 D(a=2,b=2 A
3(有如下程序:
main()
{ float x=2.0,y; if(x<0.0) y=0.0;
else if(x<10.0) y=1.0/x;
else y=1.0;
printf("%f\n",y); }
该程序的输出结果是【 】。
A(0.000000 B(0.250000 C(0.500000 D(1.000000
4(有如下程序:
int add(int a,int b) { return(a+b);
}
main()
{ int x=3,y=6,z=9,r;
r=add(add(x,y),z);
printf("%d\n",r); }
该程序的输出结果是【 】。
A(15 B(16 C(17 D(18
5(有如下程序段:
int *p,a=13,b=2; p=&a; a=*p+b;
执行该程序段后,a的值是【 】。 A(16 B(15 C(14 D(编译出错
7(有如下程序:
#define N 2
#define M N+1
#define NUM 2*M+1 main()
{ int i;
for(i=1;i<=NUM;i++) printf("%d\n",i);
}
该程序中的for循环执行的次数是【 】。 A(5 B(6 C(7 D(8
8(有如下程序段:
int a=14,b=15,x; char c='A';
x=(a&&b)&&(c<'B');
执行该程序段后,x的值为【 】。 (true B(false C(0 D(1 A
9(若有如下定义:
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为9的
达式是【 】。
A(*p+9 B(*p+=9 C(*(p+8) D(p+8
10(有如下程序:
main()
{ int n[5]={3,3,3},i,k=2;
for(i=0;i
main()
{
int i,j,k;
i=12;
j=20;
k=i+j;
printf("k=i+j=%d\n",k);
}
2(以下程序的输出结果是【 】。
#include
main( )
{ float x,y=9.5;
x=-12.34;
if (x>0) y=1;
if (x=0) y=0;
if (x<0) y=-1;
printf("x=%f\ny=%f",x,y);
}
3
4(以下程序的输出结果是【 】。
#include
main()
{
char *p[]={"POOL","opk","he","SP"};
int i;
for(i=3;i>=0;i--)printf("%c",*p[i]);
printf("\n");
}
5(以下程序的输出结果是【 】。
#include
int y=5;
void sub(int x)
{ int y = 1;
y+=x++;
printf("sub: y=%d\n",y);
}
main()
{
int x = 3;
sub(x);
y+=x++;
printf("main: y=%d\n",y);
}
6(以下程序的输出结果是【 】。
#include main()
{ int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0,
for(i=1,i<3,i++)
for(j=0,j<=i,j++) s+=a[i][j],
printf("%d\n"~s),
}
三、填空题 (每空2分,共22分)
1(以下函数返回a所指数组中最小值所在的下标值,请填空。
int fun(int *a,int n)
{
int i,p;
for(i=1;i0
符号函数即:y=f(x)= 0 x=0
-1 x<0
3(请编写一个输出如下图案的程序。
* * * * * * * * * * * * * * * *
要求:必须用循环结构实现。
4(请编写子函数 sub_fun(int x),返回1-2+3-4+…+99-100的值。 5(请编写一个实现对数组a的10个数{20,50,30,10,60,80,100,70,70,40}按从小到
大排序的程序。
参考和评分标准 一、选择题(每小题1分,共30分) 题号 1 2 3 4 5 6 7 8 9 10
编号 C A C D B B B D C A
二、阅读程序,写出运行结果(每小题3分,共27分)
题号 输出结果 题号 输出结果 题号 输出结果
x=0.000000
1 k=i+j=32 2 3 315
y=9.500000
sub: y=4
4 ShoP 5 6 18
main: y=8
三、填空题 (每空2分,共30分)
1(p=0;
p=i
2('\0'或0
n++或++n或n=n+1或n+=1
3(FILE *fp
"lut2009.txt", "r"
ch = = 'm' || ch = = 'M'
4. j<=i
f=f*j
5. sum=0
sum+a[i][i]
四、编程题(每小题10分,共50分) 评分标准:结构完整2分(主函数或子函数);
变量声明恰当、控制符对应正确2分;
输入(或初始化)2分;
加工处理(顺序、选择或循环)2分;
输出(结果)2分
参考程序:
1(
#include
main()
{
float x,y,z;
printf("input x,y:\n");
scanf("%f,%f",&x,&y);
z=x*y;
printf("z=%10.2f\n",z);
getch();
}
2(
#include main()
{
float x,y;
printf("input x:\n");
scanf("%f",&x);
if(x>0)
y=1;
if(x==0)
y=0;
if(x<0)
y=-1;
printf("x=%10.2f\t,y=%10.2f\n",x,y);
getch();
}
3(
#include main()
{
int i,j;
for(i=4;i>=1;i--)
{
for(j=1;j<=4-i;j++)
printf(" ");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
getch();
}
4(
#include
int sub_fun(int x) {
int i,k=1,s=0;
for(i=1;i<=x;i++)
{
s=s+k*i;
k=-k;
}
return s;
}
以下主函数可以不写:
main()
{
printf("%d\n",sub_fun(100));
getch();
}
5(
#include #define N 10
main()
{
int i,j,k,t,a[N]={20,50,30,10,60,80,100,70,70,40};
for(i=0;i