资源描述
复习A:
一、单项选择题
1、如果要把常量327存入变量a中,a不能定义得类型就是哪一个? (B )
A) int B) char C) long D) float
2、若x 为unsigned int 型变量,则执行下列语句后x值为( D )
x = 65535;
printf(“%d\n”,x);
A)65535 B)1 C)无定值 D)1
3、有以下程序
main
{int a=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);
printf(″%d,%d\n″,k,m);
}
程序运行后得输出结果就是 (C )
A)0,0 B) 0,1 C)1,0 D)1,1
4、在C语言中,如果下面得变量都就是int类型,则输出得结果就是( C )。
sum=pad=5; pAd=sum + + ,pAd + +, + + pAd;
printf("%d\n",pad);
A) 7 B) 6 C) 5 D) 4
5、以下程序得输出结果就是(A)。
main
{ int a=4,b=5,c=0,d;
d=!a&&!b||!c;
printf("%d\n",d);
}
A)1 B)0 C)非0得数 D)1
6、当执行以下程序段时(A)。
x=1;
do{
x=x*x;
}while(!x);
A)循环体将执行一次 B)循环体将执行两次
C)循环体将执行无限次 D)系统将提示有语法错误
7、全局变量得存储类型可以定义为( D )。
A)auto或static B) extern或 register
C) auto或extern D) extern或static
8、定义全局变量时,若变量得得存储类别缺省,则默认得存储类型就是( C )。
A)auto B) register
C) extern D) static
9、已知:int a, x; 则正确得赋值语句就是(C )。
A) a=(a[1]+a{2})/2; B) a*=*a+1;
C) a=(x=1, x++, x+2); D) a="good";
10、已知:int a, *p=&a; 则下列函数调用中错误得就是( D )。
A) scanf("%d", &a); B) scanf("%d", p);
C) printf("%d", a); D) printf("%d", p);
11、下述程序得输出结果就是 ( D )。
#include <stdio、h>
void main( )
{ struct plex
{ int x ;
int y;
} cnum[2]={1,3,2,7};
printf(“%d”, cnum[0]、y/cnum[0]、x*cnum[1]、x) ;
}
A) 0 B) 1 C) 3 D) 6
12、下述程序得输出结果就是( B )。
#include <stdio、h>
void main( )
{ union
{ unsigned char c ;
unsigned int i[4];
}z ;
z、i[0]=0x39 ;
z、i[1]=0x36;
printf(“%c”,z、c);
}
A) 6 B) 9 C) 0 D) 3
13、下述关于C语言文件操作得结论中,( B )就是正确得。
A)对文件操作必须先关闭文件
B)对文件操作必须先打开文件
C)对文件操作顺序无要求
D)对文件操作前必须先测试文件就是否存在,然后再打开文件
14、以下程序得输出结果就是( C)。
main
{ char ch[3][4]={"123","456","78"},*p[3];
int i;
for (i=0;i<3;i++)
p[i]=ch[i];
for (i=0;i<3;i++)
printf("%s",p[i]); }
A)123456780 B)123 456 780 C) 12345678 D) 147
15、对于所定义得二维数组a[2][3],元素a[1][2]就是数组得第( D )个元素。
A)3 B)4 C)5 D)6
1、 赋值运算符得优先级低于关系运算符( √ )。
2、 条件运算符得结合方向就是“自左向右” ( × )。
3、 C语句得循环语句中循环体如果包含一个以上得语句,必须以复合语句形式出现( √ )。
4、 C程序中得函数不能嵌套调用,但可嵌套定义( × )。
5、 若自定义函数要求函数名返回一个值,则该函数体中必须要有return语句( × )。
6、 当形式参数为指针变量名时,实际参数可为指针变量名、数组名或其它类型变量得首地址( √ )。
7、 若有说明:static int a[3][4];,则数组a中各数组元素可在程序得编译阶段得到初值0( √ )。
8、 若用数组名作为函数调用时得实参,则实际上传递给形参数组得就是数组得第一个元素得值( √ )。
9、 利用指针与结构体类型可以构成表、树等复杂得数据结构( √ )。
10、共用体变量得地址与它得各成员得地址都就是同一地址( √ )。
11、printf函数中得“%0”格式参数表示用来输出unsigned型数据( × )。
12、在一个C程序中,所有要使用得变量与要调用得函数都必须在main( )函数中定义 ( × )。
13、赋值运算符得结合性就是“自右至左” ( √ )。
14、一个C程序可以由多个源程序文件组成 (√ )。
15、dowhile语句构成得循环,当while语句中得表达式得值为零时结束循环 ( √ )。 三、写出下面各程序得运行结果
1、 #include<stdio、h>
main ( )
{int i=0, j=0, k=0, m;
for (m=0; m<4; m++)
switch (m)
{case 0: i=m++;
case 1: j=m++;
case 2: k=m++;
case 3: m++;
}
printf(“\n%d, %d, %d, %d”, i, j, k, m);
}
2、 #include<stdio、h>
main ( )
{int i=1;
while (i<=15)
if (++i% 3!=2)
continue;
else
printf(“%d”, i);
}
3、#include<stdio、h>
add1(int a[ ], int n)
{ int i;
for(i =0;i<n;i++) a[i]++;
}
main
{ static int array[ ]={0,1,2,3,4,5,6,7,8,9};
int j;
add1(array,10);
for(j=0;j<10;j++)
printf(“%d”,array[j]);
}
4、union data
{ long w;
float x;
int y;
char z;
} beta;
main( )
{ beta、w=123456;
beta、y=888;
beta、x=3、14;
beta、z=’x’;
printf(“%c”,beta、y);
}
5、# include <string、h>
typedef struct student{
char name[10];
long sno;
float score;
}STU;
main( )
{
STU a={"zhangsan",2001,95},b={"Shangxian",2002,90},c={"Anhua",2003,95},d,*p=&d;
d=a;
if(strcmp(a、name,b、name)>0) d=b;
if(strcmp(c、name,d、name)>0) d=c;
printf("%ld%s\n",d、sno,p>name);
}
四、程序填空
1、以下程序就是从键盘上输入若干个学生得成绩,统计并输出最高成绩与最低成绩,当输入负数时结束输入,请将缺省语句填上。
main ( )
{float x, amax, amin;
scanf (“%f”, &x);
amax=x; amin=x;
while ( ① )
{if ( ② ) amax =x;
if ( ③ ) amin =x;
scanf (“%f”, &x);
}
printf(“amax=%f, amin=%f\n”, amax, amin);
}2、下面得程序就是用指针来交换两个数据,请将缺省语句填上。
void exchange( int *p ,int *q)
{ int t;
t=*p; *p=*q; *q=t;}
main
{ int a,b,*x,*y;
a=10;b=20;
x=&a; ①
②
printf(“%d %d\n”,*x, *y);
}
五、程序设计题
有10个学生,每个学生得数据包括学号、姓名、3门课得成绩,从键盘输入10个学生数据,要求打印出3门课总平均成绩,以及最高分得学生得数据(包括学号、姓名、3门课得成绩、平均分数。
2、用自定义函数与数组求n个数得平均值,并用主函数调用
参考答案:
一、单项选择题
1、B 2、D 3、C 4、C 5、 A
6、A 7、D 8、C 9、C 10、D
11、D 12、B 13、B 14、C 15、 D
二、判断题
( √ ) 2、( × ) 3、( √ ) 4、( × ) 5、( × )
6、 √ ) 7、( √ ) 8、( √ ) 9、( √ )10、( √ )
11、(× )12、(× ) 13、(√ ) 14、(√ ) 15、(√ )
三、写出程序得运行结果
1、 答案就是:0,1,2,5
2、 答案就是:2 5 8 11 14
3、答案就是:12345678910
4、答案就是:x
5、答案就是:2002Shangxian
四、程序填空
1、答案就是:①x>=0 ②x>amax ③x<amin
2、答案:①y=&b; ②exchange(x,y);
五、程序设计题
1、参考答案:
#define N 10
struct student
{ char num[6];
char name[8];
int score[4];
float ave;
} stu[N];
main
{ int i,j,max,maxi,sum;
float average;
/*输入*/
for ( i=0; i<N; i++)
{ printf(“\nInput scores of student %d,\n”,i+1);
printf(“No、:”);
scanf(“%s”,stu[i]、num);
printf(“name:”);
scanf(“%s”,stu[i]、name);
for(j=0;j<3;j++)
{ printf(“score %d:”,j+i);
scanf(“%d”,&stu[i]、score[j]);
}
}
/*计算*/
average=0;
max=0;
maxi=0;
for(i=0; i<N; i++)
{ sum=0;
for(j=0; j<a; j++)
sum+=stu[i]、score[j];
stu[i]、avr=sum/3、0;
average+=stu[i]、avr;
if (sum>max)
{ max=sum;
maxi=i;
}
}
average/=N;
/*打印*/
printf(“NO、 name score1 score2 score3 average\n”);
for(i=0; i<N; i++)
{ printf(“%s%10s”, stu[i]、num , stu[i]、name);
for(j=0; j<3; j++)
printf(“%9d”,stu[i]、score[j]);
printf(“%8、2f\n”,stu[i]、avr);
}
printf(“average=%6、2f\n”,average);
printf(“The highest score is : %s, score total: %d”, stu[maxi]、name,max);
}
2、参考答案:
float average( float a[ ], int n)
{ float aver=0;
int j;
for(j=0;j<n;j++)
aver=aver+a[j];
aver=aver/n;
return aver;
}
main
{ float x[10],y;
int j;
for(j=0;j<10;j++)
scanf(“%f”,&x[j]);
y=average(x,10);
printf(“aver=%、2f\n”,y);
}
复习B:
一、单项选择题
1、逗号表达式2,4,6,8得值为( d )。
A )2 B)4 C)6 D)8
2、以下选项中非法得表达式就是( d )
A)0<=x&&x<100 B)i=j = =0
C)(char)(65+3) D)x+1=x+1
3、若定义float a;现要从键盘输入a得数据,其整数位为3位,小数位为2位,则
选用( a )。
A)scanf(“%f”,&a); B) scanf(“%5、2f”,a);
C) scanf(“%6、2f”,&a); D) scanf(“%f”,a);
4、下列程序得运行结果就是( d )
main
{int a=3, b=2, c=1, k=4;
printf("%d\n", k<a? k : c<b? c: a);
}
A) 4 B) 3 C) 2 D) 1
5、以下程序中,while循环得循环次数就是(d)。
main( )
{ int i=0;
while(i<10)
{ if(i<1) continue;
if(i==5) break;
i++;
}
}
A)1 B)10 C)6 D)死循环,不能确定次数
6、执行语句:for(i=1;i++<4;)后;变量i得值就是(c)。
A)3 B)4 C)5 D)不定
7、有关函数参数,下列说法不正确得就是( c )。
A) 实参可以将数据传给形参; B) 实参与形参就是不同得变量;
C) 形参可以将数据传给实参; D) 实参与形参必须个数相等,类型一致。
8、C语言中,变量与函数具有两个属性就是( b )。
A)作用域与生存期 B)类型与存储类别
C)作用域与类型 D)作用域与存储类别
9、说明语句“int (*p)( ):”得含义就是( c )。
A)p就是一个指向一维数组得指针变量
B)p就是指针变量,指向一个整型数据
C)p就是一个指向函数得指针,该函数得返回值就是一个整型
D)以上都不对
10、说明语句"int *(*p);"得含义就是( d )。
A)p就是一个指向int 型数组得指针
B)p就是指针变量,它构成了指针数组
C)p就是一个指向函数得指针,该函数得返回值就是一个整型
D)p就是一个指向函数得指针,该函数得返回值就是一个指向整型得指针
11、下述程序得执行结果就是( a )。
#include<stdio、h>
union un
{ int i;
char c[2]; };
void main( )
{ union un x;
x、c[0]=10;
x、c[1]=1;
printf(“\n%d”,x、i);}
A) 266 B)11 C)265 D)138
12、若程序中有如下得说明与定义:
struct ex
{ int x, y ; }
…
struct ex x, y;
则会发生得情况就是 ( a )。
A) 编译时错 B) 程序能顺利编译、连接、执行
C) 能顺利编译与连接,但不能执行 D) 能通过编译,但连接出错
13、C语言可以处理得文件类型就是( b ) 。
A) 文本文件与数据文件 B) 文本文件与二进制文件
C) 数据文件与二进制文件 D) 数据代码文件
14、下面得for语句( c )。
for (x=0, y=0; (y!=123) && (x<4); x++)
A)就是无限循环 B)循环次数不定 C)循环执行4次 D)循环执行3次
15、若有如下说明:
struct
{ char ch;
int i;
double x;
}arr[2][3]={{‘a’,1,3、45},{‘b’,2,7、89},{‘c’,3,1、93}};
则表达式( b ) 得值为2。
A) arr[0][1]、ch B) arr[0][1]、i C) arr[0][0]、i D) arr[0][2]、i
二、判断题
1、条件运算符得结合方向就是“自左向右” ( × )。
2、switch语句中每一个case得常量表达式得值必须互不相同( √ )。
3、循环语句中循环体允许包含一个以上得语句,可以不以复合语句形式出现( × )。
4、构成C程序得源文件之间以及函数与函数之间,相互位置可以任意(√ )。
5、C程序中得函数不能嵌套定义,但可嵌套调用( √ )。
6、从变量得作用域角度来分,可以分为全局变量与局部变量( √ )。
7、从终端输入一个字符串给字符数组,该字符串两端不必用双引号括起来( √ )。
8、若有说明:int a[ ][4]={0,0};,则只有a[0][0]与a[0][1]可得到初值0,其余元素均得不到初值0( √ )。
9、利用指针与结构类型不能构成更复杂得数据结构( × )。
10、共用体类型可以出现在结构体类型定义中( √ )。
11、当一个case语句末包含break语句时,执行完该case语句后跳出switch结构( √ )。
12、宏定义中得标识符可以用大写字母,也可以用小写字母( × )。
13、dowhile语句构成得循环,当while语句中得表达式得值为非零时结束循环(× )。
14、用“%”作求余运算时,该运算符两侧均应为整型数据 ( √ )。
15、一个逗号表达式可以与另一个表达式组成一个新得逗号表达式(√ )。
三、写出程序得运行结果
1、 #include<stdio、h>
main ( )
{int a=1, b=3, c=5, d=4;
if (a<b)
if (c<d) x=1;
else
if (a<c)
if (b<d) x=2;
else x=3;
else x=6;
else x=7;
printf(“x=%d”, x);
}
2、 #include<stdio、h>
main ( )
{int k, j, m;
for(k=5; k>=1; k )
{m=0;
for (j=k, j<=5; j++)
m+=k*j;
}
printf (“m=%d\n”, m);
}
3、#include <stdio、h>
main( )
{union Exa
{ struct
{int a;
int b;
}out;
int c;
int d;
}e;
e、c=1; e、d=2;
e、out、a=e、c*e、d;
e、out、b=e、c+e、d;
printf("%d %d",e、out、a,e、out、b);
}
4、#include “stdio、h”
main( )
{ int a[ ]={1,2,3,4},i,j,s=0;
j=1;
for(i=3;i>=0;i)
{ s=s+a[i]*j;
j=j*10; }
printf(“s=%d\n”,s);}
5、#include "stdio、h"
#include "string、h"
main( )
{ char s1[ ]="som things";
char s2[ ]="test";
char s3[ ]="good";
printf("%s\n",strcat(strcpy(s1,s2),s3));
}
四、程序填空
1、下面程序输出100到200之间得素数,每行输出10个素数,请将缺省语句填上,使算法完整。
#include “math、h”
main ( )
{int m, k, i, n=0;
for (m=101; m<=200; m=m+2)
{if ( ① ) printf (“\n”);
k=sqrt(m);
for (i=2, i<=k; i++)
if ( ② ) break;
if ( i>=k+1){printf(“%d”, m); n=n+1;}
}
}
2、一个函数days,实现求某月某日就是该年得第多少天。由主函数将年、月、日传递给days函数,计算后将日数传回主函数输出,请将缺省语句填上,使算法完整。
struct y_m_d
{ int year;
int month;
int day;
} date;
main
{ int days(int ,int ,int);
int i,day_sum;
printf(“input year,month,day:”);
scanf(“%d,%d,%d”,&date、year,&date、month,&date、day);
day_sum=days( ① );
printf(“\n%d / %d is the %d th day in %d、”, date、month, date、day, day_sum,date、year);
}
days(int year, int month, int day)
{ int day_sum, i;
int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
②
for(i=1; i<month; i++)
day_sum+=day_tab[i];
day_sum+=day;
if ((year%4==0&&year%100!=0||year%4==0) && month>=3)
③
return(day_sum);
}
五、程序设计题
1,学生得记录由学号与成绩组成,N名学生得数据已在主函数中放入结构体数组s中,请编写函数fun,它得功能就是:把分数最低得学生数据放在h所指得数组中,注意:分数最低得学生可能不止一个,函数返回分数最低得学生得人数。
#define N 16
typedef struct
{ char num[10];
int s;
}STREC;
int fun(STREC *a, STREC *b)
{ …………
}
main
{ STREC s[N]={{“GA05”,85},{“GA03”,76},{“GA02”,69},{“GA04”,85},
{“GA01”,91},{“GA07”,72},{“GA08”,64},{“GA06”,87},
{“GA015”,85},{“GA013”,96},{“GA012,64},{“GA014”,91},
{“GA011”,91},{“GA017”,64},{“GA018”,64},{“GA016”,72};
STREC h[N];
int i, n;
n=fun(s,h);
printf(“The %d lowest score:\n”,n);
for(i=0; i<n; i++)
printf(“%d %4d\n”,h[I]、num, h[I]、s);
printf(“\n”);
}
2、从键盘输入一批字符(回车键结束),存入一个磁盘文件abc、txt中
参考答案:
一、单项选择题
1、D 2、D 3、A 4、D 5、D
6、C 7、C 8、B 9、C 10、D
11、A 12、A 13、B 14、C 15、B
二、判断题
1、( × )2、( √ )3、( × )4、( √ )5、( √ )
6、( √ )7、( √ )8、( √ )9、( × )10、( √ )
11、( √ ) 12、( × ) 13、( × ) 14、( √ ) 15、( √ )
三、写出程序得运行结果
1、 答案就是:x=2
2、答案就是:m=15
3、答案就是: 48
4、答案就是:s=1234
5、答案就是:testgood
四、程序填空
1、答案就是:①n%10 = = 0 ②m%i= =0
2、答案就是:
①date、year,date、month,date、day
②day_sum=0;
③day_sum+=1;
五、程序设计题
1、参考答案:
STREC fun(STREC *a, char *b)
{ static STREC h={“”,1};
int k;
for(k=0; k<N;k++)
if (!strcmp(a[k]、num, b))
{ h=a[k];
break;
}
return h;
}
2、参考答案:
main( )
{ FILE *fp;
char ch;
fp=fopen(“abc、txt”,”w”);
ch=getchar( );
while(ch!=’\n’)
{ fputc(fp, ch);
ch=getchar;
}
fclose(fp);
}
复习C:
一、单项选择题
1、 有定义语句:int x, y;,若值11,变量y得到数值12,下面四组输入要通过
scanf("%d,%d",&x,&y);语句使变量x得到数形式中,错误得就是( A )
A)11 12<回车> B)11, 12<回车>
C)11,12<回车> D)11 ,<回车>12<回车>
2、若有语句int a=1,b=2,c=3;则以下值为0得表达式就是( D )
A)’a’&&’b’ B)a<=b C)((a>b)||(b<c) D)(!(a+b)==c&&a)
3、设int a=9;则printf(″%d,%d\n″,a , a++);得输出结果就是 ( C ) 。
A)9,10 B)10,9 C)9,9 D)10,10
4、以下叙述正确得就是(C)。
A)可以把define与if定义为用户标识符
B)可以把define定义为用户标识符,但不能把if定义为用户标识符
C)可以把if定义为用户标识符,但不能把define定义为用户标识符
D)define与if都不能定义为用户标识符
5、运行以下程序后,如果从键盘上输入65 14<回车>,则输出结果为(A)。
main
{ int m,n;
printf("Enter m,n:");
scanf("%d%d,&m,&n");
while(m!=n)
{ while(m>n) m=n;
while(n>m) n=m;
}
printf("m=%d\n",m);
}
A)m=3 B)m=2 C)m=1 D)m=0
6、运行下面得程序运行后,如果从键盘上输人5,则输出结果就是(A)。
main
{ int x;
scanf("%d",&x);
if(x<5) printf("%d"'x);
else printf("%d"'x++);
}
A)3 B)4 C)5 D)6
7、定义函数时,若函数得类型缺省,则函数得默认类型就是( D )。
A)char B) void C)float D)int
8、设有说明int (* prt)[M]; 其中得标识符prt就是( C )。
A)M个指向整型变量得指针
B)指向M个整型变量得函数指针
C)一个指向具有M个整型元素得一维数组得指针
D)具有M个指针元素得一维指针数组,每个元素都只能指向整型变量
9、已知函数说明语句:void *fx( );则它得含义就是( C )。
A)函数fx得返回值就是一个空类型得指针
B)函数fx得返回值可以就是任意得数据类型
C)函数fx无返回值
D)指针fx指向一个函数,该函数无返回值
10、对于下述定义,不正确得叙述就是( C ) 。
union data
{ int i;
char c;
float f;
}a, b;
A)变量a所占内存得长度等于成员f得长度
B)变量a得地址与它得各成员地址都就是相同得
C)可以在定义时对a初始化
D)不能对变量a赋值,故a=b非法
11、C语言库函数fgets(str, n, fp)得功能就是(D ) 。
A)从文件fp中读取长度n得字符串存入
B)从文件fp中读取长度不超过n1得字符串存入str指向得内存
C)从文件fp中读取n个字符串存入str指向得内存
D)从串str读取至多n个字符到文件fp
12、下述程序向文件输出得结果就是( B ) 。
#include<stdio、h>
void main( )
{ FILE *fp=fopen(“TEST”, “wb”);
fprintf(fp, “%d%5、0f%c%d”, 58, 76273、0, ’’, 2278);
fclose(fp);
}
A) 58 75273 2278 B) 5876273、0000002278
C) 58752732278 D) 因文件为二进制文件而不可读
13、下面程序输出结果就是( B) 。
#define MAX 5
int a[MAX],k;
main
{ printf("\n"); fun1; fun3; printf("\t"); fun2; fun3; }
fun1
{ for (k=0; k<MAX;k++)
a[k]=k+k;}
fun2
{ int a[MAX],k;
for (k=0;k<5;k++)
a[k]=k; }
fun3
{ int k;
for (k=0;k<MAX;k++)
printf("%3d",*(a+k)); }
A) 0 2 4 6 8 0 2 4 6 8
B) 0 2 4 6 8 0 1 2 3 4
C) 0 1 2 3 4 0 2 4 6 8
D) 0 1 2 3 4 0 1 2 3 4
14、已知:int x;执行下面得程序段后,输出结果为(C )。
for (x=3; x<6; x++)
printf ((x%2)? “**%d”: “##%d\
展开阅读全文