一、选择题
1. 以下叙述中错误的是( )。
【A】C源程序经编译后生成后缀为.obj的目标程序
【B】C程序经过编译、链接后才能形成一个真正可执行的二进制机器指令文件
【C】用C编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
【D】C中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
2. 以下叙述中正确的是( )。
【A】构成C程序的基本单位是函数
【B】可以在一个函数中定义另一个函数
【C】main()函数必须放在其它函数之前
【D】所有被调用的函数一定要在调用之前进行定义
3. 已知:char a;int b;float c;double d;执行语句 c=a+b+c+d;后,变量c的数据类型是( )。
【A】int 【B】float 【C】char 【D】double
4. 若变量均已正确定义并赋值,以下合法的C语言赋值语句是( )。
【A】x=y==5 ; 【B】x=n%2.5; 【C】x+n=i; 【D】x=5=4+1;
5. 判断字符型变量ch为数字字符的表达式是( )。
【A】'0'<=ch<='9' 【B】(ch>=0)&&(ch<=9)
【C】(ch>='0')||(ch<='9') 【D】(ch>='0')&&(ch<='9')
6.下列选项中,不能用作标识符的是( )。
【A】_1234_ 【B】_x 【C】ab1exe 【D】2_int_
7. 以下选项中不能用作C程序合法常量的是( )。
【A】1234.5 【B】'123' 【C】123 【D】'a'
8.设i是int型变量,f是double型变量,用下面的语句给这两个变量输入值:scanf("%d%lf",&i,&f); 为了把80和60赋给i和f,则正确的输入为( )。
【A】80,60<回车> 【B】i=80,f=60<回车>
【C】80<空格>60<回车> 【D】8060<回车>
9.能表示整数x符合下面两个条件之一的语句是( )。
①能被4整除,但不能被100整除;②能被400整除。
【A】(x%4= =0 && x%100 !=0) || x%400= =0
【B】(x%4= =0 || x%100 !=0) && x%400= =0
【C】(x%4= =0 && x%400 !=0) || x%100= =0
【D】(x%4 !=0 || x%100= =0) && x%400= =0
10.C语言中运算对象必须是整型的运算符是( )。
【A】= 【B】/ 【C】%= 【D】<=
11.若int a ;char b ;float c;则为它们输入数据的正确语句是( )。
【A】scanf("%d%d%d",&a,&b,&c); 【B】scanf("%d%c%f",&a,&b,&c);
【C】scanf("%d%c%f",a,b,c); 【D】scanf("%d%d%f",&a,&b,&c);
12.下面有关for循环的正确描述是( )。
【A】for循环只能用于循环次数已经确定的情况
【B】for循环是先执行循环体语句,后判断表达式
【C】在for循环中,不能用break语句跳出循环体
【D】for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
13.已知int i=1; 执行语句while (i<=4) i++;后,变量i的值为( )。
【A】3 【B】4 【C】5 【D】6
14.若有定义:int a[10],则对数组a元素的正确引用是( )。
【A】a[10] 【B】a1 【C】a(5) 【D】a[10-10]
15.对二维数组的正确说明是( )。
【A】int a[][]={0}; 【B】int a[2][]={1,2,3,4};
【C】int a[][2]={1,2,3,4,5,6}; 【D】int a[2,3]={0};
16.下面不是字符串常用库函数名的是( )。
【A】strcpy 【B】strcmp 【C】strlen 【D】stringupr
17.在C程序中使用字符串库函数时,应该包含的头文件是( )。
【A】stdio.h 【B】string.h 【C】math.h 【D】stdlib.h
18.C语言规定,函数返回值的类型是由( )。
【A】return语句中的表达式类型决定
【B】调用该函数时主调函数类型决定
【C】调用该函数时系统临时决定
【D】定义该函数时所指定的函数类型决定
19.已定义如下函数
fun (int a,int b)
{return a+b;}
该函数的数据类型是( )。
【A】int 【B】void 【C】float 【D】 不确定
20.有以下程序段
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a,b;
b=*(p+3);
b中的值是( )。
【A】5 【B】4 【C】2 【D】3
21.已知:int a, *y=&a;则下列函数调用中错误的是( )。
【A】scanf("%d", &a); 【B】scanf("%d", y) ;
【C】printf("%d", a) ; 【D】printf("%d", y) ;
22.若有定义:int a[2][3];以下选项中定义的指针可以被赋值为a的是( )。
【A】int *p[3]; 【B】int *p ;
【C】int (*p)[3]; 【D】int *p[2][3];
23.若有以下说明和语句。对结构体变量person的出生年月进行赋值时,下面正确的赋值语句是( )。
struct date
{ int year,month,day;};
struct worklist
{ char name[20];
char sex;
struct date birthday;
} person;
【A】year=1958; 【B】birthday.year=1958;
【C】person.birthday.year=1958; 【D】person.year=1958;
24.若用fopen()函数打开一个新的二进制文件,该文件可以读也可以写,则文件打开模式是( )。
【A】"ab+" 【B】"wb+" 【C】"rb+" 【D】 "ab"
二、填空题
1.C语言规定,必须用 作为主函数名。
2.若a是int型变量,则执行表达式a=25/3%3后a的值为 。
3.若变量a、b已定义为int类型并赋值27和58,要求用printf函数以a=27,b=58的形式输出,请写出完整的输出语句 。
4.已知A=7.5,B=2,C=3.6,表达式A>B&&C>A||A<B&& !C>B的值为 。
5.要使以下程序段输出20个整数,请填入一个整数:
for(i=0;i<= ;printf(“%d\n”,i+=2));
6.定义一个名为a的单精度实型一维数组,数组元素个数为5,所有元素的初值均为0的数据定义语句是 。
7.变量在程序使用中,其作用域可分为全局变量和 变量。
8.设在主函数中有以下定义和函数调用语句,且fun函数为void类型。请写出fun函数的首部 。注:形参名不做要求,可自己定义。
main()
{ double s[10];
int n;
fun(s,5);
}
9.有如下结构体定义:
struct
{ int x;
int y;
}s[2]={{1,2},{3,4}},*p=s;
则执行语句 p=p+1;后p->x的值为 。
10.使用fopen("abc","r+")打开文件时,若abc文件不存在,则返回值为 。
三、阅读程序
1. 以下程序的运行结果是( )。
#include <stdio.h>
main()
{ int x=2,a=0,b=0;
switch(x)
{ case 0: b--; break;
case 1: a--; break;
case 2: a--;b--; break;
}
printf("a=%d,b=%d\n",a,b);
}
【A】a=0,b=0 【B】a=-1,b=-1
【C】a=0,b=-1 【D】a=2,b=2
2. 以下程序的运行结果是( )。
#include <stdio.h>
main()
{ int i,j,sum=0;
for(i=3;i>=1;i--)
{ for(j=1;j<=i;j++)
sum+=j;
}
printf("%d",sum);
}
【A】16 【B】10 【C】9 【D】11
3. 以下程序的运行结果是( )。
#include <stdio.h>
int sub(int n) { return (n/10+n%10); }
main()
{ int x,y;
x=1234;
y=sub(sub(sub(x)));
printf("%d\n",y);
}
【A】10 【B】8 【C】9 【D】7
4. 以下程序的运行结果是( )。
#include <stdio.h>
main()
{ int n[3]={1,2,3},i,j;
for(i=1;i<3;i++)
n[i]=n[i-1]+2;
printf("%d\n",n[2]);
}
【A】1 【B】2 【C】5 【D】3
5. 以下程序的运行结果是( )。
#include <stdio.h>
main()
{ int x[3][3]={1,2,3,4,5,6,7,8,9},i;
for(i=0; i<3; i++)
printf("%d",x[i][2-i]);
}
【A】146 【B】357 【C】123 【D】456
6. 以下程序的运行结果是( )。
#include <stdio.h>
f ( int a)
{ static int c = 3;
c++;a++;
return(a+c);
}
main()
{ int i;
for(i=1;i<3;i++) printf("%3d ",f(i));
}
【A】 6 8 【B】 5 7 【C】 6 7 【D】5 8
7. 以下程序的运行结果是( )。
#include <stdio.h>
main()
{ char c[5]="abcd";
printf("%c,%s",c[1],c+1);
}
【A】abcd,abcd 【B】a,abcd
【C】b,bcd 【D】b,b
8. 以下程序的运行结果是( )。
#include <stdio.h>
void fun ( int *a,int *b)
{ int t;
t=*a; *a=*b; *b=t;
}
main()
{ int x=5,y=6;
fun(&x,&y);
printf("%d,%d",x,y);
}
【A】5,6 【B】0,0
【C】-384568,-38456 【D】6,5
9. 以下程序的运行结果是( )。
#include<stdio.h>
#include<string.h>
main()
{ char str1[20]={'a','b','\0','c'},str2[20];
strcpy(str2,str1);
printf("%d",strlen(str2));
}
【A】2 【B】3 【C】20 【D】4
10. 以下程序的运行结果是( )。
#include <stdio.h>
struct example
{ int x;
char c;
};
func(struct example b)
{
b.x=20;
b.c='y';
}
void main()
{ struct example a={10,'x'};
func(a);
printf("%d,%c",a.x,a.c);
}
【A】10,x 【B】20,y 【C】10, 'x' 【D】20, 'y'
五、程序设计
1.水果店有4个等级的苹果,一级5.50元/kg、二级4.30元/kg、三级3.00元/kg、四级2.50元/kg。编写一个程序,输入苹果的等级、数量以及顾客的付款数,显示出苹果的等级、数量、应付款数以及找给顾客的钱数。
2.编程输出1到50之间能被3整除或能被7整除的整数。
3.通过键盘输入20个整数在一维数组中,计算该数组中最大数值和该20个数值的平均数。
4.编写自定义函数getsum(double a, double b),其功能为计算两个数值之和。请编写主函数,主函数中包括两个数值的输入、调用getsum函数、结果的输出等程序代码。请完成主函数及该自定义函数的程序代码。