人人范文网 范文大全

C语言

发布时间:2020-03-03 03:11:55 来源:范文大全 收藏本文 下载本文 手机版

信盈达考试中心笔试试题—C语言测试试题 姓名:____________ 联系方式:___________ 测试成绩:_____ 老师评价:___________

一、填空题(每题2分,共20分) 1.已知unsigned char a = 250; int b = 250; 则计算: b = a

a = ___250____,b = ___1000________。

unsigned char a = 250;// 1111 1010

11 1110 10 1000

数据类型:

基本数据类型:int 按大小: short int 2字节 16位 long int 4个字节 int 4个字节

按符号:

有符号:

signed int -----缺省,默认为有符号的

无符号: unsigned int

字符型 char 1字节

在内存中以整数的形式存储

默认为有符号

float 实型----单精度 4字节 3.1415-----0.31415 符号位+小数位+指数 double 双精度 8个字字节

求数据类型所占空间的大小:

sizeof(数据类型/变量名) ------关键字

构造数据类型:结构体 数组 共用体

指针类型

空类型(void)

----------------------- 位运算符: > & | ~ ^ 数据进行运算之前,需要将数据转换成二进制进行运算

1)按位 & 规则:有0为0,全1为1

char a=0x56 //0101 0110 char b=0x78 //0111 1000 a | b : ----------------------------- 0111 1110

2)按位 | 规则:有1为1 全0为0

3)按位 ^ 规则:相同为0,相异为1 char a=0x56 //0101 0110 char b=0x78 //0111 1000 a ^ b : 0010 1110

4)按位

char a=0x56 0101 1000

4)按位 >> 规则:整体右移,低位溢出,高位补0

char a=0x56 //0101 0110

0001 0101>>2

数据类型的转换

强制数据类型转换

高精度---》低精度 (int)1.23 float a=12.34 int b; b=(int)a 自动数据类型转换 ----》由低精度-->高精度转换

从低到高:

char--short--int--long--float--double

运算符:

1.算数运算符:+

数据溢出:

数据从最大值方向溢出,此时,会从最小值开始递增

数组从最小值方向溢出,会从最大值方向开始递增

数据类型决定数据存储范围

4.已知:int a; scanf(\"%o\", &a); 假设用户输入:482\\n。则 printf(\"a = %o\\n\", a); 输出______4______。

printf(\"格式控制\",输出列表) 格式控制:

格式符:控制数据输出的格式 %d %f %s %u %c %o %x %p 输出地址

格式符跟输出列表在类型 数量 位置上一一对应

转义字符:

\'\\n\' :回车换行 \'\\t\' : \'\\r\' :回车不换行 \'\\hhh\':八进制

\'\\72\'-----7*8+2=58 \'\\xh\':十六进制

格式输入函数

scanf(\"格式控制\",地址列表) int a; scanf(\"%d\",&a);

格式控制:控制数据输入的格式 %d %f %s %u %c %o %x 格式控制符 跟取地址列表

原样输入原样输出----- ------------------------ 5.已知:int a = 10; int b = 20; (a + b, a++, ++b); printf(\"a = %d b = %d\\n\", a, b); 输出___11___21_____。 (a + b, a++, ++b);

---------- 6.已知:double a = 10; int b = 5; double c; c = a % b; 程序编译报错的原因是

_变量a为double类型的数据_____________

7.已知有一个二进制数:0101 0101 1101 0101, 则其对应的八进制形式为:___52725_______, 十六进制形式为:__0x55D5________。

8.堆栈是一组相同相同数据类型数据的集合,

则堆栈的特点是_____先进后出________________。

9.已知队列是一种特殊的线性表,有这自己的独特的特点, 则其特点是______先进先出_______。

10.写出: 0 ‘0’ “0”的区别: \"0\"----‘0’\'\\0\' ____________________________________________________________________________________________。

char a[5]={\'h\',\'e\',\'l\',\'l\',\'o\'};---->字符数组

数据类型 数组名[长度];

数组名[下标]

字符串:由多个字符来组成

--------------------

二、选择题(每题2分,共20分) 1.已知a, b, c都是int类型变量, 其中: a = 8,b = 9,c = 10, 则表达式:1

A)真 B) 假 C) 1 D) 0 2.C语言提供的合法的关键字是( d ) A) include B) public C) Case D) do c++ :

switch(整型常量表达式) { case 整型常量 :语句块; case 整型常量1:语句块2 ... default: 语句块 } do { //循环体

}while(条件表达式);

while(条件表达式) { //循环体 }

inlcude :文件包含指令 #: 预处理

程序编译的四步:

预处理

编译

汇编

链接

3.在C语言中,若对函数类型未加明显式说明,

则函数的隐含类型是( C ) A) void B) double

C) int

----------------- 函数的定义的形式:

函数返回值类型 函数名(参数列表) { 函数体 }

函数说明:

函数返回值类型:函数要返回的数据类型 void 表示函数无返回值

函数名:代表了函数的入口地址

参数列表:数据类型 参数名

函数名 参数名 都要符合标识符的命名规则:

标识符的命名规则:

1.由数字,字母,下划线,美元符($)组成 2.开头不能为数字 3.并且不能是关键字 int jc(int n) { int i; int s=1; for(i=1;i

return s; }

4.已知 char a = 130; printf(\"%d\\n\", a); 的输出结果是( B )

D) char

A) 130

B)-126 C) 有语法错误,无输出结果

D) -1

------------------------ char a; 数据存储范围:-128~127

5.若变量a是int类型,并执行了语句:a = \'A\'+1.6; 65+1.6 则正确的叙述是( D ) A) a的值是字符 \'C\'

B) a的值是浮点型 C) 不允许字符型和浮点型相加

D) a的值是字符 \'A\' 的ASCII值加上1

6.若要求在if后一对圆括号中表示a不等于0的关系, 则能正确表示这一关系的表达式为( D ) A) a0

B) !a

C) a=0

if(a) { //语句块1 } else { //语句块2 } 条件表达式成立的依据:条件表达式结果为非0值

--------------- if语句的嵌套 if(条件表达式1) { //语句块1 } else if(条件表达式2) { //语句块2 } else if(条件表达式3) { //语句块3 } else {

D) a

//语句块4 }

switch(整型常量表达式) { case 整型常量:语句块1; case 整型常量:语句块2; case 整型常量:语句块3;

。。。。

default:语句块n; }

--- 终端输入一个学生成绩:

判断输入的数据是否为成绩

如果不是成绩:打印数据输入有误,

程序代码结束

显示成绩所处的等级:

等级划分:

90-100 A 90-99 100 9 10 80-89 B 8 70-79 C 7 60--69 D 6

#include

int main() { int n;

while(1) { printf(\"请输入学生成绩:\"); scanf(\"%d\",&n);

if(n100) { printf(\"sorry,数据输入有误!\\n\"); return 0; } n=n/10;

switch(n) { case 10 :printf(\"该学生所处的成绩等级是A\\n\");break; case 9 : printf(\"该学生所处的成绩等级是A\\n\");break; case 8 : printf(\"该学生所处的成绩等级是B\\n\");break; case 7 : printf(\"该学生所处的成绩等级是C\\n\");break; case 6 : printf(\"该学生所处的成绩等级是D\\n\");break; default: printf(\"改学生的成绩不合格\\n\"); } } return 0; }

7.若有定义:int a=8,b=5,c;,执行语句c=a/b+0.4;后,c的值为( B ) A) 1.4

B) 1

C) 2.0

D) 2 ------------------- int a=8,b=5,c;,执行语句c=1+0.4

8.若有以下程序段, int c1=3, c2=2, c3; c3 = 1.0 / c2 * c1; 则执行后,c3中的值是( C ) A) 0

B) 0.5 C) 1

D) 1.5 ---------------------- int c1=3, c2=2, c3; c3 = 0.5* c1;

9.若有以下定义和语句 char c1=\'b\',c2=\'e\'; printf(\"%d,%c\\n\",c2-c1,c2-\'a\'+\"A\"); 则输出结果是( D ) A)2,M

B)3,E C)2,E

D)输出项与对应的格式控制不一致,输出结果不确定

10.假设有说明语句:char a=\'\\72\'; 则变量a ( A ) A) 包含1个字符

B) 包含2个字符 C) 包含3个字符

D) 说明不合法

三、简答&程序题(每题6分,共60分)

1.我们学习过的9条语句是指那些语句?并且至少写出3条语句的结构,如while语句: while(表达式) { 循环体; }

------------------------- 1 2 5 4 for(赋值表达式;条件表达式;循环变量表达式) { 3 6 //循环体; }

赋值表达:执行一次

四个跳转语句:

break:

适用于循环 switch

作用:结束循环语句,跳出switch结构

continue 语句

适用于循环语句

作用:结束本次循环

#include int main() { int i;

for(i=0;i

return : 返回一个数值

结束函数

#include int pi(); int main() { int i; int s; for(i=0;i

int pi() { printf(\"hello world\\n\"); return 1; printf(\"are you ok!\\n\"); return 2; }

goto 语句

真正的跳转语句

语法:goto 标签名

只能在同一个函数进行跳转

#include

int main() {

int i; int sum=0; for(i=1;i

printf(\"%d\\n\",sum); } ------ #include int main() { int i=1; int sum=0; mu: if(i

sum=sum+i; i++; goto mu; } printf(\"%d\\n\",sum); }

2.输入一个不多于5位的正整数,判断他是几位数,

并逆序输出。

#include int main() { int n; int a[5]; int i=0; int cnt=0; scanf(\"%d\",&n); //1234 while(n>0) { a[i++]=n%10; n=n/10; cnt++; } for(i=0;i

3.编程实现求

1*1*1 + 2*2*2 + 3*3*3 + ....+ 100*100*100的和。

#include int main() { int i; int sum=0; for(i=1;i

printf(\"%d\\n\",sum); } ---------- #include int main() { int i; int sum=0; for(i=1;i

printf(\"1*1*1 + 2*2*2 + 3*3*3 + ....+ 100*100*100=%d\\n\",sum); }

4.编程计算1*2*3+3*4*5+.......+99*100*101的值。

#include int main() { int i; int sum=0; for(i=1;i

printf(\"1*2*3+3*4*5+...+99*100*101=%d\\n\",sum); }

---------

终端输入一个整数(任意),输入一个数,控制位数 n=5 a+aa+aaa+aaaa+aaaaa 3,6 3+33+333+3333+33333+333333 int s=0; int sum=0; for(i=0;i

----------------------------- 求一个数的阶乘, 显示:

1!=1 2!=1*2 3!=1*2*3 1!= 2!= 3!= 4!= ... 10!

1!+2!+3!+4!...10!=

int s=1; int sum=0 for(i=1;i

5.编写一个函数实现将两个正整数合成一个整型数。 如 12 和 34合成1234。

12 34 1200+34 123 456 123000+456 ---------------------------

#include

int hc(int a,int b);

int main() { int x,y; int sum; while(1) { printf(\"please enter two numbers:\\n\"); scanf(\"%d%d\",&x,&y);

sum=hc(x,y);

printf(\"%d, %d 合成 %d\\n\",x,y,sum); } } int hc(int a,int b) // int a=x,int b=y { int c=b; while(c>0) { c=c/10; a=a*10; }

return (a+b); } --------

6.简要说明自定义函数中数据的传递有那两种方式, 并说明其各自的特点。(最好举例说明)。

值传递:形参改变,不会影响实参 址传递:形参改变,会影响实参

#include

void swap(int x,int y) int main() { int a=3; int b=4;

printf(\"交换之前:a=%d,b=%d\\n\",a,b); swap(a,b); swp(&a,&b); printf(\"交换之后:a=%d,b=%d\\n\",a,b); } void swap(int x,int y)//int x=a,int y=b { int temp; temp=x; x=y; y=temp; } void swp(int *x,int *y); { int tmp; tmp=*x; *x=*y; *y=tmp; }

指针:存地址的变量

指针的定义形式:

数据类型 *指针名; 数据类型:指针指向的地址空间的数据类型决定 * :标识符,只是说明该变量是指针变量

指针运算: & 取地址 * 取内容

7.strlen()函数是求解字符串的长度,已知该函数的功能, 请重新写一个子函数,实现跟strlen()函数一样的功能。

strlen() 执行原理:求解字符串的字符个数,不包含\'\\0\'

char str[50];

scanf(\"%s\",str); //scanf()函数遇到空格则停止输入

字符串输入函数gets()

字符串输出函数puts()--->输出一个字符串 n=strlen(str);

#include #include

int my_strlen(char *p);

int main() {

char str[50]; int n;

gets(str);

//n=strlen(str); n=my_strlen(str);

printf(\"%s\\n\",str); printf(\"%d\\n\",n);

} int my_strlen(char *p) { int n=0;

while(*p!=\'\\0\') { p++; n++; }

return n; }

8.求具有abcd=(ab+cd)2性质的四位数。

如3025这个数具有一种独特的性质:将它平分为二段, 即30和25,使之相加后求平方,即(30+25)2, 恰好等于3025本身。

编写一个程序输出具有这样性质的全部四位数。

1000 ~ 9999

#include

int main() { int ab,cd; int i; for(i=1000;i

9.写一个冒泡排序的程序,排序的数字个数不少于五个。

冒泡排序:相邻的数字进行比较

根据从小到大或者从大到小进行排序

1 2 3 4 5 6 7 8 9 10

第一轮:2 3 4 5 6 7 8 9 10 1 第一轮:3 4 5 6 7 8 9 10 2 1 第三轮:4 5 6 7 8 9 10 3 2 1 第四: 第五:

#include

int main() { int a[100]; int i,j,tmp; int n;

printf(\"请输入要排序的个数:\"); scanf(\"%d\",&n);

for(i=0;i

for(i=0;i

for(i=0;i

10.strcat()函数是字符串连接函数, 请重写一个子函数,并实现其功能

strcat(数组1,字符串/数组名)

执行原理:将字符串或者数组名里面字符连同\'\\0\' 一起连接到数组1的\'\\0\'位置; (将数组1的\'\\0\'位置覆盖)

#include

void my_stcat(char *s,char *p); int main() { char str[50]; char buf[20];

printf(\"请输入第一个字符串:\"); gets(str); printf(\"请输入第二字符串:\"); gets(buf);

my_stcat(str,buf);

puts(str); } void my_stcat(char *s,char *p) { char *pf=s;

while(*pf!=\'\\0\') pf++; while(*p!=\'\\0\') { *pf=*p; pf++; p++; } *pf=\'\\0\'; }

C语言

c语言

c语言

c语言

C语言

C语言

C语言

C语言

c语言

C语言

C语言
《C语言.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档