C语言练习

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章
填空题
1.C语言是一种的程序设计语言。

2.C程序是由函数构成的,一个C源程序至少包含一个函数。

3.C程序的执行是从函数开始。

4.一个函数由和两部分组成。

5.函数体一般包括和。

6.C源文件取名,后缀一般为,编译源代码,生成目标文件,其后缀名一般为,对目标文件进行
连接,生成可执行文件,其后缀名一般为。

7.一个C语言的语句至少应包含一个。

8.用对C程序中的任何部分作注释。

第三章
填空题
1.变量代表内存中具有特定属性的一个。

2.在C语言中,要求对所有用到的变量作强制定义,也就是“先,后”。

3.在定义变量的同时给变量一个值,称为。

4.#define PI 3.14 说明PI为。

5.C语言规定标识符只能由、和三种字符组成,且第一个字符必须为或。

6.在C语言中整数可用________进制数、________进制数、________进制数三种数制表示。

7.C语言中的实数又称,它有两种表示形式、。

8.在微机内存中,字符型数据以____________存储。

9.表达式 b=35/7*5-7%4*4 运算后 b= 。

10.已有变量a,其值伪2,则表达式(a=3*5),a+=2,a++ 的值为,a的值为。

选择题
1.以下符合C语言语法的实型常量是()。

A 1.2E0.5
B 3.14159E
C 0.5E-3
D E15
2.在C语言中运算对象必需是整型的运算符是()。

A %
B /
C *
D !
3.已有变量a,其值伪9,表达式a+=a-=a+a的值伪()。

A -9
B -18
C 9
D 18
4.下列选项中,能用作标识符的是()。

A 2_int_
B *1_2
C int-2_
D _123a
5.在C语言提供的合法的关键字是()。

A swicth
B cher
C default
D Case
6.如定义变量 i=3,则表达式-i++的值和i的值分别为()。

A -3 4
B -4 4
C -3 3
D -4 3
7.表达式(b=(2,3),b+=2 )%15+b 的值为( )。

A -30
B 10
C 18
D 15
8.定义 char c;表达式 c=‘a’- ‘A’+‘B’运算后,c为()。

A 98
B a
C b
D B
9.定义a、b、c为整型变量,并a、b、c的初值都是5的正确的语句是()。

A int a,b,c=5;
B int a=b=c=5
C int a=b=c=5;
D int a=5,b=5,c=5;
10.在C语言所有运算符中,优先级别最低的运算符是()。

A 逗号运算符
B 加减运算符
C 逻辑运算符
D 赋值运算符
第四章
填空题
1.执行scanf(“%2d%*3d%2d”,&a,&b);的输入是123456789,则a值为, b值为
2.若变量已正确定义,以下程序段的结果是_____ ________________。

float x=5.16894; printf("%.2f",(int)(x*1000+0.5)/(float)1000);
3.getchar函数只能接受个字符,输入数字也按字符处理。

输入多于一个字符时,只接收第个字符。

函数getchar将回车键作为一个读入。

4.若有以下程序段,其输出结果是________。

int a=0,b=0,c=0;
c=(a-=a-5),(a=b,b+3);
printf("%d,%d,%d\n",a,b,c);
5.当运行以下程序时,在键盘上从第一列开始输入9876543210 ,则程序的输出结果___________。

main()
{ int a; float b,c;
scanf("%2d%3f%4f",&a,&b,&c);
printf("%%a=%3d,b=%.2f,c=%3.3e\\\n",a,b,c) }
选择题
1.若变量已正确定义为float类型,要通过输入语句:scanf("%f %f %f",&a,&b,&c);给赋予15.0、b赋予27.0 、
c赋予43.0,以下不正确的输入形式是( )
A 15<回车>
B 15.0,27.0,43.0 <回车>
C 15.0
D 15 27
27<回车> 27.0 43.0 <回车> 43<回车>
43<回车>
2.putchar()函数可以向终端输出一个( )
A 整型变量或表达式的值B实型变量的值C字符串 D 字符
3.以下程序的输出结果是( )
A 因输出格式不合法,无正确输出
B 66,106
C b,107
D B,k
void main()
{ char c1='B',c2='k';
printf("%c,%d\n",c1+32,c2); }
第5、6章练习题
填空题:
1.C语言中表示逻辑值“真”,用表示逻辑值“假”。

2.C语言中逻辑运算符按优先级别高到低是、、。

3.C语言中逻辑运算符的优先级别高于算术运算符。

4.对数学十x≤y≤z应使用的C语言表达式是_ ______。

5.设a、b和c都是int型变量,且a=3,b=4,c=5;表达式a||b+c&&b-c的值_ ,表达式!((a<b)&&!c||1)的值。

6.当a=4,b=5,c=6时,以下if语句执行后,a、b、c中的值分别是 _ _ 、 ____、 ____。

if(a>c) c=b; b=a; a=c;判断题:
1.do-while语句构成的循环至少执行一次循环体。

()
2.do-while语句构成的循环时,只有在while后面的表达式为非零时结束循环。

()
3.break语句只能用于循环语句和switch语句。

()
4.continue语句终止整个循环的执行。

()
选择题
1.以下程序执行后sum的值是()。

#include <stdio.h>
void main()
{ int i, sum=0;
for(i=1;i<5;i++) sum+=i;
printf("%d\n",sum) ; }
A、10
B、11
C、不确定
D、0
2.阅读以下程序:
#include <stdio.h>
void main()
{ int x;
scanf("%d",&x);
if (x--<5)printf("%d\n",x);
else printf("%d\n",x++);
} 程序运行后,如果从键盘上输入5,则输出结果是()。

A、3
B、4
C、5
D、6
3.有以下程序运行后,输出结果是()。

#include <stdio.h>
void main()
{ int a=0;
switch(1)
{ case 0:
case 3:a+=2;
case 1:
case 2:a+=3;
default:a+=5; }
printf("%d\n",a); }
A、6
B、7
C、8
D、9
4.以下程序的输出结果是()。

#include <stdio.h>
void main()
{ int i;
for(i=1;i<4;i++)
{ if(i%2) printf("*");
else continue;
printf("#"); }
printf("$\n"); }
A、*#*#*#$
B、#*#*#*$
C、*#*#$
D、#*#*$
5.以下程序的输出结果是()。

#include <stdio.h>
void main()
{ int i=0,s=0;
do{
i++;
s+= i;
}while(i<3);
printf("%d\n",s);
}
A、3
B、4
C、5
D、6
6.设ch是char型变量,其值为A,且有表达式:ch=(ch>='A'&&ch<='Z')?(ch+32):ch 则表达式的值是()。

A、A
B、a
C、Z
D、z
7.以下程序的输出结果是()。

#include <stdio.h>
void main()
{ int i=0;
while(i<10)
{ i++;
if(i==5) break;
i++;}
printf("%d\n",i);
}
A、4
B、5
C、6
D、死循环,不能确定次数
第 7 、8章练习题
填空题:
1.若有定义: double w[10];则数组w数组元素下标的上限为,下限为。

2.在C语言中,二维数组元素在内存中的存放顺序为。

3.若有定义:int a[3][4]={{1,2},{0}{4,6,8,10}};则初始化后,a[1][2]得到的初值是,a[2][1]得到的初值
是。

4.语句: printf("%d\n",strlen("ATS\n65\1\0\\")); 的输出结果是。

5.程序段:char ch[5]={'a','b','\0','c','\0'}; printf("%s",ch); 运行结果是。

6.VC++ 6.0环境中函数strcmp("china","japan")的返回值是________。

7.已知 int a[ ][3]={1,2,3,4,5,6,7};则数组a的第一维的大小是。

8.设有数组定义:char a[ ]="china";则数组a所占的空间为个字节。

9.在函数定义中出现的参数为____________,而在函数调用时出现的参数为___________。

10.当调用函数时,实参是一个数组名,则向函数传送的是__ __。

判断题:
1.数组名代表的是数组中所占存储区的首地址,其值不可改变。

()
2.可以通过赋初值的方式确定数组元素的。

()
3.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息。

()
4.任何存储类的变量在未赋初值时,其值都是不确定的。

()
选择题:
1.以下不能正确定义二维数组的选项是()。

A、int a[2][2]={{1},{2}};
B、int a[][2]={1,2,3,4};
C、int a[2][2]={{1},2,3};
D、int a[2][]={{1,2},{3,4}};
2.以下程序的输出结果是()。

#include <stdio.h>
void main()
{int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};
printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]);
}
A、0650
B、1470
C、5430
D、输出值不定
3.有以下程序
#include <stdio.h>
void main()
{ int m[][3]={1,4,7,2,5,8,3,6,9};
int i,j,k=2;
for(i=0;i<3;i++)
{ printf("%d ",m[k][i]); }
}
执行后输出结果是____。

A、4 5 6
B、3 6 9
C、2 5 8
D、7 8 9
4.函数调用:strcat(strcpy(str1,str2),str3)的功能是()。

A、将串str1复制到串str2中后再连接到串str3之后
B、将串str1连接到串str2之后再复制到串str3之后
C、将串str2复制到串str1中后再将串str3连接到串str1之后
D、将串str2连接到串str1之后再将串str1复制到串str3中
5.当执行下面程序且输入:ABC时,输出的结果是()。

#include <string.h>
main( )
{ char ss[10]="12345";
strcat (ss,"6789");
gets(ss);printf('%s\n",ss);
}
A、ABC9
B、ABC
C、123456ABC
D、ABC456789
6.在C语言中,形参的缺省存储类是()。

A、extern
B、register
C、static
D、auto
7.以下程序的输出结果是()。

#include <stdio.h>
void f(int,int);
main()
{ int x=100,y=200;
f(y,x);
printf("x=%d,y=%d\n",x,y);
}
void f(int x, int y)
{printf("x=%d,y=%d,",x,y);
x=400;y=800;
}
A、x=200,y=100,x=100,y=200
B、x=100,y=100,x=200,y=200
C、x=200,y=200,x=100,y=100
D、x=100,y=200,x=200,y=100
8.以下程序的输出结果是()。

#include <stdio.h>
void main()
{ int f(int, int );
int k=4,m=1,p;
p=f(k, m);
printf("%d,",p);
p=f(k, m);
printf("%d\n",p);
}
f(int a, int b)
{ static int m, i=2;
i+=m+1;
m=i+a+b;
return m;
}
A、8,16
B、8,15
C、8,17
D、8,20
第10、11章练习题
填空题
1.若有定义 int a[ ]={10,20,30,40,50},*p=&a[1]; 则执行语句*p++;后,*p的值是_____________。

2.若有定义 int a[ ]={10,20,30,40,50},*p=&a[1]; 则表达式*++p的值是________________。

3.若有定义 int a[ ]={10,20,30,40,50},*p=&a[1]; 则表达式++*p的值是________________。

4.若有定义:char c; 使指针p可以指向变量c的定义语句是_____________________。

5.若有定义 int a[10],*p=a,i; 且0≤i<10,则可以用&a[i]、_________、p+i三种表达式来表示a[i]的地址,同时
可以用a[i]、*(a+i)、____________三种表达式来表示数组元素a[i]。

6.若有以下定义和语句:
struct student
{ int num; char name[ 20] ; int year; }stu,*p;
p=&stu;
则可用stu.num、___________________、(*p).num三种形式来引用结构体变量stu中的num成员。

选择题:
1.有以下程序
main()
{int a=7,b=8,*p,*q,*r;
p=&a;q=&b;
r=p; p=q; q=r;
printf("%d,%d,%d,%d\n",*p,*q,a,b);
}程序运行后的输出结果是()。

A、8,7,8,7
B、7,8,7,8
C、8,7,7,8
D、7,8,8,7
2.若有说明语句:int a,b,c,*d=&c,则能正确从键盘读入三个分别赋给变量a、b、c的语句是()。

A、scanf("%d%d%d",&a,&b,d);
B、scanf("%d%d%d",&a,&b,&d);
C、scanf("%d%d%d",a,b,d);
D、scanf("%d%d%d",a,b,*d);
3.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()。

A、char s[10]="abcdefg";
B、char t[]="abcdefg",*s=t;
C、char s[10];s="abcdefg";
D、char s[10];strcpy(s,"abcdefg");
4.有以下程序
main()
{char s[]="ABCD",*p;
for(p=s+1;p<s+4;p++)printf("%s\n",p);
程序运行后的输出结果是是()。

A、ABCD
B、A
C、B
D、BCD
BCD B C CD
CD C D D
D D
5.若有以下定义和语句:
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则不能表示a数组元素的表达式是是()。

A、*p
B、a[10]
C、*a
D、a[p-a]
6.下列程序段落的输出的结果是是()。

void fun (int *x,int *y)
{ printf("%d %d",*x,*y);
*x=3;*y=4;}
main()
{ int x=1,y=2;
fun(&y,&x);
printf("%d %d",x,y);
}
A、2 1 4 3
B、1 2 1 2
C、1 2 3 4
D、2 1 1 2
7.有以下定义
#include <stdio.h>
char a[10],*b=a;
不能给a数组输入字符串的语句是是()。

A、gets(a)
B、gets(a[0])
C、gets(&a[0]);
D、gets(b);
8.请读程序片段:
char str[]="ABCD", *p=str;
printf("%d\n",*(p+4));
上面程序的输出结果是是()。

A、68
B、0
C、字符"D"的地址
D、不确定的值
9.有以下程序段
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
b=p[5];
b中的值是是()。

A、5
B、6
C、8
D、9
10.设有说明int(*ptr)[M];其中的标识符ptr是是()。

A、M个指向整型变量的指针
B、指向M个整型变量的函数指针
C、一个指向具有M个整型元素的一维数组的指针
D、具有M个指针元素的一维指针数组, 每个元都只能指向整型量
11.在说明语句:int *f();中,标识符f代表的是是()。

A、一个用于指向整型数据的指针变量
B、一个用于指向一维数组的行指针
C、一个用于指向函数的指针变量
D、一个返回值为指针型的函数名
12.若有下机面的说明和定义:
struct texst
{ int m1; char m2; float m3;
union uu{ char u1[5]; int u2[2];} ua;
} myaa;
则sizeof(struct test)的值是是()。

A、12
B、16
C、14
D、9。

相关文档
最新文档