05年C语言
六、单项选择(10分,每题1分)
1.下列变量定义正确的是________
A. int 2ab;
B. float a>b;
C. char $123
D. int *per;
2.若有说明int a=1,x=2,y=3;下列不是C语言合法表达式的是
A. ++9
B. (float)(x)
C. a++
D. (float)x+y
3.若有说明int i=1,j=2,k=3;表达式i&&j&&k的值为
A. 1
B. 2
C. 3
D. 4
4.若有说明int a,b; 下面输入函数调用语句正确的是
A. scanf(“%d%d”,a,b);
B. scanf(“%d%d”,&a,&b);
C. scanf(%d%d,a,b);
D. scanf(%d%d,&a,&b);
5.下列不是关系表达式的是
A. 3>5
B. 1<2>3
C. !3>5
D.1+2>3
6.下列对数组的定义正确的是
A. int a(10);
B. int a[10];
C. int a{10};
D.int a10;
7.下列对C程序结构的说法不正确的是
A.C程序是由一系列函数构成的
B.C程序可以有多个main()函数
C.C程序中函数名不可以和变量名相同
D.C程序中可以定义函数
8.若有说明int *p,a[10],j=3;下列指针变量赋值错误的是
A.p=&j;
B.p=&a[j];
C.p=a;
D.p=0x1000;
9.若有说明int a=4;执行语句a>>1后,变量a的值
A.1
B.2
C.3
D.4
10.以只读的方式打开文本文件“test.txt”的正确方法是
A.fopen(“test.txt”,”r”);
B. fopen(“test.txt”,”rb”);
C. fopen(“test”,”r”);
D. fopen(“test.txt”);
七、填空题(10分,每题1分)
a) 若有说明a=-1;printf(“%d,%x,%o\n”,a,a,a)的输出结果是______________。
b) -32760在内存中的存储形式是__________(用十六进制表示)。
c) 7%4的值为________。
d) 写出C语言中的三种逻辑运算符____________。
e) 循环语句有for语句、__________和__________。
f) continue语句的作用是_______________________。
g) 字符串“123\x45\19abc”的长度为____________。
h) 数组a[10]的第i个元素的指针是______________。
i) 若有结构体类型定义struct STU {int a; float x; char c;}; sizeof(struct STU)的值是________。j) FILE *fp;的作用是定义了一个_______________。
八、写出下列程序的运行结果(10分,每题5分)
1.main()
{
int i,s;
for(i=10,s=0;i;s+=i,i--)
printf(“result:%d\n”,s);
}
2.main()
{
void fun();
float x,y;
x=10;
fun(x,&y);
printf(“result:%.0f,%.0f\n”,x,y);
}
void fun(x,y)
float x,*y;
{
*y=x*x;
}
九、编写程序(20分)
1.编写程序求某1三位数的平方和(8分)。
2.编写程序求数列1,1,2,3,5,8,13,......的前100项的和及平均值(12分)。
06年C语言
六、单项选择(15分,每题1分)
1、C语言程序的基本单位是()
A. 程序行
B. 语句
C. 函数
D. 字符
2、可用作C语言用户标识符的一组字符串是()
A. void define WORD
B.a3_b3 _123 IF
C. For –abc Case
D.2a DO sizeof
3、设int a=12,则执行完语句a+=a-=a*a;后a的值是()
A. 552
B. 264
C. 144
D. -264
4、以下叙述正确的是()
A.do-while语句构成的循环不能用其它语句构成的循环来代替。
B.do-while语句构成的循环只能用break语句退出。
C.用do-while语句构成的循环,在while后的表达式为非零时结束循环。
D. 用do-while语句构成的循环,在while后的表达式为零时结束循环。
5、设有说明int (*ptr)[10] 其中的标识符ptr是()
A. 10个指向整型变量的指针
B. 指向10个整型变量的函数指针
C. 一个指向具有10个整型元素的一维数组的指针
D.具有10个指针元素的一维指针数组,每个元素都只能指向整型量
6、有以下程序段
typedef struct NODE{
int num;
struct NODE *next;
} OLD;
则以下叙述中正确的是()
A.以上的说明形式非法
B. NODE是一个结构体类型
C.OLD是一个结构体类型
D.OLD是一个结构体变量
7、以下不能正确计算代数式值的C语言表达式是()
A.1/3*sin(1/2)*sin(1/2)
B.sin(0.5)*sin(0.5)/3
C.pow(sin(0.5),2)/3
D.1/3.0*pow(sin(1.0/2),2)
8、C语言规定,程序中各函数之间()
A.既允许直接递归调用也允许间接递归调用
B.不允许直接递归调用也不允许间接递归调用
C.允许直接递归调用不允许间接递归调用
D.不允许直接递归调用允许间接递归调用
9、在宏定义#define PI 3.14159中,用宏名PI代替一个()
A.单精度数
B.双精度数
C.常量
D.字符串
10、在C语言中,要求运算数必须是整型的运算符是()
A.%
B. /
C. <
D.!
11、为表示关系x≥y≥z,应使用的C语言表达式是()
A.(x>=y)&&(y>=z)
B.(x>=y) AND (y>=z)
C.(x>=y>=z)
D.(x>=y)&(y>=z)
12、有以下程序段
int k=0,a=3,b=4,c=5; k=a>c?c:k;
执行该程序段后,k的值是()
A.3
B.2
C.1
D.0
13、若有定义char *s=”\\”Name\\Address\n”,则指针s所指字符串长度为()
A.19
B.15
C.18
D.说明不合法
14、下述对C语言字符数组的描述中错误的是()
A.字符数组可以存放字符串
B.字符数组中的字符串可以整体输入输出
C.可以在赋值语句中通过赋值运算符对字符数组整体赋值
D.不可以用关系运算符对字符数组中的字符串进行比较
15、设有如下的函数
exam(float x){
printf(“\n%f”,x*x);
}
则函数的类型为()
A.与参数x的类型相同
B.是void
C.是int
D.无法确定
七、阅读下列程序,写出其运行结果(每小题5分,共25分)
1.程序:
main()
{ int i,j,x;
for(i=0;i<=4;i++)
{for(j=1;j<=4-i;j++)
printf(“”);
for(j=0;j<=2*i+1;j++)
printf(“*”);
printf(“\n”);
}
}
2.程序:
main()
{
int k=3,n=0;
while(k>0)
{switch(k)
{case 1:n+=k;
case 2:
case 3:n+=k;
default:break;
}
k--;
}
printf(“%d\n”,n);
}
3.程序:
main()
{int i,j,row,column,m;
static int array[3][3]={{100,200,300},{28,72,-30},{-850,2,6}}; m=array[0][0];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(array[i][j] {m=array[i][j]; row=i;column=j; } printf(“%d,%d,%d\n”,m,row,column); } 4.程序: #include int p(int k,int a[]) {int m,i,c=0; for(m=2;m<=k;m++) for(i=2;i {if(!(m%i)) break; if(i==m) a[c++]=m; } return c; } #define MAXN 20 main() {int i,m,s[MAXN]; m=p(13,s); for(i=0;i printf(“%4d”,s[i]); printf(“\n”); } 5.程序: int f(int n) {if(n==0||n==1) return 1; else return f(n-2)+2*f(n-1); } main() {int n=5; printf(“%d”,f(n)); } 八、程序填空;按照要求完成下面的程序(函数)(每空2分,共10分) 1.本函数用对分查找法,在以按字母次序从小到大排序的字符数组list中查找字符c,若c在数组中, 函数返回字符c在数组中的下标,否则返回-1。 int search(char list[],char c,int len) {int low,high,k; low=0;high=len-1; whiel( (1) ) {k=(low+high)/2; if( (2) ) return k; else if( (3) ) high=k-1; else low=k+1; } return -1; } 2.函数mycmp(char *s,char *t)的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码的差值。 mycmp(char *s,char *t) { while(*s==*t) {if( (4) ) return 0; ++s; ++t; } return ( (5) ) } 07年C语言 四、填空题(本题20分,每空2分) 1.C语言中规定,整型常量可以用十进制、八进制和________进制形式来表示。 2.结构化程序设计中的三种基本结构为:顺序结构、________和循环结构。 3.在C语言中,对于负整数,在内存中是以________码形式进行存储。 4.在C语言中,若被定义为int类型的变量,在内存中占用_______个字节的存储空间。 5.已有定义:int a[5],*p;当执行了p=&a[3];语句时,是将指针变量p指向了a数组的第___个元素的 地址。 6.若某变量被定义为auto变量的存储单元,则将被分配在内存的___________存储区域。 7.在下列给出的字符数组c,它在内存中所占用的字节数是__________。 char c[]={“C language”}; 8.在C语言中,能够实现循环结构的语句有: while语句、if/goto语句、do-while语句以及_________ 语句。 9.若有a=3,b=5; 则求a>b的关系运算结果是____________。 10.若有定义a[10];则允许数组a的下标最小可以是________。 五、请写出下列程序的运行结果(本题10分,每小题2分) 1.main() {int n=100; if(n>100) printf(“***”); else printf(“###”); } 2.main() {int a=2,b= -1,c=2; if(a if(b<0) c=0; else c+=1; printf(“c=%d\n”,c); } 3.main() {char s[]=”student\0teacher”; printf(“%s\n”,s); } 4.main() {int a=3,b=4; printf(“a=%d,b=%d\n”,++a,b++); } 5.main() {static int a[5],i; for(i=0;i<5;i++) a[i]=a[i]+i; for(i=0;i<5;i++) printf(“%d,”,a[i]); } 六、单选题(本题10分,每小题2分) 1.main() {int k=11; printf(“k=%d, k=%o, k=%x\n”,k,k,k); } A.k=11,k=12,k=11 B. k=11,k=13,k=13 C. k=11,k=013,k=0xb D. k=11,k=13,k=b 2.main() {int y=10; while(y--); printf(“y=%d\n”,y); } A.y=10 B.y=1 C.y=随机值 D.y= -1 3.main() {int a,b,*p1,*p2; p1=&a;p2=&b; *p1=100;*p2=200;c=*p1+*p2; printf(“%d\n”,c); } A.300 B.100+200 C.100 D.200 4.在下列程序中,当执行到gets(ss);语句时,若输入字符为”ABC”时,则该程序的输出结果是: main() {char ss[10]="12345"; strcat(ss,”6789”); gets(ss);printf("%s\n",ss); } A.ABC B.ABC9 C.123456ABC D.ABC456789 5.main() {char a[]="morning",t; int i,j=0; for(i=1;i<7;i++)