大学C语言知识点

大学C语言知识点
大学C语言知识点

大学C语言知识点

1.程序中基本的控制结构是三种: 顺序结构、选择结构(分支结构)、循环结构。2.读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。

3.计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是它的地址.

4.bit是位是指为0 或者1。 byte 是指字节, 一个字节 = 八个位.

5. 编译预处理不是C语言的一部分,不占运行时间,不要加分号。(常考!)

#define PI 3.1415926; 这个写法是错误的,一定不能出现分号。

6. 每个C语言程序中main函数是有且只有一个。

7. 用C语言编写的程序称为源程序,扩展名是.c。C程序必须经过编辑、编译、

链接、运行四个步骤才可得到运行结果。注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。(常考!)

8. C语言书写格式是自由的,每行可以写多个语句,一条语句也可以写在多行。

9. 一个C语言程序有且只有一个main函数,是程序运行的起点。

10. Cfree、VC/VC++、CodeBlock等是软件,用来运行写的C语言程序。(编译环境)

11.标识符(必考内容):

合法的要求是由字母,数字,下划线组成。有其它元素就错了。

并且第一个必须为字母或则是下划线。第一个为数字就错了

12. 标识符分为关键字、预定义标识符、用户标识符。

关键字(P259):不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方是If、Main等可以做为用户标识符。因为If、Main 中的第一个字母大写了,所以不是关键字和特定字了。

预定义标识符:如define scanf printf include。记住预定义标识符可以做为用户标识符,但因为它们有特定含义,一般不做用户标识符。

用户标识符:可作为常量名、变量名、函数名、构造类型名等。

13. 整型常量:C语言只有八、十、十六进制整数,没有二进制。但是运行时候,所有的进制都要转换成二进制来进行处理。(考过两次)

C语言中的八进制规定要以0开头。018的数值是非法的,八进制是没有8的。

C语言中的十六进制规定要以0x开头。

14. 实型常量:

小数的合法写法:C语言小数点两边有一个是零的话,可以不用写。

如:1.0在C语言中可写成1,0.1在C语言中可以写成 .1。

科学计数法的合法形式:考试口诀:e前e后必有数,e后必为整数。

如:2.333e-1 就是合法的,且数据是2.333×10-1。

15. 字符常量:单引号:‘’注意:转义字符P260

1)字符数据的合法形式:

'1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。

'0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。

一般考试表示单个字符错误的形式:'65' "1"

大写字母和小写字母转换的方法:'A'+32='a' 相互之间一般是相差32。2)转义字符:

转义字符分为一般转义字符、八进制转义字符、十六进制转义字符。

一般转义字符:背诵\0、 \n、 \’、 \”、 \\。

八进制转义字符:‘\141’ 是合法的,前导的0是不能写的。

十六进制转义字符:’\x6d’ 才是合法的,前导的0不能写,并且x是小写。3)字符型和整数是近亲:两个具有很大的相似之处

char a = 65 ;

printf(“%c”, a); 得到的输出结果:a

printf(“%d”, a);得到的输出结果:65

16. 字符串常量:双引号“”

注意:有效长度和存储长度。

17. 变量:作用是存储数据,变量名必须是合法的标识符,变量定义时必须指明类型。变量参与运算时必须有确定的值,包括作函数的实参。

18.表达式:用于运算。核心:表达式一定有数值!常考:优先级和结合性

(1)算术表达式:+,-,*,/,%

考试一定要注意:“/” 两边都是整型的话,结果就是一个整型。 3/2的结果就是1.

“/” 如果有一边是小数,那么结果就是小数。 3/2.0的结果就是0.5

“%”符号请一定要注意是余数,考试最容易算成了除数。

“%”符号两边要求是整数。不是整数就错了。

(2)赋值表达式:表达式数值是最左边的变量的值(赋值的左边只能是一个变量)。

如a=b=5;该表达式为5。

注意:int x=y=10;错啦,定义时,不可以连续赋值。

int x,y; x=y=10; 对滴,定义完成后,可以连续赋值。(3)复合的赋值表达式:+=、-=、*=、/=、%= 等的含义。

int a=2; a*=2+3;运行完成后,a的值是10。

一定要注意,首先要在2+3的上面打上括号。变成(2+3)再运算。

(4)自增、自减表达式:

自加、自减表达式:假设a=5,++a(表达式的值为6), a++(表达式的值为5);考试口诀:++在前先加后用,++在后先用后加。

(5)逗号表达式:

优先级别最低。表达式的数值是逗号最右边的那个表达式的数值。

(2,3,4)的表达式的数值就是4。

z=(2,3,4)(整个是赋值表达式) 这个时候z的值为4。(有点难度哦!) z= 2,3,4 (整个是逗号表达式)这个时候z的值为2。

(6)关系表达式:

a)表达式的数值只能为1(表示为真),或0(表示假)。

如 9>8这个关系表达式是真的,所以9>8这个表达式的数值就是1。

如 7<6这个关系表达式是假的,所以7<6这个表达式的数值就是0

b)考试最容易错的:就是int x=1,y=0,z=2;

x

带入为1<0<2,从数学的角度出发肯定是错的,但是如果是C语言那么就是

正确的!因为要1<0为假得到0,表达式就变成了0<2那么运算结果就是1,成为了真的了!

c)等号和赋值的区别!一定记住“=”就是赋值,“==”才是等号。

(7)逻辑表达式:共有&& || !三种逻辑运算符号。

核心:表达式的数值只能为1(表示为真),或0(表示假)。

a) !>&&>|| 优先的级别。

b) 注意短路现象。如:x && y 中x若为0,不计算y; x || y中若x为非零值,则也不计算y。

c) 表示 x 小于0大于10的方法:0

(8)位运算的考查:

总的处理方法:(先把十进制变成二进制,计算出结果后再变成十进制)。

例1:char a = 6, b;

b = a<<2; 这种题目的计算是先要把a的十进制6化成二进制,再做位运算。

例2:一定要记住,异或的位运算符号” ^ ”。

0 异或 1得到1。 0 异或 0得到0。两个女的生不出来。

考试记忆方法:一男(1)一女(0)才可以生个小孩(1)。

例3:在没有舍去数据的时候,<<左移一位表示乘以2;>>右移一位表示除以2。

(9)补充:

a)空语句不可以随意执行,会导致逻辑错误。

b)注释:注释不是C语言,不占运行时间,没有分号。不可以嵌套!

c)强制类型转换:

一定是(int)a 不是 int(a),注意类型上一定有括号的。

注意(int)(a+b)和(int)a+b 的区别。前是把a+b转型,后是把a 转型再加b。

d)三种取整丢小数的情况:int a =1.6; (int)a; 1/2; 3/2;19.数据输出函数printf

1)使用printf和scanf函数时,要在最前面加上#include

2)printf可以只有一个参数,也可以有多个参数。

3)printf(“ 第一部分”,第二部分);把第二部分的变量、表达式、常量以第一部分的形式展现出来!

4)printf(“a=%d,b=%d”,12, 34)考试重点!

一定要记住是将12和34以第一部分的形式现在在终端也就是黑色的屏幕上。考试核心为:一模一样。在黑色屏幕上面显示为 a=12,b=34

printf(“a=%d,\n b=%d”,12, 34)那么输出的结果就是:a=12,

b=34

5) int x=017;一定要弄清楚为什么是这个结果!过程很重要

printf(“%d”, x); 15

printf(“%o”, x); 17

printf(“%#o”,x); 017

printf(“%x”, x); 11

printf(“%#x”,x); 0x11

6)一定要记住的

格式说明表示内容格式说明表示内容

%d 整型 int %c 字符 char

%ld 长整型 long int %s 字符串

%f 浮点型 float double %lf double

%o 八进制 %#o 带前导的八进制

%x 十六进制 %#x 带前导的十六进制 %5d %% 输出一个百分号

举例说明:

printf(“%2d”,123 );第二部分有三位,大于指定的两位,原样输出123 printf(“%5d”,123 );第二部分有三位,小于指定的五位,左边补两个空格 123

printf(“%10f”,1.25 );小数要求补足6位的,没有六位的补0,。结果为1.250000

printf(“%5.3f”,125 );小数三位,整个五位,结果为1.250(小数点算一位)

printf(“%3.1f”,1.25 );小数一位,整个三位,结果为1.3

20.数据输入

1)scanf(“a=%d,b=%d”,&a,&b)考试超级重点!

一定要记住是以第一部分的格式在终端输入数据。考试核心为:一模一样。

在黑色屏幕上面输入的为 a=12,b=34才可以把12和34正确给a和b 。有一点不同也不行。

2)scanf(“%d,%d”,x,y);这种写法绝对错误,scanf的第二个部分一定要是地址!

scanf(“%d,%d”,&x,&y);注意写成这样才可以!

3)特别注意指针在scanf的考察

例如: int x=2;int *p=&x;

scanf(“%d”,x);错误 scanf(“%d”,p);正确

scanf(“%d”,&p);错误 scanf(“%d”,*p)错误

4)指定输入的长度

终端输入:1234567

scanf(“%2d%4d%d”,&x,&y,&z);x为12,y为3456,z为7

终端输入:1 234567 由于1和2中间有空格,所以只有1位给x

scanf(“%2d%4d%d”,&x,&y,&z);x为1,y为2345,z为67

5)补充说明:

a)scanf函数的格式考察:

注意该函数的第二个部分是&a 这样的地址,不是a;

scanf(“%d%d%*d%d”,&a,&b,&c); 跳过输入的第三个数据。

b)putchar ,getchar 函数的考查:

char a = getchar() 是没有参数的,从键盘得到你输入的一个字符给变量a。

putchar(‘y’)把字符y输出到屏幕中。

c)如何实现两个变量x ,y中数值的互换(要求背下来)

不可以把 x=y ,y=x; 要用中间变量 t=x;x=y;y=t;

21. if 语句

特别要注意:C语言中是用非0表示逻辑真的,用0表示逻辑假的。

C语言有构造类型,没有逻辑类型。

if只管后面一个语句,要管多个,请用大括号!

注意以下规则:

1) else 是与最接近的if且没有else的语句匹配。

2) if(a

if(a

3)单独的if语句:if(a

标准的if语句:if(a

嵌套的if语句:if(a

if(b>c)printf(“ok!”);

多选一的if语句if(a==t)printf(“a”);

else if(b==t)printf(“b”);

else if(c==t)prin tf(“c”);

else pritnf(“d”);

通过习题,要熟悉以上几种if语句!

4)条件表达式:表达式1 ?表达式2 :表达式3

a)考试口诀:真前假后。

b)注意是当表达式1的数值是非0时,才采用表达式2的数值做为整个运算结果,当表达式1的数值为0时,就用表达式3的数值做为整个的结果。

c) int a=1,b=2,c=3,d=4,e=5;

k=a>b?c:d>e?d:e;求k的数值是多少?答案为5

5)switch语句:

a) 执行的流程一定要弄懂!上课时候详细的过程讲了,请自己一定弄懂!

b)注意有break 和没有break的差别,书上的两个例子,没有break时候,只要有一个case匹配了,剩下的都要执行,有break则是直接跳出了swiche语句。

c) switch只可以和break一起用,不可以和continue用。

d) switch(x) x:是整型常量,字符型常量,枚举型数据。

{case 1: …. 不可以是变量。

case 2: ….

}

22. 三种循环结构:

a)for(); while(); do- while()三种。

b)for循环当中必须是两个分号,千万不要忘记。

c)写程序的时候一定要注意,循环一定要有结束的条件,否则成了死循环。

d) do-while()循环的最后一个while();的分号一定不能够丢。(当心上机改错),do-while循环是至少执行一次循环。

e) break 和 continue的差别

break:是打破的意思,(破了整个循环)所以看见break就退出整个一层循环。continue:是继续的意思,(继续循环运算),但是要结束本次循环,就是循环体内剩下的语句不再执行,跳到循环开始,然后判断循环条件,进行新一轮的循环。

f)嵌套循环

就是有循环里面还有循环,这种比较复杂,要一层一层一步一步耐心的计算,一般记住两层是处理二维数组的。

g) while((c=getchar())!=’\n’)和 while(c=getchar() !=’\n’)的差别

先看a = 3 != 2 和(a=3)!=2 的区别:

(!=号的级别高于=号所以第一个先计算 3!=2)第一个a的数值是得到的1;第二个a的数值是3。

h)每行输出十个的写法:

for(i=0;i<=100;i++)

{ printf(“%d”,i);

if((i+1)%10==0)printf(“\n”);

//如果i是从1开始的话,就是if(i%5==0)printf(“\n”);

}

i)如何整除一个数: i%5==0 表示整除5

i%2==0表示整除2,同时表示是偶数!

j)输入123,输出321逆序输出数据

int a=123;

while(i!=0){

printf(“%d”,i%10);

i=i/10; }

k) for只管后面一个语句:

int i=3;

for(i=3;i<6;i++);

printf(“#”);

请问最终打印几个#号?答案为一个!

9)不停的输入,直到输入# 停止输入!不停的输入,直到输入$停

止输入!

while( (x=getchar())!=’ # ’ ) while( (x=getchar())!=’ $ ’ )

23. 函数

1)函数:是具有一定功能的一个程序块,是C语言的基本组成单位。

2)函数不可以嵌套定义。但是可以嵌套调用。

3)函数名缺省返回值类型,默认为 int。

4)C语言由函数组成,但有且仅有一个main函数!是程序运行的开始!

5)如何判断a是否为素数:背诵这个程序!

void isprime( int a )

{ for(i=2;i

if(a%i==0) printf(“不是素数!”);

printf(“是素数!”);//若需要返回值,则把printf语句换成return

语句。

}

6)如何求阶层:n! 背诵这个程序!

int fun(int n)

{ int p=1;

for(i=1;i<=n;i++) p=p*i;

return p;

}

7)函数的参数可以是常量,变量,表达式,甚至是函数调用。

int add(int x,int y){return x+y;}

main()

{ int sum;

sum=add(add(7,8),9);请问sum的结果是多少?结果为24

}

8)一定要注意参数之间的传递

实参和形参之间传数值,和传地址的差别。(考试的重点)

传数值的话,形参的变化不会改变实参的变化。

传地址的话,形参的变化就会有可能改变实参的变化。

9)函数声明的考查:

一定要有:函数名,函数的返回类型,函数的参数类型。不一定要有:形参的名称。

int fun(int a[] , int b[])

{

…………..

}

已经知道函数是这样。这个函数的正确的函数声明怎么写?

int fun(int *a , int *b);这里是函数声明的写法,注意数组就是指针

int fun(int a[] , int b[]);这种写法也是正确的

int fun(int b[] , int c[]);这种写法也是正确的,参数的名称可以随便写

int fun(int * , int *);这种写法也是正确的,参数的名称可以不写

10)要求掌握的库函数:

a)库函数是已经写好了函数,放在仓库中,我们只需要如何去使用就可以了!

b)以下这些库函数经常考到,所以要背诵下来:abs()、 sqrt()、fabs()、pow()、

strcmp()、strcpy()、strlen()。

24.指针:指针变量的本质是用来放地址,而一般的变量是放数值的。

1)定义:int *p;后,表达式中 *p和p的差别:简单说*p是数值,p是地址!

*p可以当做变量来用;*的作用是取后面地址p里面的数值

p是当作地址来使用。可以用在scanf函数中:scanf(“%d”,p);

2) *p++ 和(*p)++的之间的差别:改错题目中很重要!考试超级重点

*p++是地址会变化。口诀:取当前值,然后再移动地址!

(*p)++ 是数值会要变化。口诀:取当前值,然后再使数值增加1。例题:int *p,a[]={1,3,5,7,9};

p=a;

请问*p++和(*p)++的数值分别为多少?

*p++:这个本身的数值为1。由于是地址会增加一,所以指针指向数值3了。

(*p)++ 这个本身的数值为1。由于有个++表示数值会增加,指针不移动,但数值1由于自加了一次变成了2。

3)三名主义:(考试的重点)

数组名:表示第一个元素的地址。数组名不可以自加,他是地址常量名。(考了很多次)

函数名:表示该函数的入口地址。

字符串常量名:表示第一个字符的地址。

4)移动指针(经常加入到考试中其他题目综合考试)

char *s=“meikanshu”

while(*s){printf(“%c”,*s);s++;}

这个s首先会指向第一个字母m然后通过循环会一次打印出一个字符,s++是地址移动,打印了一个字母后,就会移动到下一个字母!

5)指针变量两种初始化(一定要看懂)

方法一:int a=2,*p=&a;(定义的同时初始化)

方法二:int a=2,*p; (定义之后初始化)

p=&a;

6)传数值和传地址(每年必考好多题目)

void fun(int a,int b) void fun(int *a,int *b){ int t ; { int t ;

t=a;a=b;b=t; t=*a;*a=*b;*b=t;} }

main() main()

{ int x=1,y=3, { int x=1,y=3,

fun(x,y); fun(&x,&y)

printf(“%d,%d”,x,y); printf(“%d,%d”,x,y);

} }

这个题目答案是1和3。这个题目的答案就是3和1。传数值,fun是用变量接受,所以fun中传地址,fun用指针接受!这个时候fun

的交换不会影响到main中的x和y 。中的交换,就会影响到main中的x和y。

传数值,形参的变化不会影响实参。传地址形参的变化绝大多数会影响到实参!

7)函数返回值是地址,一定注意这个*号

int *fun(int *a,int *b)可以发现函数前面有个*,这个就说明函数运算结果是地址

{ if(*a>*b)return a; return a 可以知道返回的是a地址。

else return b;

}

main()

{ int x=7,y=8,*max;

max = fun(&x,&y);由于fun(&x,&y)的运算结果是地址,所以用max来接收。

printf(“%d”, *max);

}

8)考试重要的话语:

指针变量是存放地址的。并且指向哪个就等价哪个,所有出现*p的地方都可以用它等价的代替。例如:int a=2,*p=&a;

*p=*p+2;

(由于*p指向变量a,所以指向哪个就等价哪个,这里*p等价于a,可以相当于是a=a+2)

25. 数组:存放的类型是一致的。多个数组元素的地址是连续的。

1)一维数组的初始化:

int a[5]={1,2,3,4,5}; 合法

int a[5]={1,2,3, }; 合法

int a[]={1,2,3,4,5}; 合法,

int a[5]={1,2,3,4,5,6}; 不合法,赋值的个数多于数组的个数了

2)一维数组的定义;

int a[5];注意这个地方有一个重要考点,定义时数组的个数不是变量一定是常量。

int a[5] ;合法,最正常的数组

int a[1+1] ;合法,个数是常量2,是个算术表达式

int a[1/2+4] ;合法,同样是算术表达式

int x=5,int a[x] ;不合法,因为个数是x,是个变量,非法的,

#define N 5

int a[N] ;合法,define 后的的N是符号常量,只是长得像变量

3)二维数组的初始化

int a[2][3]={1,2,3,4,5,6}; 合法,很标准的二维的赋值。

int a[2][3]={1,2,3,4,5 }; 合法,后面一个默认为0。

int a[2][3]={{1,2,3} ,{4,5,6}}; 合法,每行三个。

int a[2][3]={{1,2},{3,4,5}}; 合法,第一行最后一个默认为0。int a[2][3]={1,2,3,4,5,6,7}; 不合法,赋值的个数多余数组的个数了。

int a[][3]={1,2,3,4,5,6}; 不合法,不可以缺省行的个数。int a[2][]={1,2,3,4,5,6}; 合法,可以缺省列的个数。

补充:

1)一维数组的重要概念:

对a[10]这个数组的讨论。

a) a表示数组名,是第一个元素的地址,也就是元素a[0]的地址。(等价于&a)

b) a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。

c) a是一维数组名,所以它是列指针,也就是说a+1是跳一列。

对a[3][3]的讨论。

a) a表示数组名,是第一个元素的地址,也就是元素a[0][0]的地址。

b) a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。

c) a是二维数组名,所以它是行指针,也就是说a+1是跳一行。

d) a[0]、a[1]、a[2]也都是地址常量,不可以对它进行赋值操作,同时它们都是

列指针,a[0]+1,a[1]+1,a[2]+1都是跳一列。

26. 其他知识点:

1)字符串的 strlen() 和 strcat()和strcmp()和strcpy()的使用方法一定要记住。他们的参数都是地址。其中strcpy()和strcmp()有两个参数。2)strlen 和 sizeof的区别也是考试的重点;

3)#define f(x)(x)*(x)和 #define f(x) x*x 之间的差别。一定

要好好的注意这写容易错的地方,替换的时候有括号和没有括号是很大的区别。

4)int *p ;

p = (int *)malloc (4);

p = (int *)malloc (sizeof (int ));以上两个等价

当心填空题目,malloc 的返回类型是 void *

6)函数的递归调用一定要记得有结束的条件,并且要会算简单的递归题目。

7)结构体要掌握最简单的,而且一定要知道如何引用结构体中的各个变量。

8)scanf 和 gets 的数据:

如果输入的是 good good study !

那么scanf(“%s”,a); 只会接收 good. 考点:不可以接收空格。

gets(a); 会接收 good good study! 考点:可以接收空格。

9)“文件包含”的考查点:

no1.c no2.c

这里一个C 语言程序是有两个文件组成,分别是no1.c , no2.c 。那么no1.c 中最开始有个#include”no2.c”,表示把第二个文件的内容给包含过来,那么

no1.c 中调用add()函数的时候就可以了把数值传到no2.c 中的被调用函数add()了。

一个文件必须要有main 函数。 这句话错了。 例如:no2.c 就没有。

被包含的文件一定是以.h 结束的。 这句话错了。例如:no1.c 中就是#include”no2.c”以.c 结尾的。

10)指针迷惑的考点:

char ch[]=”iamhandsome”;

char *p=ch;

问你 *(p+2)和 *p+2的结果是多少?

‘m’ ‘k’ 结果是这两个。

11)数组中放数组一定要看懂:

int a[8]={1,2,3,4,4,3,2,2};

int b[5]={0};

b[a[3]]++ 这个写法要看懂,结果要知道是什么?b[4]++,本身是0,运行

完后,b[4]为1了。

15)字符串的赋值: C语言中没有字符串变量,所以用数组和指针存放字符串:

a)char ch[10]={“abcdefgh”}; 对

b)char ch[10]=“abcdefgh”; 对

c)char ch[10]={‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,‘\0’}; 对

d)ch ar *p=“abcdefgh”; 对

e)char *p; p=“abcdefgh”;对

f)char ch[10]; ch=“abcdefgh”; 错了!数组名不可以赋值!

g) char *p={“abcdefgh”}; 错了!不能够出现大括号!

16)typedef 是取别名,不会产生新的类型,它同时也是关键字

考点一:typedef int qq 那么 int x 就可以写成 qq x

考点二:typedef int *qq 那么 int *x就可以写成 qq x

17)static 考点是一定会考的!复习相关的习题。

static int x;默认值为0。

int x:默认值为不定值。

江苏大学大一c语言期末复习题汇总

选择题1.下列字符序列中,不可用作C语言标识符的是()。 A.abc123 B.C._123_ D._ok 2.请选出可用作C语言用户标识符的一组标识符()。 A.void B.a3_b3 C.For D.2a define _123 -abc DO WORD IF Case sizeof 3.不属于C语言关键字的是()。 A.int B.break C.while D.character 4.以下不能定义为用户标示符的是()。 A.scanf B.Void C._3com_ D.int 5.C语言程序的基本单位是()。 A.程序行B.语句C.函数D.字符 6.以下说法中正确的是()。 A.C语言程序总是从第一个定义的函数开始执行 B.在C语言程序中,要调用的函数必须在main( )函数中定义 C.C语言程序总是从main( )函数开始执行 D.C语言程序中的main( )函数必须放在程序的开始部分 7.以下选项中,合法的用户标识符是()。 A.long B._2abc C.3dmax D. 8.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示 的字符常量’\101’是()。 A.字符A B.字符a C.字符c D.非法的常量 9.以下选项中,正确的字符常量是()。 A.”F”B.’\\’’C.’W’D.’’ 10.下列变量定义中合法的是 A.short _a=; B.double b=1+; C.long do=0xfdaL; D.float 2_and=1-e-3; 11.为了避免嵌套的if-else语句的二义性,C语言规定else总是与()组成配对关系。 A.缩排位置相同的if B.在其之前未配对的if C.在其之前未配对的最近的if D.同一行上的if 12.下列运算符中优先级最高的是()。 A.< B.&& C.+ D.!= 13.判断char型变量s是否为小写字母的正确表达式是()。 A.’a’ <= s<=’z’B.(s>=’a’) & (s<=’z’) C.(s>=’a’) && (s<=’z’) D.(’a’<=s) and (’z’>=s)

大学c语言必背基础知识_c语言基础知识大全

大学c语言必背基础知识_c语言基础知识大全 对于刚学计算机编程的同学来说,没一个编程知识都觉得很重要,其实不是的。下面小编为大家整理了相关大学c语言必背基础知识,希望大家喜欢。 大学c语言必背基础知识举例说明: printf(“-”,123 ); 第二部分有三位,大于指定的两位,原样输出123 printf(“]”,123 ); 第二部分有三位,小于指定的五位,左边补两个空格123 printf(“f”,1.25 ); 小数要求补足6位的,没有六位的补0,。结果为1.250000 printf(“%5.3f”,125 ); 小数三位,整个五位,结果为1.250(小数点算一位) printf(“%3.1f”,1.25 );小数一位,整个三位,结果为1.3(要进行四舍五入) 第三节数据输入1、scanf(“a=%d,b=%d”,">2、scanf(“%d,%d”,x,y);这种写法绝对错误,scanf的第二个部分一定要是地址!scanf(“%d,%d”,注意写成这样才可以! 3、特别注意指针在scanf的考察例如:int x=2;int *p=scanf(“%d”,x); 错误scanf(“%d”,p);正确scanf(“%d”,错误scanf(“%d”,*p)错误 4、指定输入的长度(考试重点)终端输入:1234567scanf(“-M%d”,x为12,y为3456,z为7终端输入:1 234567 由于1和2中间有空格,所以只有1位给xscanf(“-M%d”,x 为1,y为2345,z为67 5、字符和整型是近亲:int x=97;printf(“%d”,x); 结果为97printf(“%c”,x); 结果为a 6、输入时候字符和整数的区别(考试超级重点) scanf(“%d”,这个时候输入1,特别注意表示的是整数1 scanf(“%c”,这个时候输入1,特别注意表示的是字符‘1’ASCII为整数48。 补充说明: 1)scanf函数的格式考察: 注意该函数的第二个部分是scanf(“%d%d%*d%d”,跳过输入的第三个数据。 2)putchar ,getchar 函数的考查:

大一C语言期末考试题

大一C语言期末考试题 悬赏分:40 |解决时间:2010-6-29 14:28 |提问者:345387547 1. 数组int a[3][5]; 共定义了______15__个元素。 2. 有float f= 3.1415927; 则printf(“%5.4f”, f );输出的结果是___3.1416__。 3. 下面程序的功能是:输出100以内(不包含100)能被3整除且个位数为6的所有整数,请填空。 main( ) { int i; for(i=1; __i<100 ___; i++) if (_(i%3==0)&&(i%10==6)_) printf("%d", i); } 4. 设有“int x=2, y”说明,则逗号表达式“y=x+5,x+y”的值是____7____ 5. 以下是使用指针,进行字符串复制的程序,请填空。 main() { char a[]= “Tsinghua University”, b[30], *p1,*p2; p1=a; p2=b; for(; *p1!= __'\0'____; p1++, p2++) *p2 _=_*p1; *p2= ___'\0'______; printf(“string a is:%s\n”,a); printf(“string b is:%s\n”,b); } 6. 下面程序用冒泡法对数组a进行降序排序,请填空。 main() { int a[5]={4,7,2,5,1}; int i,j,m; for(i=0;i<4;i++) for(j=0;j<____4____;j++) if( a[j]

大学c语言考试基础知识复习

C 语言最重要的知识点复习资料总体上必须清楚的: 1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。 2)读程序都要从()入口, 然后从最上面顺序往下读(碰到循环做循环, 碰到选择做选择),有且只有一个函数。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)是位是指为0 或者1 。是指字节, 一个字节= 八个位. 概念常考到的: 1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以数值存放在文本文件中。 2、 3.1415926; 这个写法是错误的,一定不能出现分号。 3、每个C语言程序中函数是有且只有一个。 4、在函数中不可以再定义函数。 5、算法:可以没有输入,但是一定要有输出。 6、可用于循环结构和语句。 7、逗号运算符的级别最低,赋值的级别倒数第二。 第一章 C 语言的基础知识 第一节、对C语言的基础认识 1、C语言编写的程序称为源程序,又称为编译单位。 2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。 3、一个C语言程序有且只有一个函数,是程序运行的起点。第二节、熟悉 1、是软件,用来运行写的C语言程序。 2、每个C 语言程序写完后,都是先编译,后链接,最后运行。()这个过程中注意和文件时无法运行的,只有文件才可以运行。(常考!) 第三节、标识符 1、标识符(必考内容):合法的要求是由字母,数字,下划线组成。有其它元 素就错了。并且第一个必须为字母或则是下划线。第一个为数字就错了 2、标识符分为关键字、预定义标识符、用户标识符。 关键字:不可以作为用户标识符号。都不是关键字。迷惑你的地方是 可以做为用户标识符。因为中的第一个字母大写了,所以不是关键字。 预定义标识符:背诵。记住预定义标识符可以做为用户标识符。 用户标识符:基本上每年都考,详细请见书上习题。 第四节:进制的转换 十进制转换成二进制、八进制、十六进制。二进制、八进制、十六进制转换 成十进制。 第五节:整数与实数 1)C 语言只有八、十、十六进制,没有二进制。但是运行时候,所有的进制都要转换成二进制来进行处理。(考过两次) a 、C语言中的八进制规定要以0开头。018的数值是非法的,八进制是没有 8 的,逢8 进1。 b 、C语言中的十六进制规定要以Ox开头。 2)小数的合法写法:C语言小数点两边有一个是零的话,可以不用写。

c语言期中考试试题及答案

《C语言程序设计》期中考试试卷 课程编号:03402513试卷类型:A卷考试形式:笔试考试日期: 注意事项:1.请将试卷最后一页的答题纸撕下,将答案填写在其中;2.交卷时请确认答题纸是否按要求写好姓名等信息并与试题一起上交;3.不准携带任何书籍、资料、纸张等。4.草稿纸用试卷的背面。 一、单项选择题(1空1分,共20分) 1、C语言程序的基本结构是(【1】) 。 【1】 A) 函数 B) 语句 C) 字符 D) 程序行 2、一个C程序的执行是(【2】) 。 【2】A) 从本程序的主函数开始,到本程序的主函数结束 B)从本程序的第一个函数开始,到本程序的最后一个函数结束 C) 从本程序的主函数开始,到本程序的最后一个函数结束 D)从本程序的第一个函数开始,到本程序的主函数结束 3、下列四个叙述中,错误的是(【3】) 。 【3】 A) 一个C源程序必须有且只能有一个主函数 B) 一个C源程序可以含一个或多个子函数 C) 在C源程序中注释说明必须位于语句之后 D) C源程序的基本结构是函数 4、下面不属于C语言保留字的是(【4】) 。 【4】 A) short B) ELSE C) extern D) for 5、下列四个叙述中,正确的是(【5】) 。 【5】 A) 库函数也是C语言本身的组成部分 B) C语言中的输入输出操作是由相应语句完成的 C) 库函数是C编译系统提供的功能函数 D) 标题文件(头文件)可以在程序的函数内部调用 6、下列四组数据类型中,C语言允许的一组是(【6】)。 【6】 A) 整型、实型、逻辑型 B) 整型、实型、字符型 C) 整型、双精度型、布尔型 D) 整型、实型、复型 7、在C语言中不同数据类型的的长度是(【7】)。 【7】 A) 固定的 B) 由用户自己定义的 C) 任意的 D) 与机器字长有关

大学C语言期末考试习题集(带详解答案)

一、单项选择题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从 C开始执行。 A) 程序中第一条可执行语句 B) 程序中第一个函数 C) 程序中的main函数 D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B)。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 5~8题为相同类型题 考点:标识符的命名规则 (1)只能由字母、数字、下划线构成 (2)数字不能作为标识符的开头 (3)关键字不能作为标识符 选项A中的“-”,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是( B)。 A)3ax B)x C)case D)-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C)。 A) %x B) a+b C) a123 D) 123 选项A中的“%”,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai

贵州大学2012-2013C语言考试A卷 附 重要考点复习资料

贵州大学2012-20103学年第一学期考试试卷 A C语言程序设计 满分100分,考试时间为120分钟。 一、单项选择题(选出一个正确答案,每小题2分,共20分) 1.完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为( ) A.连接、编译 B. 连接、运行 C. 编译、运行 D. 编译、连接 2.下列说法正确的是() A.一个c语言程序并非总是从主函数位置开始执行的 B.一个c语言程序有且只有一个主函数 C.函数可以嵌套定义,不可以嵌套调用 D.程序函数的位置不可以任意 3.下面是合法C语言标识符的是() A. 2A_K; B. _M+N; C. –M3; D. AC_2; 4.下列格式符中,可以用于控制字符输出的是( ) A. %d B. %f C. %o D. %c 5.设x、y、z和k都是int型变量,则执行表达式x=(y=4,z=16,k=30)后,x的值是( ) A. 4; B. 16; C. 30; D. 50; 6.执行语句“for(i=1,s=0;i<=5;i++) s+=i;”后,变量s、i的当前值是( ) A. 10,5 B. 15,6 C. 15,5 D. 10,6 7.若有定义 int x,*p;,则以下正确的赋值表达式是( ) A. p=x; B. p=&x; C. *p=&x; D. *p=*x; 8.以下对结构体类型变量的定义中,不正确的是( ) A. typedef struct aa B. #define AA struct aa { int n; AA { int n; float m; float m; }AA; } stud; AA stud; C. struct D. struct { int n; { int n; float m; float m; }aa; }stud; struct aa stud; 9.有如下函数调用语句: func(rec1,rec2+rec3,(rec4+rec5)); 函数调用语句中,含有的实参个数是( ) A. 3 B. 4 C. 5 D. 以上均不是 10.对于以下宏定义: #define SQ(x) x*x #define QQ(x,y) SQ(x)- SQ(y) 宏调用QQ(2*3,2+3)执行后值为( ) A.25 B.11 C.43 D.以上均不是

大学c语言学习心得感悟

大学c语言学习心得感悟 通过这次大学c语言计算机实习学习,我们了解了一些关于c 语言的知识,理解巩固了我们c语言的理论知识,着对我们将来到社会工作将会有莫大的帮助。下面是WTTWTT为大家收集整理的大学c语言学习心得感悟,欢迎大家阅读。 大学c语言学习心得感悟篇1 林林总总的计算机语言,林林总总的计算机技术,林林总总的计算机书籍让我们初入计算机的菜鸟一次就吓的没有勇气。迷茫和徘徊让我们丧失了时间和信心。没有诀窍吗?有的,看你怎么把握了,接下来我就以C语言为例子,讲一下有关学习的方法和技巧,同时也分享一下我学C的感想。 许多人第一次接触C语言都会觉得C语言难懂和不容易使用,其实就我个人的看法,C语言其实是很基础的汇编语言,除了一些必须要记忆的关键字、语法和库函数,其余的都是需要靠自己的逻辑思维通过这些关键字、语法和库函数来组织或构成一个完整的函数,所以C语言大多数的学习时间都是在锻炼我们的抽象逻辑思维能力。只有当你具有了抽象逻辑思维能力和弄清楚了关键字、语法和库函数的相关知识后,编写C语言就不是难事了。 通过C语言初步的学习后都很容易弄懂关键字、语法和库函数的相关知识,但是由于大部分人因为以前没有接触过电脑或电

脑语言的相关知识所以缺乏抽象逻辑思维能力,不知道如何将所学到C语言的知识如何组织和构成一个完整的函数,那么如何来有效的锻炼自己的抽象逻辑思维能力呢? 在这里是我个人的一套自学心得,通过学习后所掌握的知识使用上课老师所提到的案例或找一段简单的完整的案例,然后将案例读懂,也就是把它转换成我们日常所能接受的自然语言(在这里不妨把你所能理解的自然语言写下来)。例如下面这段代码是手工输入两个整数数字并计算两个数字之间从最小的数字开始到最大的数结束其中所有奇数相加的和: void main { 首先INT是表示整数形数据的定义,那么接下来有两个未知的整数和一个已知的整数0;这里出现的3个整数数字用C语言里的变量来替代它们,这时第一个数字就用取名为NUM1的变量,第二个数字就用取名为NUM2的变量,第三个数字就用取名为X的变量并且用赋值符号来为它赋予0这个值。 int num1,num2,x=0; 由于知道了有两个未知的整数,所以要通过键盘输入使这两个未知的整数变成已知的整数并且储存在前面所提到的变量中。 scanf("%d%d ",&;num1,&;num2) ; 得到数字后下面就开始进行一系列的运算和判断,如果NUM1小于NUM2的话最小的数字就是NUM1最大的数字就是NUM2,如果

大一C语言期末考试试题

6.以下程序的输出结果为(D)。 main( ) { char c; int i; for(i=65;i<68;i++) { c=i+32; switch(c) { case ‘a’:printf("%c,",c);break; case ‘b’:case ‘e’:printf("ok,"); default: printf("end"); } } } A a,ok,end B a,ok,endend C a,ok,end,end D a,ok,ok 9.以下程序的输出结果为(B)。 #define A 3 #define B(a) (A+1)*a main() { int x; x=3*A+B(7); printf("x=%d\n",x); } A x=93 B x=37 C x=60 D x=90 三写出下列程序的运行结果(10分,每小题2分) 1.main( ) { char c1=‘A’,c2=‘\144’,c3=‘\x44’,c=0xf5,x=13,a; int i=0122,j=0xa4; printf(“c1=%c,c4=%c\tc5=%c\n”,c1,c2,c3); printf(“%d,%d\n”,i,j); i=-34; j=20; printf(“%d,%d,%d\n”,i%j,i&j<<2,sizeof(j)); printf(“c=%d\n”,c|x); a=c^x<<2;

printf(“a=%d\n”,a); } 2.main() { int x,y=1,z=10; if(y!=0) x=5; printf(“x=%d\t”,x); x=1; if(z<0) if(y>0) x=3; else x=5; printf(“x=%d\n”,x); if(z=y<0) x=3; else if(y==0) x=5; else x=7; printf(“x=%d\t”,x); printf(“z=%d\n”,z); } 3.main( ) { char s[20]=“I like it.”,t[20]=“Are you?”,c[20]; int i=0; while(s[++i]!=‘\0’) t[i]=s[i]; t[i]=0; printf(“string s:%s\n”,s); printf(“string t:%s\n”,t); } 4.int i=5; main( ) { int i=3; { int i=10; i++; printf(“%d\n”,i);

江苏大学大一c语言期末复习题汇总

选择题 1.下列字符序列中,不可用作C语言标识符的是()。 A.abc123 B.no.1 C._123_ D._ok 2.请选出可用作C语言用户标识符的一组标识符()。 A.void B.a3_b3 C.For D.2a define _123 -abc DO WORD IF Case sizeof 3.不属于C语言关键字的是()。 A.int B.break C.while D.character 4.以下不能定义为用户标示符的是()。 A.scanf B.V oid C._3com_ D.int 5.C语言程序的基本单位是()。 A.程序行B.语句C.函数D.字符 6.以下说法中正确的是()。 A.C语言程序总是从第一个定义的函数开始执行 B.在C语言程序中,要调用的函数必须在main( )函数中定义 C.C语言程序总是从main( )函数开始执行 D.C语言程序中的main( )函数必须放在程序的开始部分 7.以下选项中,合法的用户标识符是()。 A.long B._2abc C.3dmax D.A.dat 8.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示 的字符常量’\101’是()。 A.字符A B.字符a C.字符c D.非法的常量 9.以下选项中,正确的字符常量是()。 A.”F”B.’\\’’C.’W’D.’’ 10.下列变量定义中合法的是 A.short _a=1-.le-1; B.double b=1+5e2.5; C.long do=0xfdaL; D.float 2_and=1-e-3; 11.为了避免嵌套的if-else语句的二义性,C语言规定else总是与()组成配对关系。 A.缩排位置相同的if B.在其之前未配对的if C.在其之前未配对的最近的if D.同一行上的if 12.下列运算符中优先级最高的是()。 A.< B.&& C.+ D.!= 13.判断char型变量s是否为小写字母的正确表达式是()。 A.’a’ <= s<=’z’B.(s>=’a’) & (s<=’z’) C.(s>=’a’) && (s<=’z’) D.(’a’<=s) and (’z’>=s) 14.已知x=45, y=’a’, z=0; 则表达式(x>=z && y<’z’ || !y)的值是()。 A.0 B.语法错 C.1 D.“假”

C语言循环知识点总结

循环 特点:在满足特定条件的情况下,反复执行某程序段。 While循环 While循环的格式是这样的:while(条件表达式){语句代码},意思是满足括号内的条件时,执行花括号内的语句代码。或者更专业一点来说,当括号内的条件表达式返回值为真时,执行花括号内的代码,一直到条件表达式的返回值为假时,跳出循环。 While循环很容易出现死循环这种状况,就是因为忘记写了“增量”这个东西。 上面的代码就是少了count++,这个增量,所以,条件表达式一直满足,就一直执行,就造成了死循环。 此时,应该这样改进:

一些例子:

Do-while循环 与while不同的只有一个地方,就是先执行一遍代码,再进行判断。也就是说,不管你while的条件表达式成不成立,返回值为不为假,我都执行一遍循环体的代码。 随机数arc4random() 产生随机数的方法,arc4random()可以产生int范围内的任意一个随机数,包括有正数和负数,为什么会出现负数呢?因为,在存储的时候,生成的数的最高位的数字为1,此时,会认为这个1是符号位的负,因此会出现负数。这时,我们应该把这些情况避免掉,在输出之前,用unsigned 来定义一个变量来接收产出的随机数;在输出的过程中,占位符不再用%d,而是用%u来代替。 另一个值得注意的是,随机数产生的时候,数字会很大,而我们在代码过程中,

不需要这么大的数,此时,想要把这个数减小,可以用取余的办法来限制。 在产生一个随机数的时候,可以让它在固定的区间内产生,那么就会用到这个公式: 若是规定在负空间生成随机数,那么就将公式改成: 一些例子:

上海理工大学 c语言复习卷以及答案

参考解答 一、单选题 1. 以下C程序中预处理命令写法正确的是: D 。[知识点:编译预处理命令] A. #include “studio.h” B. #include [stdio.h] C. #include {stdio.h} D. #include “stdio.h” 2.执行下列语句序列后,不可能出现的运行结果是___ C ____。[知识点:开关语句] int n; scanf( "%d", &n); switch ( n ) { case 1: case 2: putchar('X'); case 3: case 4: putchar('Y'); break; default: putchar('Z'); A. 显示:z B. 显示:xy C. 显示:x D. 显示:y 3.设a,b为整型变量, 且二者均不为0, 以下关系表达式中恒成立的是___ C ___。[知识点:运算与数据类型] A. a/b*b/a==1 B. a/b*b==a C. a*b/a==b D. a*b/ a*b ==1 4.设有定义:int x=10,y=20,z=30; 则执行下列语句后的结果是___B____。[知识点:if语句] if ( x>y ) z=x; x=y; y=z; printf("%d,%d,%d",x, y, z ); A. 20,30,20 B. 20,30,30 C. 20,30,10 D. 10,20,30 5.下列程序的输出结果是__ B ____。[知识点:整型常量的表示和自增运算] main() { int a = 011; printf( "%d\n", ++a ); } A. 9

大一c语言期末考试题

大一c语言期末考试题 C语言期末考试试题附答案 一选择题(7分,每小题0.5分) 1.C语言源程序的基本单位是()。 A 过程 B 函数 C 子程序 D 标识符 2.下列程序的输出结果是()。 main( ) { int a=7,b=5; printf("%d\n",b=b/a); } A 5 B 1 C 0 D不确定值 3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是()。 A 7 B 8 C 9 D 2 4.设a为int型变量,执行下列赋值语句后,a的取值分别是()。 a=125.534; a=(int)125.521%4; a=5<<2; A 125,31,1 B 125,1,20 C 125,31,20 D 125.534,2,20 5.设有如下程序段,下面描述中正确的是()。 int k=10; while(k=0) k=k-1; A 循环执行一次B循环是无限循环C循环体语句一次也不执行D循环体语句执行一次 6.以下程序的输出结果为()。 int i; void prt( ) { for(i=5;i<8;i++) printf("%c",'*'); printf("\t"); } main( ) { for(i=5;i<=8;i++) prt( ); } A *** B *** *** *** *** C *** *** D * * * 7.在C语言程序中,以下说法正确的是()。 A函数的定义可以嵌套,但函数的调用不可以嵌套 B函数的定义不可以嵌套,但函数的调用可以嵌套 C函数的定义和函数的调用都不可以嵌套 D函数的定义和函数的调用都可以嵌套 8.以下函数调用语句中含有()个实参。 func((e1,e2),(e3,e4,e5)); A 2 B 3 C 5 D 语法错误 9.以下程序的输出结果为()。 #define ADD(x) x*x main( ) { int a=4,b=6,c=7,d=ADD(a+b)*c;

大一c语言期末试题及参考答案word版本

2004级信息学院《C语言设计》考试试题 一、判断下列语句或程序的对错。 10分√ 1 int x=y=z=’0’; (×) y,z没有定义 2 #include ; (×)不能有分号,#开头的结尾均不能有分号; 3 printf(“%s\n”,”c language”); (√) 4 float a[100]; int *p=a; (×)数据类型不匹配 5 char str[20]; 6 int data[4]={0,1,2,3,4}; (×)五个元素,但是只有四个单元 7 float x=1.45e+310L; (×)数值越界 8 int xyz-1=2; (×) 9 int x=‘\xae’ ; (√) 10 int *p,a[2][3] ; p=a ; (×)数据类型不匹配 二计算下列表达式的值 10分 设 unsigned int a=10,b=17,c=5,d=3; float f ; (1)f=b/c ( 3.0 ) (2)!(a+b)+c-1&&b+c/2 ( 1 ) (3)(a^b)+(c>>1+d) ( 0x1b ) (4)a+=b%=a=b ( 17 ) (5)a=2,b=a*++b ( 2 ) 三程序改错 10分 (1)求两个浮点数的平方和及平方差 #include float calculate (float x,float y,float *sub);添加函数原型声明 main () { float a,b; float add_reasult, sub_result; scanf (“%f,%f”,a,b); add_result=calculate(a,b,&sub_result); printf( “a*a+b*b=%d,a*a-b*b=%d\n”,add_result,sub_result); } float calculate (float x,float y,float *sub) 添加函数类型 { float *temp; 应该直接定义为变量float temp; sub=a*a-b*b ; *sub=a*a-b*b;

苏科大 C语言知识整理

五、思考与实践 一.在()里填写正确答案。 1. 一个C语言编写的程序总是从(main函数)开始执行。 2. 在C语言程序中,用关键字(int )定义基本整型变量,用关键字(float)定义单精度实型变量,用关键字(double)定义双精度实型变量。 3. 通常一个字节包含(8)个二进制位。在一个字节中存放的最大(十进制)整数是(127),最小(十进制)整数是(-128)。 4. 在C语言中,注释部分两侧的分界符号分别为(/*)和(*/)。 5. 用字符串的形式表示China(“China”) 6. 字符串“ab\034\\\x79”的长度为(5)。 7. 若s是int型变量,且s=6,则s%2+(s+1)%2表达式的值为(1) 8. 若a,b,c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a,b,c的值分别为(6)(4)(2)。 9. 若有定义int x=3, y=2; float a=2.5, b=3.5;则表达式 (x+y)%2+(int)a/(int)b的值为(1)。 10. 若x和n均是int型变量,且x的初值为12,n的初值为5,则执行表达式x%=(n%=2)后的值为(0)。 11. 假设所有变量的类型均为整型,则表达式 (a=2,b=5,a++,b++,a+b)的值为(9)。 12. 以下所有变量的类型均为整型,则sum=pad=5; pad=sum++, pad++, ++pad; 后,pad的值为(7)。 13. 已知int a,b=1; 执行语句a=-b++;后a的值为(-1)。 14. 已知int m=5, y=2; 则执行y+=y-=m*=y后y 的值为(16)。 15. 表达式8.0*(1/2)的值为(0.0)。 二.下列程序完成交换两个变量的功能,请填空。 #include void main() {int x,y; x=10;y=15; printf("before swap:x=%d,y=%d\n",x,y); x+=y ;y=x-y ; x=x-y ; printf("after swap:x=%d,y=%d\n",x,y); } 注意:在填写程序中不可修改其它行的程序,包括增加变量定义等。 四、思考与实践 1 在C语言中,关系运算符有() 2 在C语言中,当表达式值为()时表示“假”,当表达式值为()时表示“真”。 3 逻辑运算符优先级从高到低:() 4 计算下面表达式的值。设a=1,b=2,c=3。(设每小题开始时a,b,c均为此值) (1)a = a!=b?b:c (2)a>b?b+1:c+1 (3)(a=4) ? a--:b-- 5 写出满足下面条件的关系或逻辑表达式。 (1)a在区间(3,10)内。 (2)x是3的倍数。 (3)x和y的和大于100且x大于45。 (4)a等于c或b不等于0 (5)a是小写字母 6 计算下面逻辑表达式的值。设a=0,b=1,c=2,d=4。(设每小题开始时a,b,c,d均为此值) (1)a>=b (2)c-b==a (3)c!=d-b (4)b>a && c>b (5)a && d-c (6)!a && b>c (7)(b>a) || cd (10)(a||b) && cd 五、思考与实践 填空题:(每空2分) 1. C语言中的语句可分为5类,即(控制语句)、(函数调

大一上学期C语言期末复习总结和模拟试题带答案

易错点 C语言中易犯的错误 对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误.看着有错的程序,不知该如何改起,一些C编程时常犯的错误,写给各位学员以供参考. ******************************** ******************************** ************************ 1.书写标识符时,忽略了大小写字母的区别. main() { int a=5; printf("%d",A); } 编译程序把a和A认为是两个不同的变量名,而显示出错信息. C认为大写字母和小写字母是两个不同的字符.习惯上,符号常量 名用大写,变量名用小写表示,以增加可读性. ******************************** ******************************** ************************ 2.忽略了变量的类型,进行了不合法的运算. main() { float a,b; printf("%d",a%b); } %是求余运算,得到a/b的整余数.整型变量a和b可以进行求余运算,而实型变量则不允许进行"求余"运算. ******************************** ******************************** ************************ 3.将字符常量与字符串常量混淆. char c; c="a"; 在这里就混淆了字符常量与字符串常量,字符常量是由一对单 引号括起来的单个字符,字符串常量是一对双引号括起来的字符序 列.C规定以"\"作字符串结束标志,它是由系统自动加上的,所 以字符串"a"实际上包含两个字符:'a'和'\',而把它赋给一 个字符变量是不行的. ******************************** ******************************** ************************ 4.忽略了"="与"=="的区别. 在许多高级语言中,用"="符号作为关系运算符"等于". 如在BASIC程序中可以写 if (a=3) then … 但C语言中,"="是赋值运算符,"=="是关系运算符.如: if (a==3) a=b; 前者是进行比较,a是否和3相等,后

上海海事大学(C语言期末)上机题库

试卷编号:9688 所属语言:C语言 试卷方案:期中考试 试卷总分:100分 共有题型:5种 一、填空共15题(共计15分) 第1题(1.0分)题号:528 设a、b、c为整型数, 且a=2、b=3、c=4, 则执行完以下语句: a*=16+(b++)-(++c); 后,a的值是【1】. 答案: =======(答案1)======= 28 第2题(1.0分)题号:78 已知 i=5;写出语句 i+=012; 执行后整型变量 i 的十进制值是【1】. 答案: =======(答案1)======= 15 第3题(1.0分)题号:510 若a是int型变量,则计算表达式 a=25/3%3 后a的值为【1】. 答案: =======(答案1)======= 2 第4题(1.0分)题号:437 以下程序的输出结果为【1】, #include "stdio.h" main(){int a=010,j=10;printf("%d,%d\n",++a,j--);}

答案: =======(答案1)======= 9,10 第5题(1.0分)题号:431 执行下面两个语句,输出的结果是【1】,char c1=97,c2=98;printf("%d %c",c1,c2); 答案: =======(答案1)======= 97 b *第6题(1.0分)题号:293 getchar()函数只能接收一个【1】. 答案: =======(答案1)======= 字符 第7题(1.0分)题号:440 设a=3,b=4,c=5,则表达式!(a+b)+c-1&&b+c/2的值为【1】. 答案: =======(答案1)======= 1 第8题(1.0分)题号:95 已知a=13,b=6, a&&b的十进制数值为【1】. 答案: =======(答案1)======= 1 第9题(1.0分)题号:306 当a=1,b=2,c=3时,执行以下程序段后b=【1】.

计算机二级C语言基础知识整理

1.1 算法 算法:是一组有穷指令集,是解题方案的准确而完整的描述。通俗地说,算法就是计算机解题的过程。算法不等于程序,也不等于计算方法,程序的编制不可能优于算法的设计。 算法是一组严谨地定义运算顺序的规则,每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。所以其四个基本特征包括: (1)确定性,算法中每一步骤都必须有明确定义,不允许有模棱两可的解释,不允许有多义性; (2)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止;(3)可行性,算法原则上能够精确地执行; (4)拥有足够的情报。 算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。 指令系统:一个计算机系统能执行的所有指令的集合。 基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。 算法的三种基本控制结构:顺序结构、选择结构、循环结构。 算法基本设计方法:列举法、归纳法、递推、递归、减半递推技术、回溯法。算法效率的度量—算法复杂度:算法时间复杂度和算法空间复杂度。 算法时间复杂度:指执行算法所需要的计算工作量。即算法执行过程中所需要的基本运算次数。通常,一个算法所用的时间包括编译时间和运行时间。 算法空间复杂度:指执行这个算法所需要的内存空间。包括算法程序所占的空间,输入的初始数据所占的空间,算法执行过程中所需的额外空间。 1.2 数据结构的基本概念 数据结构:指相互有关联的数据元素的集合。 数据结构研究的三个方面: (1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构; (3)对各种数据结构进行的运算。 数据的逻辑结构应包含: (1)表示数据元素的信息; (2)表示各数据元素之间的前后件关系(指逻辑关系,与存储位置无关)。 数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构,也称数据物理结构。 数据的存储结构有顺序、链接、索引等。 线性结构的条件,(一个非空数据结构): (1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件。 非线性结构:不满足线性结构条件的数据结构。 1.3 线性表及其顺序存储结构 线性表是由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。

大学生C语言期末考试必做题库

C语言

第一题 在屏幕上显示一个短句“Programming in C is fun!” #include int main() { printf("Programming in C is fun!\n"); return 0; } 第二题 在屏幕上显示如下网格。 +---+---+ | | | | | | +---+---+ #include int main( ) { printf("+---+---+\n| | |\n| | |\n+---+---+\n"); return 0; } 第三题 在屏幕上显示一条语句“This is a C program.” #include int main() { printf("This is a C program.\n"); return 0; } 第四题 输出如下图形: ********** very good! ********** #include int main( ) { printf("**********\nvery good!\n**********\n"); return 0; }

第一题求平方根(基础) 程序填空,不要改变与输入输出有关的语句。 输入1个实数x,计算并输出其平方根(保留1位小数)。 例:输入17输出The square root of 17.0 is 4.1 #include #include int main( ) { double x, root; scanf("%lf", &x); root=sqrt(x); printf("The square root of %0.1f is %0.1f\n", x, root); return 0; } 第二题计算一个三位数的个十百位之和 编写程序。 输入一个三位数(大于0),计算这个三位数的个位、十位、百位数字之和. 例如:输入:152输出:sum=8 #include #include int main() { int n,a,b,c,sum; scanf("%d",&n); a=n/100; b=n%100/10; c=n%10; sum=a+b+c; printf("sum=%d\n",sum); return 0; } 第三题(公共)求圆的周长、面积及圆球体积 程序填空,不要改变与输入输出有关的语句。 求以r为半径的圆周长c和圆面积s,再求以r为半径的圆球体积v。(已知r=3.67在程序中直接赋值,pi的值为3.1415926) 按照下列形式输出: printf("c=%f\ns=%f\nv=%f\n",c,s,v); #include int main( ) { double r,c,s,v,pi=3.1415926; r=3.67; c=2*pi*r;

相关文档
最新文档