C程序复习题1
2011年12月15日
一、正误 共 10 题
第 1 题
char *p="girl"; 的含义是定义字符型指针变量 p , p 的值是字符串 "girl" 。
答案: N
第 2 题
C 语言的当型循环是先执行循环后判断条件 .
答案: N
第 3 题
C 语言中的整型常量有 3 种表示方法 .
答案: Y
第 4 题
表达式 1/4+2.75 的值是 3.
答案: N
第 5 题
C 语言中只能逐个引用数组元素而不能一次引用整个数组。
答案: Y
第 6 题
静态变量和外部变量都是全局变量 , 它们的存储是静态的 .
答案: N
第 7 题
若有 int i=10,j=2; 则执行完 i*=j+8; 后 i 的值为 28.
答案: N
第 8 题
char a[]={'a','b','c'};char b[]={"abc"}; 数组 a 和数组 b 占用的内存空间大小不一样 .
答案: Y
第 9 题
"++" 运算符的优先级比 "+" 运算符的优先低 .
答案: N
第 10 题
unsigned 和 void 在 C 中都是保留字 .
答案: Y
二、单项选择 共 30 题
第 1 题
若 char a[10]; 已正确定义 , 以下语句中不能从键盘上给 a 数组的
所有元素输入值的语句是 ().
A:gets(a);
B:scanf("%s",a);
C:for(i=0;ic)b=a;a=c;c=b; 则 c 的值为()。
A:1
B:2
C:3
D: 不一定
答案 : B
第 7 题
以下程序段 char *alp[]={"ABC","DEF","GHI"}; int j; puts(alp[1]);
的输出结果是 () 。
A:A
B:B
C:D
D:DEF
答案: D
第 8 题
在 C 语言中, char 型数据在内存中的存储形式是()。
A: 补码
B: 反码
C: 原码
D:ASCII 码
答案: D
第 9 题
以下不符合 C 语言语法的赋值语句是()。
A:a=1,b=2
B:++j;
C:a=b=5;
D:y=(a=3,6*5);
答案: A
第 10 题
若使用一维数组名作函数实参 , 则以下正确的说法是 ().
A: 必须在主调函数中说明此数组的大小
B: 实参数组类型与形参数组类型可以不匹配
C: 在被调用函数中 , 不需要考虑形参数组的大小
D: 实参数组名与形参数组名必须一致
答案: A
第 11 题
下列程序的输出结果是()。
main()
{int a=7,b=5;
printf("%d\n",b=b/a);
}
A:0
B:5
C:1
D: 不确定值
答案: A
第 12 题
经过下列的语句 int j,a[10],*p; 定义后 , 下列语句中合法的是 ().
A:p=p+2;
B:p=a[5];
C:p=a[2]+2;
D:p=&(j+2);
答案: A
第 13 题
下列字符序列中,不可用作 C 语言标识符的是()。
A:b70
B:#ab
C:symbol
D:a_1
答案: B
第 14 题
以下不是无限循环的语句为 ().
A:for(y=0,x=1;x>++y;x=i++) i=x;
B:for(;;x++=i);
C:while(1){x++;}
D:for(i=10;;i--) sum+=i;
答案: A
第 15 题
若 ch 为 char 型变量 ,k 为 int 型变量 ( 已知字符 a 的 ASCII 十进制代码为 97) ,
则以下程序段的执行结果是()。
ch='a'; k=12; printf("%x,%o,",ch,ch,k); printf("k=%%d\n",k);
A: 因变量类型与格式描述符的类型不匹配 , 输出无定值
B: 输出项与格式描述符个数不符 , 输出为零值或不定值
C:61,141,k=%d
D:61,141,k=%12
答案: C
第 16 题
在位运算中,操作数每右移一位 , 其结果相当于()。
A: 操作数乘以 2
B: 操作数除以 2
C: 操作数乘以 16
D: 操作数除以 16
答案: B
第 17 题
若有 int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a; 则输出结果不为 5
的语句为()。
A:printf("%d",*(a+5));
B:printf("%d",p[5]);
C:printf("%d",*(p+5));
D:printf("%d",*p[5]);
答案: D
第 18 题
以下标识符中,不能作为合法的 C 用户定义标识符的是()。
A:a3_b3
B:void
C:_123
D:IF
答案: B
第 19 题
C 语言程序中 , 当调用函数时 ().
A: 实参和虚参各占一个独立的存储单元
B: 实参和虚参可以共用存储单元
C: 可以由用户指定是否共用存储单元
D: 计算机系统自动确定是否共用存储单元
答案: A
第 20 题
已知字母 a 的 ASCII 十进制代码为 97 ,则执行下列语句后的输出结果为()。
char a='a'; a--;
printf("%d,%c\n",a+'2'-'0',a+'3'-'0');
A:b,c
B:a-- 运算不合法 , 故有语法错
C:98,c
D: 格式描述和输出项不匹配 , 输出无定值
答案: C
第 21 题
下列程序段的输出结果为 ().
int a=7,b=9,t;
t=a*=a>b?a:b;
printf("%d",t);
A:7
B:9
C:63
D:49
答案 : C
第 22 题
设 char *s="\ta\017bc"; 则指针变量 s 指向的字符串所占的字节数
是 () 。
A:9
B:5
C:6
D:7
答案: C
第 23 题
为了避免在嵌套的条件语句 if-else 中产生二义性, C 语言规定 :
else 子句总是与()配对。
A: 缩排位置相同的 if
B: 其之前最近的 if
C: 其之后最近的 if
D: 同一行上的 if
答案: B
第 24 题
下列数据中,为字符串常量的是()。
A:A
B:"house"
C:How do you do.
D:$abc
答案: B
第 25 题
设 C 语言中 ,int 类型数据占 4 个字节 , 则 short 类型数据占 ().
A:1 个字节
B:2 个字节
C:4 个字节
D:8 个字节
答案: B
第 26 题
下列运算符中优先级最高的是()。
A:0||E不能作为合法的 C 用户定义标识符的是 ().
A:putchar
B:_double
C:_123
D:INT
答案: A
第 30 题
设变量 a 是整型, f 是实型, i 是双精度型,则表达式 10+'a'+i*f 值的
数据类型为()。
A:int
B:float
C:double
D: 不确定
答案: C
三、程序填空 共 2 题
第 1 题
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:从键盘上输入两个复数的实部与虚部,求出并输出它们的
和、差、积、商。
-------------------------------------------------------*/
#include
void main()
{float a,b,c,d,e,f;
printf(" 输入第一个复数的实部与虚部: ");
scanf("%f, %f",&a,&b);
printf(" 输入第二个复数的实部与虚部: ");
scanf("%f, %f",&c,&d);
/***********SPACE***********/
【 ? 】 ;
f=b+d;
printf(" 相加后复数:实部: %f, 虚部: %f\n",e,f);
e=a*c-b*d;
/***********SPACE***********/
【 ? 】 ;
printf(" 相乘后复数:实部: %f, 虚部: %f\n",e,f);
e=(a*c+b*d)/(c*c+d*d);
/***********SPACE***********/
【 ? 】 ;
printf(" 相除后复数:实部: %f, 虚部: %f\n",e,f);
}
答案 :
=======( 答案 1)=======
e=a+c
========= 或 =========
e=c+a
=======( 答案 2)=======
f=a*d+b*c
========= 或 =========
f= a*d + b*c
========= 或 =========
f= a * d + b * c
=======( 答案 3)=======
f=(b*c-a*d)/(c*c+d*d)
========= 或 =========
f=(b*c-a*d) / (c*c+d*d)
========= 或 =========
f=( b * c - a * d ) / ( c * c + d * d )
第 2 题
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:输出 100 到 1000 之间的各位数字之和能被 15 整除的所有数,
输出时每 10 个一行。
-------------------------------------------------------*/
main()
{
int m,n,k,i=0;
for(m=100;m0)
========= 或 =========
while(0
#include
#include
void fun (char *s, char *t)
{
/**********FOUND**********/
int i;
sl = strlen(s);
for (i=0; iRead File Error");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{printf("Write File Error");
}
fscanf(IN,"%s",i);
copy(i,o);
fprintf(OUT,"%s\n",o);
fclose(IN);
fclose(OUT);
}
答案: ----------------------
int i;
for(i=0;str1!='\0';i++)
str2=str1;
str2='\0';
----------------------
2011年12月15日
一、正误 共 10 题
第 1 题
char *p="girl"; 的含义是定义字符型指针变量 p , p 的值是字符串 "girl" 。
答案: N
第 2 题
C 语言的当型循环是先执行循环后判断条件 .
答案: N
第 3 题
C 语言中的整型常量有 3 种表示方法 .
答案: Y
第 4 题
表达式 1/4+2.75 的值是 3.
答案: N
第 5 题
C 语言中只能逐个引用数组元素而不能一次引用整个数组。
答案: Y
第 6 题
静态变量和外部变量都是全局变量 , 它们的存储是静态的 .
答案: N
第 7 题
若有 int i=10,j=2; 则执行完 i*=j+8; 后 i 的值为 28.
答案: N
第 8 题
char a[]={'a','b','c'};char b[]={"abc"}; 数组 a 和数组 b 占用的内存空间大小不一样 .
答案: Y
第 9 题
"++" 运算符的优先级比 "+" 运算符的优先低 .
答案: N
第 10 题
unsigned 和 void 在 C 中都是保留字 .
答案: Y
二、单项选择 共 30 题
第 1 题
若 char a[10]; 已正确定义 , 以下语句中不能从键盘上给 a 数组的
所有元素输入值的语句是 ().
A:gets(a);
B:scanf("%s",a);
C:for(i=0;ic)b=a;a=c;c=b; 则 c 的值为()。
A:1
B:2
C:3
D: 不一定
答案 : B
第 7 题
以下程序段 char *alp[]={"ABC","DEF","GHI"}; int j; puts(alp[1]);
的输出结果是 () 。
A:A
B:B
C:D
D:DEF
答案: D
第 8 题
在 C 语言中, char 型数据在内存中的存储形式是()。
A: 补码
B: 反码
C: 原码
D:ASCII 码
答案: D
第 9 题
以下不符合 C 语言语法的赋值语句是()。
A:a=1,b=2
B:++j;
C:a=b=5;
D:y=(a=3,6*5);
答案: A
第 10 题
若使用一维数组名作函数实参 , 则以下正确的说法是 ().
A: 必须在主调函数中说明此数组的大小
B: 实参数组类型与形参数组类型可以不匹配
C: 在被调用函数中 , 不需要考虑形参数组的大小
D: 实参数组名与形参数组名必须一致
答案: A
第 11 题
下列程序的输出结果是()。
main()
{int a=7,b=5;
printf("%d\n",b=b/a);
}
A:0
B:5
C:1
D: 不确定值
答案: A
第 12 题
经过下列的语句 int j,a[10],*p; 定义后 , 下列语句中合法的是 ().
A:p=p+2;
B:p=a[5];
C:p=a[2]+2;
D:p=&(j+2);
答案: A
第 13 题
下列字符序列中,不可用作 C 语言标识符的是()。
A:b70
B:#ab
C:symbol
D:a_1
答案: B
第 14 题
以下不是无限循环的语句为 ().
A:for(y=0,x=1;x>++y;x=i++) i=x;
B:for(;;x++=i);
C:while(1){x++;}
D:for(i=10;;i--) sum+=i;
答案: A
第 15 题
若 ch 为 char 型变量 ,k 为 int 型变量 ( 已知字符 a 的 ASCII 十进制代码为 97) ,
则以下程序段的执行结果是()。
ch='a'; k=12; printf("%x,%o,",ch,ch,k); printf("k=%%d\n",k);
A: 因变量类型与格式描述符的类型不匹配 , 输出无定值
B: 输出项与格式描述符个数不符 , 输出为零值或不定值
C:61,141,k=%d
D:61,141,k=%12
答案: C
第 16 题
在位运算中,操作数每右移一位 , 其结果相当于()。
A: 操作数乘以 2
B: 操作数除以 2
C: 操作数乘以 16
D: 操作数除以 16
答案: B
第 17 题
若有 int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a; 则输出结果不为 5
的语句为()。
A:printf("%d",*(a+5));
B:printf("%d",p[5]);
C:printf("%d",*(p+5));
D:printf("%d",*p[5]);
答案: D
第 18 题
以下标识符中,不能作为合法的 C 用户定义标识符的是()。
A:a3_b3
B:void
C:_123
D:IF
答案: B
第 19 题
C 语言程序中 , 当调用函数时 ().
A: 实参和虚参各占一个独立的存储单元
B: 实参和虚参可以共用存储单元
C: 可以由用户指定是否共用存储单元
D: 计算机系统自动确定是否共用存储单元
答案: A
第 20 题
已知字母 a 的 ASCII 十进制代码为 97 ,则执行下列语句后的输出结果为()。
char a='a'; a--;
printf("%d,%c\n",a+'2'-'0',a+'3'-'0');
A:b,c
B:a-- 运算不合法 , 故有语法错
C:98,c
D: 格式描述和输出项不匹配 , 输出无定值
答案: C
第 21 题
下列程序段的输出结果为 ().
int a=7,b=9,t;
t=a*=a>b?a:b;
printf("%d",t);
A:7
B:9
C:63
D:49
答案 : C
第 22 题
设 char *s="\ta\017bc"; 则指针变量 s 指向的字符串所占的字节数
是 () 。
A:9
B:5
C:6
D:7
答案: C
第 23 题
为了避免在嵌套的条件语句 if-else 中产生二义性, C 语言规定 :
else 子句总是与()配对。
A: 缩排位置相同的 if
B: 其之前最近的 if
C: 其之后最近的 if
D: 同一行上的 if
答案: B
第 24 题
下列数据中,为字符串常量的是()。
A:A
B:"house"
C:How do you do.
D:$abc
答案: B
第 25 题
设 C 语言中 ,int 类型数据占 4 个字节 , 则 short 类型数据占 ().
A:1 个字节
B:2 个字节
C:4 个字节
D:8 个字节
答案: B
第 26 题
下列运算符中优先级最高的是()。
A:0||E不能作为合法的 C 用户定义标识符的是 ().
A:putchar
B:_double
C:_123
D:INT
答案: A
第 30 题
设变量 a 是整型, f 是实型, i 是双精度型,则表达式 10+'a'+i*f 值的
数据类型为()。
A:int
B:float
C:double
D: 不确定
答案: C
三、程序填空 共 2 题
第 1 题
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:从键盘上输入两个复数的实部与虚部,求出并输出它们的
和、差、积、商。
-------------------------------------------------------*/
#include
void main()
{float a,b,c,d,e,f;
printf(" 输入第一个复数的实部与虚部: ");
scanf("%f, %f",&a,&b);
printf(" 输入第二个复数的实部与虚部: ");
scanf("%f, %f",&c,&d);
/***********SPACE***********/
【 ? 】 ;
f=b+d;
printf(" 相加后复数:实部: %f, 虚部: %f\n",e,f);
e=a*c-b*d;
/***********SPACE***********/
【 ? 】 ;
printf(" 相乘后复数:实部: %f, 虚部: %f\n",e,f);
e=(a*c+b*d)/(c*c+d*d);
/***********SPACE***********/
【 ? 】 ;
printf(" 相除后复数:实部: %f, 虚部: %f\n",e,f);
}
答案 :
=======( 答案 1)=======
e=a+c
========= 或 =========
e=c+a
=======( 答案 2)=======
f=a*d+b*c
========= 或 =========
f= a*d + b*c
========= 或 =========
f= a * d + b * c
=======( 答案 3)=======
f=(b*c-a*d)/(c*c+d*d)
========= 或 =========
f=(b*c-a*d) / (c*c+d*d)
========= 或 =========
f=( b * c - a * d ) / ( c * c + d * d )
第 2 题
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:输出 100 到 1000 之间的各位数字之和能被 15 整除的所有数,
输出时每 10 个一行。
-------------------------------------------------------*/
main()
{
int m,n,k,i=0;
for(m=100;m0)
========= 或 =========
while(0
#include
#include
void fun (char *s, char *t)
{
/**********FOUND**********/
int i;
sl = strlen(s);
for (i=0; iRead File Error");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{printf("Write File Error");
}
fscanf(IN,"%s",i);
copy(i,o);
fprintf(OUT,"%s\n",o);
fclose(IN);
fclose(OUT);
}
答案: ----------------------
int i;
for(i=0;str1!='\0';i++)
str2=str1;
str2='\0';
----------------------