文档库 最新最全的文档下载
当前位置:文档库 › c语言练习4

c语言练习4

c语言练习4
c语言练习4

练习4

一、选择题。

1.以下对编译预处理命令的正确的说法是(ABC)。

A、C语言中的编译预处理命令包含宏定义、文件包含和条件编译

B、C语言中的编译预处理命令以#号开头

C、C语言中的编译预处理命令一般位于程序代码的首部

D、C语言中的编译预处理命令以分号结束

2.设有不带参的宏定义#define N 20+1,则以下说法不正确的是:(C)。

A、编译预处理阶段,程序代码中所有的宏名N被原样替换为20+1

B、该不带参宏定义中的20+1为宏替换字符串

C、该不带参宏定义中的20+1为整型表达式

D、该不带参宏定义中的宏名N没有数据类型的概念

3.定义一个带参的宏名f(x)计算表达式2*x*(x+1)的值,则以下带参宏定义中正确的定义形

式是:(B)。

A、#define f(x) 2*x*(x+1)

B、#define f(x) (2*(x)*((x)+1))

C、#define 2*(x)*((x)+1) f(x)

D、#define f 2*x*(x+1)

4.以下对条件编译不正确的说法是(B)。

A、条件编译是指在部分程序代码在满足指定条件的情况下才参与编译,否则不参与编

译。

B、无论是否使用条件编译,所有程序代码均要进行编译

C、使用条件编译和使用if语句是有区别的

D、合理使用条件编译可以减少需要参与编译的语句数量,生成的目标程序小,程序执

行效率高。

5.文件包含命令#include 和#include“math.h”的区别在于(D)。

A、前者先在编译系统指定的目录下查找文件math.h,如果找不到再到用户当前目录下

查找

B、后者先在编译系统指定的目录下查找文件math.h,如果找不到再到用户当前目录下

查找

C、两者均是先在编译系统指定的目录下查找文件math.h,如果找不到再到用户当前目

录下查找

D、前者仅在编译系统指定的目录下查找文件math.h,后者先在用户当前目录中查找文

件,如果找不到再到编译系统指定的目录下查找

6.以下对将C程序的多个源文件连接生成可执行文件的说法中不正确的是(C)。

A、使用工程文件的方式下,每个源文件分别编译生成一个目标文件,然后再进行连接

生成可执行文件

B、使用文件包含命令的方式下,通过编译预处理生成一个包含所有源文件代码的新的

源文件,将该源文件编译成目标文件,然后再进行连接生成可执行文件。

C、使用文件包含命令的方式下,不必考虑多条文件包含命令的顺序。

D、工程文件的作用是告诉编译系统需要将那些源文件进行编译、连接并生成一个可执

行文件

7.当说明一个结构体变量时,系统分配给它的内存是(A)

A、结构体中各成员所需内存量的总和

B、结构体中第一个成员所需内存量

C、结构体中占内存量最大的成员所需的内存量

D、结构体中最后一个成员所需内存量

8.当说明一个共用体变量时,系统分配给它的内存是(C)

A、共用体中各成员所需内存量的总和

B、共用体中第一个成员所需内存量

C、共用体中占内存量最大的成员所需的内存量

D、共用体中最后一个成员所需内存量

9.以下关于typedef的叙述不正确的是( B )

A、用typedef可以定义各种类型名,但不能用来定义变量

B、用typedef可以增加新类型

C、用typedef只是将已存在的类型用一个新的名称来代表

D、使用typedef便于程序通用

10.下面四个运算符中,优先级最低的是(A)

A、( )

B、.

C、->

D、++

11.以下关于枚举的叙述不正确的是(D)

A、枚举变量只能取对应的枚举类型的枚举元素表中的元素

B、可以在定义枚举类型时对枚举元素进行初始化

C、枚举元素表中元素有先后次序,可以进行比较

D、枚举元素的值可以是整数或者字符串。

12.在下列程序中,枚举变量c1和c2的值分别是(A)和(D)#include

void main( )

{

enum color {red,yellow,blue=4,green,white}c1,c1;

c1=yellow;

c2=white;

printf("%d,%d\n",c1,c2);

}

A、1

B、3

C、5

D、6

13.已知有如下定义,若有p=&data,则对data中的成员a的正确引用是(B)struct sk

{

int a;

float b;

}data,*p;

A、(*p).data.a

B、(*p).a

C、p->data.a

D、p.data.a

14.设有以下定义和语句,

struct student

{

int num,age;

};

struct student stu[3]={{2001,20},{2001,21},{2001,19}};

struct studeng *p=stu;

则以下错误的引用是(D)

A、(p++)->num

B、p++

C、(*p).num

D、p=&stu.age

15.设有以下说明语句,

stuct ex

{ int x; float y; char z;}example;

则下面的叙述中不正确的是(B)

A、struct是结构类型的关键字

B、example是用户定义的结构类型名

C、x,y,z都是结构成员名

D、struct ex是用户定义的结构类型

16.设有以下语句:

struct st

{

int n;

st *next;

};

static st a[3]={5,&a[1],7,&a[2],9,NULL},*p;

p=&a[0];

则以下表达式值为6的是(B)

A、p++->n

B、++p->n

C、(*p).n++

D、p->n++

17.选择下面程序的运行结果是(B)

#include

struct stu

{

int num;

char name[10];

int age;

};

void fun(stu *p)

{

printf("%s\n",(*p).name);

}

void main()

{

struct stu students[3]={{9801,"Zhang",20},{9802,"Long",21},{9803,"Xue",19}};

fun(students+2);

}

A、Zhang

B、Xue

C、Long

D、18

18.当已存在一个abc.txt文件时,执行fopen("abc.txt","r+")的功能是(D)

A、打开abc.txt文件,清除原有的内容

B、打开abc.txt文件,只能写入新的内容

C、打开abc.txt文件,只能读取原有内容

D、打开abc.txt文件,可以读取和写入新的内容19.若用fopen函数打开一个新的二进制文件,该文件可以读也可以写,则文件打开的模式是(C)

A、"ab+"

B、"wb+"

C、"rb+"

D、"ab"

20.若用fopen函数打开一个已经存在的文本文件,保留该文件原有数据且可以读也可以写,则文件操作模式是( C )

A、"r+"

B、"w+"

C、"a+"

D、"a"

21.使用fseek函数可以实现的操作是( C )

A、改变文件的位置指针的当前位置

B、文件的顺序读写

C、文件的随机读写

D、以上都不对

22.fread(buf,64,2,fp)的功能是(D)

A、从fp文件流中读出整数64,并存放在buf中;

B、从fp文件流中读出整数64和2,并存放在buf中;

C、从fp文件流中读出64个字节的字符,并存放在buf中;

D、从fp文件流中读出2个64个字节的字符,并存放在buf中;

23.以下程序的功能是(B)

#include

void main()

{

FILE *fp;

char str[]="Hello";

fp=fopen("PRN","w");

fputs(str,fp);

fclose(fp);

}

A、在屏幕上显示"Hello"

B、把"Hello"存入PRN文件中

C、在打印机上打印出"Hello"

D、以上都不对

24.检测fp文件流的文件位置指针在文件头的条件是(B)

A、fp==0

B、ftell(fp)==0

C、fseek(fp,0,SEEK_SET)

D、feof(fp) 25.以下程序的功能是(A)

#include

void main()

{

FILE *fp;

fp=fopen("abc","r+");

while(!feof(fp))

if(fgetc(fp)==?*?)

{

fseek(fp,-1L,SEEK_CUR);

fputc(…$?,fp);

fseek(fp,ftell(fp),SEEK_SET);

}

fclose(fp);

}

A、将abc文件中所有’*’均替换成’$’

B、查找abc文件中所有’*’

C、查找abc文件中所有’$’

D、将abc文件中所有字符均替换成’$’

二、填空题

1、C语言提供的预处理命令功能主要有三种:宏定义,文件包含,条件编译。且分别用#define, #include, #if或#endif 来实现。为了与一般的C语句相区别,这些命令以#符号开头。

2、结构体变量成员的引用方式是使用成员运算符‘.’运算符,结构体指针变量成员的引用方式是使用成员运算符‘->’运算符。

3、设struct student{ int no;char name[12];float score[3];} sl,* p = &sl;

用指针法给sl的成员no赋值1234的语句是___p->no=1234。

4、运算sizeof是求变量或类型的内存字节数,typedef的功能是类型定义。

5、C语言可以定义枚举类型,其关键字为enum 。

6、设union student { int n;char a[100]; } b; 则sizeof(b)的值是_____100_________。

7、C语言流式文件的两种形式是ASCII码文件和二进制文件。

8、C语言打开文件的函数是fopen,关闭文件的函数是fclose。

9、按指定格式输出数据到文件中的函数是fprintf ,按指定格式从文件读取数据的函数是fscanf,判断文件指针到文件末尾的函数是 EOF。

10、输出一个数据块到文件中的函数是fwrite,从文件中输入一个数据块的函数是fread ;输出一个字符串到文件中的函数是 fputs ,从文件中输入一个字符串的函数是fgets。

11、feof(fp)函数用来判断文件是否结束,如果遇到文件结束,函数值为0,否则为1。

12、在C语言中,文件的存取是以字节为单位的,这种文件被称作流式文件。

三、阅读程序,写出运行结果。

1.#define PI 3

#define S PI*r*r

#define V 4*S*r/3

void main()

{

float r=2;

printf(“S=%.2f, V=%.2f”,S,V);

}

答案:S=12.00, V=32.00

2.#define FX(x) x*(x+2)(x-2)

void main( )

{

int a=3,b=2;

printf("%d\n", FX(2+a+b));

}

答案:95

3.#define PRT(x) printf(“%d\t”,x)

#define PRINT(x) PRT(x);printf(“well done!”)

void main()

{

int x=3,i;

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

PRINT (x-i);

printf(“\n”);

}

答案:3 2 1 well done!

4.#include

struct two

{

int x, *y ;

}*p;

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

two b[4]={100,&a[1],200,&a[3],10,&a[5],20,&a[7]};

void main()

{

p=b;

printf("%d\n",++(p->x));

}

答案:101

5.#include

struct n_c

{

int x;

char c;

};

void func(struct n_c b)

{

b.x=20;

b.c='y';

}

void main( )

{

struct n_c a={10,'x'};

func(a);

printf("%d%c",a.x,a.c);

return 0;

}

答案:10x

四、编程题。

1、圆柱形体积公式为:v=area*h。其中area=π*r*r,圆周率π取值为3.14。要求使用不带参宏定义实现计算圆柱体体积功能,r和h的值由用户键盘输入。

#include

#define PI 3.14

#define Area PI*r*r

#define V Area*h

void main()

{

int r,h;

printf("请输入圆柱的半径:");

scanf("%d",&r);

printf("请输入圆柱的高:");

scanf("%d",&h);

printf("圆柱的体积为%.2f:",V);

}

2、编写一个带参的宏定义,实现通过宏替换求式子f(x)=4x3+3x2-2x+1值的功能,其中x为形参。要求在main函数中通过宏替换求下面两个式子的值,式子中的m由用户键盘输入。#include

#define f(x) 4*(x)*(x)*(x)+3*(x)*(x)-2*(x)+1

void main()

{

int m,f;

printf("请输入一个整数:");

scanf("%d",&m);

printf("f(x)=%d",f(m));

}

3、编写3个源文件file1.c、file2.c和file3.c,在file2.c中编写函数fun1求两个整数的和,在file3.c中编写函数fun2求两个整数的差,在file1.c中编写main函数调用这两个函数求两个整数的和与差并输出结果。

file1.c:

#include

int fun1(int a,int b);

int fun2(int a,int b);

void main()

{

int x,y,sum,Diff;

printf("请输入x和y两个整数:");

scanf("%d,%d",&x,&y);

sum=fun1(x,y);

Diff=fun2(x,y);

printf("\n %d+*%d=%d",x,y,sum);

printf("\n %d-%d=%d",x,y,Diff);

}

file2.c:

int fun1(int a,int b)

{

int c;

c=a+b;

return c;

}

file3.c:

int fun2(int a,int b)

{

int c;

c=a-b;

return c;

}

4、要求:分别使用工程文件和文件包含命令两种方式将3个源文件连接生成一个可执行文件。答案:见例题。

5、有4个学生,每个学生包括学号,姓名,成绩。要求找出成绩最高者的姓名和成绩。

#include

struct stu

{

int No;

char Name[10];

int Score;

};

int searchMax(struct stu *student,int n)

{

int i,max;

max=0;

for(i=0;i

if((student+max)->Score<(student+i)->Score)

max=i;

return(max);

}

void main()

{

struct stu student[4];

int i,n;

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

{

printf("请输入第%d个学生的学号姓名成绩:",i+1);

scanf("%d%s%d",&student[i].No,student[i].Name,&student[i].Score);

}

n=searchMax(student,4);

printf("成绩最高的学生是%s,成绩为:%d\n",student[n].Name,student[n].Score); }

6、编写一个函数day,该函数使用data结构作为参数,函数返回某日是这年的第几天。#include

struct data

{

int year;

int month;

int day;

};

int Day(struct data *y)

{

int t=28,n=0;

if(y->year%4==0&&y->year%100!=0||y->year%400==0)t=29;

switch(y->month)

{

case 12: n+=30;

case 11:n+=31;

case 10:n+=30;

case 9:n+=31;

case 8:n+=31;

case 7:n+=30;

case 6:n+=31;

case 5:n+=30;

case 4:n+=31;

case 3:n+=t;

case 2:n+=31;

}

n+=y->day;

return(n);

}

void main()

{

struct data s;

int t=0,k,n;

do

{

k=0;

printf("请输入年月日(1999.6.18):");

scanf("%d.%d.%d",&s.year,&s.month,&s.day);

if(s.year%4==0&&s.year%100!=0||s.year%400==0)t=1;

if(s.month<1||s.month>12)

{

printf("月份输入错误!\n");k=1;

continue;

}

switch(s.month)

{

case 1:case 3:case 5:case 7:case 8:case 10:case 12:

if(s.day<1||s.day>31)

{printf("日期输入错误!\n");k=1;}break;

case 4:case 6:case 9:case 11:

if(s.day<1||s.day>30)

{printf("日期输入错误!\n");k=1;}break;

case 2:

if(t==0&&(s.day<1||s.day>28))

{printf("日期输入错误!\n");k=1;break;}

else if(t==1&&(s.day<1||s.day>29))

{printf("日期输入错误!\n");k=1;}break;

}

}while(k==1);

n=Day(&s);

printf("是第%d天\n",n);

}

7、编写一个C程序,将指定的文本文件中的所有小写字母转换成对应的大写字母,其他的字符格式不变。

#include

void main()

{

FILE *fp;

char c;

fp=fopen("abc.txt","r+");

while(!feof(fp))

{

c=fgetc(fp);

if(c>='a'&&c<='z')

{

fseek(fp,-1L,SEEK_CUR);

fputc(c-32,fp);

fseek(fp,ftell(fp),SEEK_SET);

}

}

fclose(fp);

}

C语言程序设计习题4

习题4参考解答 1.写出下面函数的运行结果。 #include void fx701(int k,int n,float a); int main() { int k=1,n=5; float a=3.2,b=8.5; printf("调用前:k=%d n=%d a=%.2f b=%.2f\n",k,n,a,b); fx701(k,n,a); printf("调用后:k=%d n=%d a=%.2f b=%.2f\n",k,n,a,b); return 0; } void fx701(int k,int n,float a) { int q=100; float b,x=6.2; k+=q; n*=q; a-=x; b=3.5*a; printf("函数中:k=%d n=%d a=%.2f b=%.2f\n",k,n,a,b); } 解: 调用前:k=1 n=5 a=3.20 b=8.50 函数中:k=101 n=500 a=-3.00 b=-10.50 调用后:k=1 n=5 a=3.20 b=8.50 2.编写一个函数,实现从键盘输入一个整数,如果该整数为素数,则返回1,否则返回0。 解: #include #include int Is_prime(int i)

{ int j=0; for(j=2;j

c语言复习题(有答案)●

思考题 不仅要会做这些题,更重要的是要掌握其相关知识点一、一般填空题 1-1、调用fopen函数打开一文本文件,在“打开模式”这一项中,为输出(写)而打开需填入【1】. 1-2、调用fopen函数打开一文本文件,在“打开模式”这一项中,为追加而打开需填入【1】. 1-3、fopen函数的原形在头文件【1】中. 1-4、getchar函数的原形在头文件【1】中. 1-5、sqrt函数的原形在头文件【1】中. 1-6、如果函数不要求带回值,可用【1】来定义函数返回值为空. 答案:w或w+;a或a+;stdio.h ; stdio.h ; math.h ;void . 2-1、字符串“\1011234\\at”的长度(字符数)是【1】. 2-2、字符串“abc\103\\bcd”的长度(字符数)是【1】. 2-3、字符串“1\\t\x43\abx44”的长度(字符数)是【1】. 2-4、“a“在内存中占【1】个字节. 2-5、‘a’在内存中占【1】个字节. 2-6、“\71“在内存中占【1】个字节. 2-7、一维数组下标的最小值是【1】;数组char a[]=“china” ;在内存应占【1】个字节。 答案:8; 8; 9; 2;1;2 ;0;6. 3-1、设x=(5>1)+2, x的植为【1】. 3-2、表达式‘B’+15+‘\x41’+011+0x10的值是【1】. 3-3、表达式‘b’+5+‘\x42’+011+0x10的值是【1】. 答案:3;171;194; 4-1、假设所有变量都为整型,表达式(a=2,b=5,a>b?a++:b++,a+b)的值是【1】. 4-2、if(!a)中的表达式!a等价于【1】. 4_3、已知a=1,b=2,c=3,执行if(a>b>c) b=a;else b=c;a=4;b=8;后,b的值是【1】. 答案:8;a==0;8; 5-1、若所用变量都已定义,下列程序段的执行结果是【1】. for(i=1;i<=5;i++);printf(“OK\n”); 5-2、执行语句char s[3]=”ab”,*p;p=s;后,*(p+2)的值是【1】. 5-3、若有以下定义和语句:int a[4]={0,1,2,3},*p; p=&a[2]; ,则*--p的值是【1】. 5-4、下列程序的输出结果是【1】,main(){int a=011;printf(“%d\n”,++a);} 答案:OK;’\0’;1;10 6-1、若宏定义为:#define y(x) 2+x, 则表达式a=3*y(3)的值为【1】. 6-2、若宏定义为:#define y(x) 2+x, 则表达式a=4*y(2)的值为【1】. 6-3、若宏定义为:#define y(x) 2/x, 则表达式a=4+3*y(3)的值为【1】. 答案:9;10;6 . 二、单项选择题 1-1、若以"a+"方式打开一个已存在的文件,则以下叙述正确的是()。 A:文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作 B:文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作 C:文件打开时,原有文件内容被删除,只可作写操作 D:以上各种说法皆不正确 1-2、若执行fopen函数时发生错误,则函数的返回值是()。

大学c语言复习题附答案

判断题 1.运算器是完成算术和逻辑操作的处理部件,通常称为CPU。× 2.通常硬盘安装在主机箱内,因此它属于主存储器。× 3.指令与数据在计算机内是以ASCII码进行存储的。× 4.操作系统是合理地组织计算机工作流程、有效地管理系统资源、方便用户使用的程序集 合。√ 5.用计算机机器语言编写的程序可以由计算机直接执行,用高级语言编写的程序必须经过 编译才能执行。√ 6.计算机的所有计算都是在内存中进行的。× 7.字长是指计算机能直接处理的二进制信息的位数。√ 8.计算机区别于其他计算工具的本质特点是能存储数据和程序。√ 9.系统软件就是市场上买来的软件,应用软件就是自己编写的软件。× 10.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、小写英文字母、大 写英文字母。× 11.多台计算机相连,就形成了一个网络系统。× 12.在Internet网上,IP地址、E-mail地址都是唯一的。√ 13.不同类型的变量在内存中占用存储空间的大小都是一样的。× 14.表示数学式3

数据结构C语言版第四章 串

第四章串 重点难点 理解"串"类型定义中各基本操作的特点,并能正确利用它们进行串的其它操作;掌握串类型的各种存储表示方法;理解串的两种匹配算法。 典型例题 1、简述下列每对术语的区别: 空串和空白串;串常量和串变量;主串和子串;静态分配的顺序串和动态分配的顺序串;【解】 (1)空串是指不包含任何字符的串,它的长度为零。 空白串是指包含一个或多个空格的串,空格也是字符。 (2)串常量是指在程序中只可引用但不可改变其值的串。 串变量是可以在运行中改变其值的。 (3)主串和子串是相对的,一个串中任意个连续字符组成的串就是这个串的子串,而包含子串的串就称为主串。 (4)静态分配的顺序串是指串的存储空间是确定的,即串值空间的大小是静态的,在编译时刻就被确定。 动态分配的顺序串是在编译时不分配串值空间,在运行过程中用malloc和free等函数根据需要动态地分配和释放字符数组的空间(这个空间长度由分配时确定,也是顺序存储空间)。 2、以HString为存储表示,写一个求子串的算法。 【解】HString 是指以动态分配顺序串为存储表示,其定义为: typedef struct { char *ch; int length; }HString; void *substr( HString *sub,HString *s,int pos,int len) {//用sub返回串s的第pos个字符起长度为len的子串。sub初始时为一空串 //pos的合法位置为0<=pos<=s->length-1 int i; if (pos<0||pos>s->length-1||len<=0) Error("parameter error!");//参数不合法,子串为空串 if (s->lengthlen=s->length-pos;//设置子串的串长 else sub->length=len; //设置子串的串长 sub->ch=(char *)malloc(len*sizeof(char));//为sub->ch申请结点空间 for(i=0;ilength;i++)//将s串中pos位置开始的共sub->length个字符复制到sub串中

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 6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D)。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是C。 A)2.5 B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"a

C语言试题与答案

大学C语言考试题库 第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. A B. B C. D D. E (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 32 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系

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 6. 下列C 语言用户标识符中合法的是( B )。 A) 3ax B)x C)case D)-e2 E)u nion 7. 下列四组选项中,正确的 C 语言标识符是 (C )。 A ) %x B ) a+b C ) a123 D ) 8、 下列四组字符串中都可以用作 A 、print _3d db8 aBc B C 、str_1 Cpp pow while D 9. C 语言中的简单数据类型包括( A 、整型、实型、逻辑型 C 、整型、字符型、逻辑型 C 语言程序中的标识符的是( A ) 、I\am one_half start$it 3pai 、Pxq My->book line# His.age D )。 B 、整型、实型、逻辑型、字符型 D 、整型、实型、字符型 10. 在C 语言程序中,表达式 5%2的结果是—C_ A)2.5 B)2 C)1 D)3 11. 如果int a=3,b=4 ;则条件表达式"a

C语言第四章习题带答案-2012.10.16更新

练习4-1答案 一、选择题 1.已知:char c='A'; int i=1, j;,执行语句j=!c&&i++;,则i和j的值是( B )。 A.1,1 B.1,0 C.2,1 D.2,0 2.已知:int x=1, y=2, z;,则执行z=x>y?++x:++y;,则z的值为( C )。 A.1 B.2 C.3 D.4 3.已知:int a=4, b=5, c;,则执行表达式c=a=a>b后变量a的值为( A )。 A.0 B.1 C.4 D.5 4.已知:char ch='A';,则表达式ch=(ch>='A'&&ch<='Z')?(ch+32):ch;的值是( B )。 A.'A' B.'a' C.'Z' D.'z' 5.若w=1, x=2, y=3, z=4;,则条件表达式w>x?w:y10?x+100:x-10); printf("%d",w++||z++); printf("%d",!w>z); printf("%d",w&&z); A.0111 B.1111 C.0101 D.0100 7.已知:a=b=c=1且a、b、c均为int型变量,执行以下语句:++a||++b&&++c; 则变量a值为( ①C ),b值为( ②A )。 ①A.不正确B.0 C.2 D.1 ②A.1 B.2 C.不正确D.0 8.执行下面语句后x的值为( D )。 int a=14, b=15, x; char c='A'; x=((a&b)&&(c<'a')); A.TRUE B.FALSE C.0 D.1 9.要判断char型变量m是否是数字,可以使用下列表达式( B )。 A.0<=m&&m<=9 B.'0'<=m&&m<='9' C."0"<=m&&m<="9" D.前面三个答案均是错误的 10.能正确表示“当x取值在[1..10]和[200..210]范围内为真,否则为假”的表达式是( C )。 A.(x>=1)&&(x<=10)&&(x>=200)&&(x<=210) B.(x>=1)||(x<=10)||(x>=200)||(x<=210) C.(x>=1)&&(x<=10)||(x>=200)&&(x<=210) D.(x>=1)||(x<=10)&&(x>=200)||(x<=210) 11.设x、y和z是int型变量,且x=3, y=4, z=5,则下面表达式中值为0的是( D )。 A.'x'&&'y'B.x<=y C.x||y+z&&y-z D.!((x=y&&ch<'B'&&!y的值是( C )。 A.0 B.语法错C.1 D.“假” 13.判断char型变量c1是否为小写字母的正确表达式为( D )。

C语言思考题

1、机器语言:机器语言及其指令是计算机能够直接识别的执行的一组二进制代码。一条机器指令通常由操作码和操作数两部分构成。 2、汇编指令:是机器语言的符号化表示MOV 3、汇编语言:由汇编指令、汇编伪指令及汇编语言的语法规则组成。 4、汇编语言源程序:用汇编语言编写的程序 5、汇编程序:把汇编语言源程序翻译成目标程序的加工程序MASM 6、二、十、十六进制转换(掌握<256)练习1:117=(1110101)B练习2:1000 1011 B=(139)D练习3:1011 1000 0000 0101 B=(B805)H 7、机器数:是指计算机中的数据,可以分为无符号数和有符号数字长为N位时无符号数表示范围0≤N≤2N-1 当N=8时0≤N≤255 8、原码(8位):最高位为符号位(正数用0表示,负数用1表示),其他位为数值位 如X=+45=+0010 1101B [X]原=0010 1101B 如X=-45=-0010 1101B [X]原=1010 1101B 9、补码(8位):正数的补码与原码相同,负数的补码是将符号位取1,数值位逐位取反,未位加1。如X=+45=+0010 1101B [X]补=0010 1101B 如X=-45=-0010 1101B [X]补=1101 0011B 10、补码运算:是指对一个补码表示的数按位求反后再在末尾加1,可以得到与此数相应的符号相反的数的补码。例、已知[117]补=0111 0101B,[-117]补=1000 1011B,对[117]补作补码运算。解:因为[117]补=0111 0101B,按位求反后得1000 1010B,末尾加1得1000 1011B=[-117]补。[X+Y]补=[X]补+[Y]补[X-Y]补=[X]补+[-Y]补 12、BCD码:BCD码用4位二进制数表示1位十进制数。常用8421BCD码例:写出十进制314所对应的BCD码 13、8086/8088CPU:16位微处理器和16位数据总线,20位地址总线(寻址空间为1MB)。8088微处理器内部16位数据,外部8位数据,也称准16位机。8086/8088CPU的组成(功能方面):运算器、控制器、寄存器组 14、寄存器是CPU内部临时存放数据的部件,速度比内存快。(1)数据寄存器4个16位寄存器AX,BX,CX,DX,每个寄存器还可以拆成2个8位寄存器使用。 AX累加器:算术运算寄存器,用于存放操作数或运算结果。I/O指令中通过AX与外部交换数据。在乘除运算中指定存放被乘数与被除数,系统功能调用号。AX累加器可以分为AH、AL分别使用。 BX基址寄存器:可作为通用寄存器使用。在计算内存地址是,常作基址寄存器,作为通用寄存器还可以分为BH、BL分别使用。 CX数据寄存器:可作为通用寄存器使用。在循环和串操作指令中作隐含计数器。作为通用寄存器还可以分为CH、CL分别使用。 DX数据寄存器:可作为通用寄存器使用。在I/O操作中,DX用来存放I/O端品地址。在乘除法运算中与AX组合一起存放双字型数据。作为通用寄存器还可以分为DH、DL 分别使用。 (2)变址寄存器(2 个16位):SI 源变址寄存器.DI 目的变址寄存器 BP基址寄存器:用于存放栈中的操作数的偏移地址。SP堆栈指针寄存器:用来指示栈顶的当前位置(偏移地址)。 IP 指令指针寄存器(程序计数器):用于存放下一条指令所在偏移地址。与CS配合,用来确定程序中下一条指令的物理地址。 15、PSW程序状态字寄存器(标志寄存器):8088微处理器使用16位中的9位设置了9个标志。标志位SF、OF、CF、ZF的含义0010 1001B+1110 1000B=1 0001 0001B CF=1 OF=0 SF=0 ZF=0 16、段地址寄存器:段表示一块内存空间(大小可变),最大为64K字节,最小为16字

C语言练习习题(带详解答案)

欢迎阅读 一、编程题 1.输入2个整数,求两数的平方和并输出。 #include int main(void) { intt a ,b,s; 2. 信息。 scanf("%lf",&r); if (r>=0) { area =PI*r*r; girth =2*PI*r ; printf("the area is %.2f\n", area);

printf("the girth is %.2f\n", girth);} else printf("Input error!\n"); return 0; } 3 4.从键盘上输入一个百分制成绩score,按下列原则输出其等级:score≥90,等级为A;80≤score<90,等级为B;70≤score<80,等级为C;60≤score<70,等级为D;score<60,等级为E。 #include void main(){ int data;

char grade; printf("Please enter the score:"); scanf("%d”, &data); switch(data/10) { case 10: } 5. float fee; printf(“please input hour:\n”); scan f(“%d”,&hour); if(hour<=10) fee=30;

else if(hour>=10&&hour<=50) fee=3*hour; else fee=hour*2.5; printf(“The total fee is %f”,fee); } 6. } 7、编程序实现求1-10之间的所有数的乘积并输出。 #include void main( ) { int i; long sum=1;

c语言练习题4

一. 选择题(每小题2分,共30分) 1.以下叙述正确的是______。 A)在C程序中,main函数必须位于程序的最前面 B)C程序的每行中只能写一条语句 C)C语言本身没有输入输出语句 D)在对一个C程序进行编译的过程中,可发现注释中的接写错误 2. 下面不正确的字符串常量是______。 A)'abc' B)"12'12" C)"0" D)" " 3.若x、i、j和k都是int型变量,则计算下面表达式后,x的值为______。 (i=4,j=16,k=32) A)4 B)16 C)32 D)52 4. getchar函数可以从终端接收一个______。 A)整形变量表达式值 B)实型变量值 C)字符串 D)字符或字符型变量值 5.假设所有变量均为整型,则表达式(a=2,b++,a+b)的值是______。。 A)7 B)8 C)6 D)2 6.设x,y和z是int型变量,且x=3,y=4,z=5,则下面的表达式中值为0的是______。 A)‘x?&&?y? B)X<=y C)X||y+z&&y-z D)!((x

else x=3; else x=6; else x=7; A) 1 B) 2 C) 3 D) 6 8.设有程序段 int k=10; while (k=0) k=k-1; 则下面描述中正确的是______。 A)while循坏执行10次 B)循环是无限循环 C)循环体语句一次也不执行 D)循环体语句执行一次 9.下面程序段的运行结果是______。 A=1;b=2;c=2; While (a

c语言第4章 选择结构程序设计习题答案

第4章选择结构程序设计 习题(P111) 4.2 C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”? 答:C语言中用1表示真,0表示假;系统按照“非0为真,0为假”判断一个逻辑量的真假。 4.3 写出下面各逻辑表达式的值。设a=3,b=4,c=5。 (1)a+b>c&&b==c (2)a||b+c&&b-c (3)!(a>b)&&!c||1 (4)!(x=a)&&(y=b)&&0 (5)!(a+b)+c-1&&b+c/2 解:该题在求解过程中注意: 一、优先级。逻辑运算符(&&和||)低于算术运算符和关系运算符而高于赋值运算符,在逻辑运算符中,逻辑非最高,逻辑与其次,逻辑或最低; 二、逻辑表达式的求值规则。(P94) 所以得以上表达式的值分别为:(1)0 (2)1 (3)1 (4)0 (5)1 4.4有3个整数a、b、c,由键盘输入,输出其中最大的数。 分析:这是一个规模较小的求最值的算法,习题1.6用函数的方法实现。该题不用函数调用实现,但方法是最值,再依次和第二、第三个数比较得结果。其中都要用到单分支或双分支选择结构语句。 参考程序如下: main() { int a,b,c,max; /*定义4个整型变量,其中a,b,c存原始数据,max存最值*/ printf("\ninput the value of a,b,c:"); /*提示输入*/ scanf("%d%d%d",&a,&b,&c); /*格式符之间无分隔符,输入时可以以空格、回车、跳格分隔*/ if(a>b) max=a; else max=b; if(max

C语言练习题(带答案)-绝对经典题目不看后悔

1单选题 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 C、str_1 Cpp pow while D、Pxq My->book line# His.age 选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键

C语言 选择结构程序设计练习题

第四章选择结构程序设计 一、填空 1.在C语言中,表示逻辑“真”值用_________。 2.得到整型变量a的十位数字的表达式为_________。 3.表达式:(6>5>4)+(float)(3/2)的值是_________。 4.表达式:a=3,a-1‖--a,2*a的值是_________。(a是整型变量) 5.表达式:(a=2.5-2.0)+(int)2.0/3的值是_________。(a是整型变量)6.C语言编译系统在给出逻辑运算结果时,以数值_________代表“真”,以 _________代表“假”;但在判断一个量是否为“真”时,以_________代表“假”,以_________代表真。 7.当m=2,n=1,a=1,b=2,c=3时,执行完d=(m=a!=b)&&(n=b>c)后,n的值为_________,m的值为_________。 8.若有int x,y,z;且x=3,y=-4,z=5,则表达式:!(x>y)+(y!=z)||(x+y)&&(y-z)的值为_________。 二、编程: 1.企业发放的奖金根据利润提成。利润(i)低于或等于10万元时,奖金可提10%; 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求应发放奖金总数? 2.输入三个整数x,y,z,请把这三个数由小到大输出。 3.输入某年某月某日,判断这一天是这一年的第几天? 4.本程序演示从键盘输入x的值,计算并打印下列分段函数的值。 y=0(x<60) y=1(60<=x<70) y=2(70<=x<80) y=3(80<=x<90)

C语言课后习题答案(最终)

第0章习题 1. 将下列十进制数分别转化为二进制数、八进制数和十六进制数: (1)128 (2)511 (3)1024 (4)65535 (5)1048575 答: (1)10000000、200、80 (2)111111111、777、1FF (3)10000000000、2000、400 (4)1111111111111111、177777、FFFF (5)11111111111111111111、3777777、FFFFF 2. 将下列二进制数转化为十进制数和十六进制数: (1)1100110101B (2)101101.1011B 答: (1)821、335 (2)45.6875、2D.B 3. 写出下列数的原码、反码、补码:15、-20、-27/32 答: (1)00001111、00000000、00001111 (2)10010100、11101011、11101100 (3)1.1101100、1.0010011、1.0010100 4. 16位无符号定点整数的数值表示范围为多少?8位补码的表示范围是多少?16位补码的表示范围是多少? 答: 0~65535、-128~127、-32768~32767 5.1968年Dijkstra提出结构化程序设计的思想的原因是什么?简要回答结构化程序设计的经典定义。 答: 结构化程序设计概念的提出主要是源于程序结构的层次性与模块化使得构造出来的软件具有良好的可理解性和可维护性,随着软件规模的扩大与复杂性的提高,程序的可维护性成为程序设计者们关注的重要问题之一。 如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。 6.C程序在内存中存储在哪儿?计算机的内存空间是如何分区的?分区存放不同类型的数据的目的是什么? 答:

C语言基础练习题(含答案)

第一章 C 语言基础知识 1.1 选择题 1. 以下不是C 语言的特点的是()。 A、语言简洁紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件操作 D、C语言移植性好 2. 下列字符序列中,不可用作C 语言标识符的是() A .abc123 B.C._123_ D._ok 3. 正确的C 语言标识符是()。 A ._buy_2 B .2_buy C._buy D .buy 4. 请选出可用作 C 语言用户标识符的一组标识符()。 A .void B.a3_b3 C.For D .2a define _123 -abc DO WORD IF Case sizeof 5. 下列符号中,不属于转义字符的是( A.\\ B.\0xAA )。C.\t D .\0 6. 不属于 C 语言关键字的是()。 A .int B .break C.w hile D .character 7. 是 C 语言提供的合法关键字的是()。 A .Float B.signed C.integer D.C har 8. 以下不能定义为用户标示符的是()。

A .scanf B.Void C._3com_ D.int 9. 一个C 程序是由()。 A. —个主程序和若干子程序组成 B. —个或多个函数组成 C. 若干过程组成 D. 若干子程序组成 10. C 语言程序的基本单位是()。 A ?程序行 B ?语句 C ?函数 D .字符 11. 下列说法中,错误的是()。 A ?每个语句必须独占一行,语句的最后可以是一个分号,也可以是一个回车换行符号 B ?每个函数都有一个函数头和一个函数体,主函数也不例外 C ?主函数只能调用用户函数或系统函数,用户函数可以相互调用 D ?程序是由若干个函数组成的,但是必须有、而且只能有一个主函数 12. 以下说法中正确的是()。 A . C语言程序总是从第一个定义的函数开始执行 B ?在C语言程序中,要调用的函数必须在main()函数中定义 C.C 语言程序总是从main()函数开始执行 D . C语言程序中的main()函数必须放在程序的开始部分 13. C 编译程序是()。 A.C 程序的机器语言版本 B .一组机器语言指令 C ?将C源程序编译成目标程序

严蔚敏《数据结构(c语言版)习题集》答案第四章串

《一定能摸到红球吗?》说课稿 林银花 一、教材说明: 1、课题:《一定能摸到红球吗?》 2、本节内容的地位和作用 在现代社会中,人们面临着更多的机会和选择,常常需要在不确定情境中作出合理的决策,概率正是通过对不确定现象和事件发生的可能性的刻画,来为人们更好的制定决策提供依据和建议.本节内容又是义务教育阶段,唯一培养学生从不确定的角度来观察世界的数学内容,让学生了解可能性是普遍的,有助于他们理解社会,适应生活. 3、教学目标设计: (1)认知目标: (A)经历猜测.实验.收集与分析试验结果等过程 (B)体会事件的发生的不确定性知道事情发生的可能性有多大。 (2)、能力目标: (A)经历游戏等的活动过程,初步认识确定事件和不确定事件 (B)在与其它人交流的过程中,能合理清晰地表达自己的思维过程; (3)、情感目标: (A)通过创设游戏情境,让学生主动参与,做“数学实验”,激发学生学习的热情和兴趣,激活学生思维。 (B)在与他人的合作过程中,增强互相帮助、团结协作的精神。 (C)体会到在生活中我们可以从确定和不确定两方面分析一件事情. 4、本课重点、难点分析: 学习的重点是初步体验事情发生的确定性和不确定性. 学习的难点是确定事件发生的可能性大小. 学习本节知识应注意猜测,试验,收集与分析实验结果,从中体会事件发生的可能性及大小. 二、教学对象分析: 1、初一学生性格开朗活泼,对新鲜事物特别敏感,且较易接受,因此,教学过程中创设的问题情境应较生动活泼,直观形象,且贴近学生的生活,从而引起学生的有意注意。 2、初一学生的概括能力较弱,推理能力还有待不断发展,所以在教学时,可让学生充分试验,收集,分析,帮助他们直观形象地感知。 3、初一学生已经具备了一定的学习能力,所以本节课中,应多为学生创造自主学习、

c语言第1章练习题答案

第一章 C语言概述练习题 一、选择题 1.C语言是一种( )。 A) 机器语言B) 汇编语言C) 高级语言 D) 低级语言 2.下列各项中,不是C语言的特点是( )。 A) 语言简洁、紧凑,使用方便B) 数据类型丰富,可移植性好 C) 能实现汇编语言的大部分功能D) 有较强的网络操作功能 3.下列叙述正确的是( )。 A) C语言源程序可以直接在DOS环境中运行 B) 编译C语言源程序得到的目标程序可以直接在DOS环境中运行 C) C语言源程序经过编译、连接得到的可执行程序可以直接在DOS环境中运行 D) Turbo C系统不提供编译和连接C程序的功能 4.下列叙述错误的是()。 A) C程序中的每条语句都用一个分号作为结束符 B) C程序中的每条命令都用一个分号作为结束符 C) C程序中的变量必须先定义,后使用 D) C语言以小写字母作为基本书写形式,并且C语言要区分字母的大小写 5.一个C程序的执行是从()。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 6.以下叙述不正确的是()。 A) 一个C源程序必须包含一个main函数 B) 一个C源程序可由一个或多个函数组成 C) C程序的基本组成单位是函数 D) 在C程序中,注释说明只能位于一条语句的后面 7.C语言规定:在一个源程序中,main函数的位置( )。 A)必须在程序的开头B)必须在系统调用的库函数的后面 C)可以在程序的任意位置D)必须在程序的最后 8.一个C语言程序是由( )。 A)一个主程序和若干个子程序组成B) 函数组成 C) 若干过程组成D) 若干子程序组成 9.以下有4组用户标识符,其中合法的一组是()。 A) For B) 4d C) f2_G3 D) WORD -sub DO IF void Case Size abc define 10. 一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是 ()。

相关文档