资源描述
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)
{m=array[i][j];
row=i;column=j;
}
printf(“%d,%d,%d\n”,m,row,column);
}
4.程序:
#include<stdio.h>
int p(int k,int a[])
{int m,i,c=0;
for(m=2;m<=k;m++)
for(i=2;i<m;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<m;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<b)
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++)
if(a[j]<a[i]) j=i;
t=a[j];a[j]=a[7];a[7]=t;
puts(a);
}
A.mogninr B.mo C.morning D.mornin
七、编程题(10分,每题5分)
1.请将下列一组数据读入到S数组中,并从中找出最小的值并输出。
30,56,88,45,100,20
2.请将下列给出的字符串读入到ss数组中,并输出该字符串。
Student and Teacher
08年C语言
六、填空题(10分,每题1分)
1.C语言中,基本数据类型包括整型、浮点型和__________。
2.一个C程序是由___________组成的。
3.在abc、a_1、a1b2、auto四个变量中,不合法的是_________。
4.字符串"ab\\c\n\101"的占用内存的字节数为_________。
5.在运算符+、->、*=、&&中,其优先级最低的是________。
6.定义共用体类型使用关键字____________。
7.C语言中,break语句通常用在________语句和循环语句中。
8.表达式7*2/5+3.5+'b'值的类型是__________。
9.设有语句int a=5;执行语句printf("%d",++a);后,输出结果为_________。
10.执行下面程序段后,输出的结果为_________。
for(i=1;i<5;i++) printf("*");
七、判断题(10分,每题1分)
1.C语言程序总是从源程序文件中的第一个函数开始执行。( )
2.数组名代表数组所占存储区的首地址,其值不可以改变。( )
3.elseif不属于C语言关键字(保留字)( )
4.指针变量可以加减一个整数。( )
5.宏替换不占用运行时间。( )
6.C语言中转义字符以"\"开头。( )
7.C语言规定,函数返回值的类型是由return语句中的表达式类型决定的。( )
8.如果在一个函数中的复合语句中定义了一个变量,则该变量只在该复合语句中有效。( )
9.C语言中的函数既可以递归定义,又可以嵌套定义。( )
10.main函数可以有参数。( )
八、程序分析题(12分,每题3分)
1.指出程序的错误并改正
#include <stdio.h>
void main()
{int a,b,max;
scanf("%d,%d",&a,&b);
if(a<b)
max=a
max=b;
printf("max=%d",max);
}
2.写出下面程序的运行结果:
#include <stdio.h>
void main()
{int x[]={0,1,2,3,4,5,6,7,8,9};
int i,sum=0;
for(i=0;i<10;i=i+2)
sum=sum+x[i];
printf("%d",sum);
}
3.写出程序的运行结果
#include <stdio.h>
void main()
{char s[]=”ABC”,*p;
for(p=s;p<s+3;p++)
printf(“%s\n”,p);
}
4.写出下面程序的功能
void ss(char *s1,char *s2)
{while(*s1!='\0') s1++;
while(*s2!='\0')
{*s1=*s2;
s1++;
s2++;
}
*s1='\0';
}
九、程序设计题(18分,每题9分)
1.从键盘上任意输入一个字符串,统计字符串中大小写英文字母出现的次数。
09年C语言
六、填空题(8分,每题2分)
1.若a是int型变量,且a=5,则表达式(a+100)%2+a/2的值为:_________。
2. C语言程序中引用标准输入输出库函数,必须在每个源文件的首部写下#include <__________>。
3.若int型变量占内存2个字节,double型变量占内存8个字节,有如下定义:
union data
{ int i;
double d;
}a;
则变量a在内存中所占字节数为_________。
4.当文件关闭成功后,fclose函数返回值为________。
七、阅读程序题(15分,每题3分)
1.下面程序的运行结果是___________。
#include <stdio.h>
main()
{ int i=2,j=3,k;
k=i+j;
{ int k=8;
if(i=3)
printf(“%d”,k);
else
printf(“%d”,j);
}
printf(“%d%d”,i,k);
}
2.下面程序的运行结果是__________。
#include <stdio.h>
#define SIZE 8
main()
{ char s[]=“GDBFHACE”;
int i,j,t;
for(i=0;i<SIZE;i++);
{
for(j=i+1;j<=SIZE;j++);
if(s[i]>s[j])
{t=s[i];
s[i]=s[j];
s[j]=t;
}
}
for(i=0;i<SIZE;i++)
printf(“%c”,s[i]);
}
3. 下面程序的运行结果是__________。
#include <stdio.h>
int fun(int a,int b,int *cn,int *dn)
{
*cn=a*b+b*b;
*dn=a*a-b*b;
a=5;
b=6;
}
main()
{ int a=2,b=3,c=5,d=6;
fun(a,b,&c,&d);
printf(“a=%d,b=%d,c=%d\n”,a,b,c,d);
}
4. 下面程序的运行结果是_________。
#include <stdio.h>
int fun(int x)
{
static y=2;
y++;
x+=y;
return x;
}
main()
{ int k;
k=fun(3);
printf(“%d,%d\n”,k,fun(k));
}
5. 下面程序的运行结果是_________。
#include <stdio.h>
main()
{ int s=0,m;
for(m=7;m>=3;m--)
switch(m)
{
case 1:
case 4:
case 7:s++;break;
case 2:
case 3:
case 6:s+=2;
case 0:
case 5:s+=3;break;
}
printf(“s=%d \n”,s);
}
八、完善程序题(15分,每题3分)
1.下面程序的功能是找出100到200之间不能被3整除但能被5整除的数。
#include <stdio.h>
main()
{ int m;
for(m=100;m<=200;m++)
if (___________);
printf(“%d \t”,m);
}
2.下面程序通过指向整型变量的指针将数组m[4][3]的内容按4行3列的格式输出,请输出printf()填入适当的参数,使之通过指针p将数组元素按要求输出。
#include <stdio.h>
main()
{ int m[4][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
int i,j,*p=m;
for(i=0;i<4;i++)
{ for(j=0;j<3;j++)
printf(“%4d”,_________);
printf(“\n”);
}
}
3.下面程序能够完成交换数组a和数组b中的对应元素的功能。
#include <stdio.h>
swap(int *p1,int *p2)
{
int temp;
___________;
}
main()
{ int a[5]={1,3,5,7,9};
int b[5]={2,4,6,8,10};
int i;
for(i=0;i<5;i++)
swap(&a[i],&b[i]);
for(i=0;i<5;i++)
printf(“a[%d]=%-4d”,i,a[i]);
printf(“\n”);
for(i=0;i<5;i++)
printf(“b[%d]=%-4d”,i,b[i]);
printf(“\n”);
}
4.在某大学举行的演讲比赛中,有十个评委为参赛的选手打分,分数为0~100分。选手最后得分为:去掉一个最高分和一个最低分后其余八个分数的平均值。
#include <stdio.h>
main()
{ int max,min,score,i;
int sum=0;
max=0;min=100;
for(i=0;i<10;i++)
{
printf(“Input number %d=”,i++);
scanf(“%d”,&score);
sum+=score;
if(max<score) max=score;
if(min>score) min=score;
printf(“\n”);
}
printf(“Canceled max score:%d\nCanceled min score:%d”,max,min);
printf(“average score:%lf\n”,________________ )
}
5.把指针str所指的字符串按相反的顺序赋给rev[]。
#include <stdio.h>
main()
{ char *str=“abcdefg”;
char rev[10];
int i;
printf(“\n”);
for(i=0;i<7;i++)
______________;
rev[i]=’\0’;
printf(“%s\n”,rev);
}
九、编程改错题(12分,每题3分)
1.
(1)#include <stdio.h>
(2)char a="Beijing";
(3)main( )
(4) {
(5) printf("%s is one city in china.\n",a);
(6) p1( );
(7) p2( );
(8) }
(9) p1( )
(10) {
(11) printf("%s is one of the biggest city",a);
(12) return;
(13) }
(14) p2( )
(15) {
(16) printf("in the world.\n");
(17) return;
(18) }
错误的行是:_________
改为:____________
2.求
(1) #include <stdio.h>
(2) main()
(3) {
(4) int n1=100,n2=50,n3=10;
(5) int k;
(6) float s1=0,s2=0,s3=0;
(7) for(k=1;k<=n1;k++);
(8) s1=s1+k;
(9) for(k=1;k<=n2;k++);
(10) s2=s2+k*k;
(11) for(k=1;k<=n3;k++);
(12) s3=s3+k/10;
(13) printf("total=%8.2f\n",s1+s2+s3);
(14) }
错误的行是:________
改为:____________
3.本程序能够在屏幕中央显示出如下图形。
(1) #include <stdio.h>
(2) void main()
(3) {
(4) int i,j,k;
(5) for(i=1;i<=4;i++)
(6) {
(7) for(k=1;k<=i+1;k++)
(8) printf(" ");
(9) for(j=1;j<=i;j++)
(10) printf("#");
(11) printf("\n ");
(12) }
(13) }
错误的行是:___________
改为:_______________
4.将给定的字符串写入指定的文件中去。
(1) #include <stdio.h>
(2) main()
(3) {
(4) int i;
(5) FILE *fp;
(6) char a[][8]={“Turbo C”, “BASIC”, “FORTRAN”, “COBOL”};
(7) if (fp=fopen(“myfile.txt”, “w”)==NULL)
(8) {
(9) printf(“can’t creat the file.\n ”);
(10) exit(1);
(11) }
(12) for(i=0;i<4;i++)
(13) {
(14) fputs(a[i],fp);
(15) fputs(“\n”,fp);
(16) }
(17) fclose(fp);
(18) }
错误的行是:___________
改为:_______________
展开阅读全文