213程序设计语言复习.docx

上传人:b****8 文档编号:28658958 上传时间:2023-07-19 格式:DOCX 页数:17 大小:39.21KB
下载 相关 举报
213程序设计语言复习.docx_第1页
第1页 / 共17页
213程序设计语言复习.docx_第2页
第2页 / 共17页
213程序设计语言复习.docx_第3页
第3页 / 共17页
213程序设计语言复习.docx_第4页
第4页 / 共17页
213程序设计语言复习.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

213程序设计语言复习.docx

《213程序设计语言复习.docx》由会员分享,可在线阅读,更多相关《213程序设计语言复习.docx(17页珍藏版)》请在冰豆网上搜索。

213程序设计语言复习.docx

213程序设计语言复习

程序设计语言复习

第一章

数制转换;例如:

(1028.75)10=()8=()16

(A3BD.8)16=()10=()2

整数的原码、反码、补码的概念。

第二章

关键词;标识符的命名规定;数据类型;常量、变量;运算符;表达式;

数据的输入与输出。

八进制、十六进制整数的写法;运算符的优先级问题;整数的取值范围问题;不同数据类型混合运算时类型转换规则(课本P15)。

练习题P27第14题(运算符&&、||短路运算特点)

main()

{intx,y,z;

x=y=z=-1;

++x&&++y||++z;

printf("x=%d\ty=%d\tz=%d\n",x,y,z);/*0–10*/

x=y=z=-1;

++x||++y&&++z;

printf("x=%d\ty=%d\tz=%d\n",x,y,z);/*00-1*/

x=y=z=-1;

++x&&++y&&++z;

printf("x=%d\ty=%d\tz=%d\n",x,y,z);/*0–1-1*/

}

例如:

程序段

intm=10,n=20;

inta=1,b=3,c=5,d=7;

if((m=a>b)&&(n=c>d))

printf("Hello!

\n");

执行后m、n的值是:

0、20

例如:

表示a是正偶数的关系表达式为:

(a>0&&a%2==0)

数学命题“10≤a≤20”的C语言表达式为:

(a>=10&&a<=20)

判断字符变量c是英文字母的表达式为:

c>=’a’&&c<=’z’||c>=’A’&&c<=’Z’。

若a=3,b=2,c=1,表达式f=a>b>c的值是:

(0)

代数式

的C语言表达式是:

(-b+sqrt(b*b-4*a*c))/(2*a)

逗号表达式(b=2,a=b++,a++,a+b)的值是:

(6)

设a=2,b=5,x=2.5,y=4.5算术表达式(float)a+b%2+(int)x/(int)y的值是:

(3.0)

第四章分支结构

程序设计的三种基本流程控制结构是:

顺序结构、选择结构、循环结构;

if语句、switch语句的语法;if与else的配对规则(else总是与上面最近未配对的if配对);分支结构的嵌套。

例如:

下列的语句中哪个正确,哪个错误?

if(x>0)printf(“%f”,x)elseprintf(“%f”,-x);/*F*/

if(x>0){x=x+y;printf(“%f”,x);}elseprintf(“%f”,-x);/*T*/

if(x>0){x=x+y;printf(“%f”,x);};elseprintf(“%f”,-x);/*F*/

if(x>0){x=x+y;printf(“%f”,x)}elseprintf(“%f”,-x);/*F*/

例如:

if(表达式)语句

其中:

“表达式”可以是任意合法的表达式

例如:

main()

{intx=0,a=0,b=0;

switch(x){

case0:

++b;

case1:

++a;

case2:

++a||++b;

}

printf(“a=%d,b=%d\n”,a,b);

}

程序输出结果为:

(a=2,b=1)

表达式max=a>b?

a:

b改用if语句表示为:

if(a>b)max=a;elsemax=b;

语句:

k=(a

((a

a:

c):

((b

b:

c);等价的if语句是:

if(a

if(a

elsek=c;

else

if(b

elsek=c;

练习题P70、71的第4题、第6题。

第4题:

编程实现求分段函数y=f(x)的值,x由键盘输入。

其中

main()

{

floatx,y;

printf("inputx:

");

scanf("%f",&x);

if(x<1.0)y=x*x-1;

elseif(x>1.0)y=x*x+1;

elsey=x*x;

printf("f(%f)=%f\n",x,y);

}

第五章循环结构

while、do-while、for语句的语法、流程控制功能及其它们的等价写法;break、continue语句的功能;循环的嵌套。

阅读理解以下程序的功能:

main()

{inti,j,n;

longs,sum;

scanf("%d",&n);

for(i=1,sum=0;i<=n;i++)

{for(j=1,s=0;j<=i;j++)

s+=j;

sum+=s;

}

printf("sum=%ld\n",sum);

}

main()

{inti,n;

longs,sum;

scanf("%d",&n);

for(i=1,s=0,sum=0;i<=n;i++)

{s+=i;

sum+=s;

}

printf("sum=%ld\n",sum);

}

编程打印由“*”组成的上三角形图形:

 

编程打印由“*”组成的下三角形图形:

 

例如:

与程序段:

i=1;sum=0;while(i<=10){sum+=i;i++;}等价的语句有:

A、B、C

A)for(i=1,sum=0;i<=10;i++)sum=sum+i;

B)i=0,sum=0;do{i++;sum+=i;}while(i<10);

C)for(i=1,sum=0;i<=10;sum+=i,i++);

D)i=0;sum=0;while(i++<=10)sum+=i;

例如:

下面程序的输出结果是什么?

#include

voidmain()

{  inti;

  intj;

  for(i=1;i<=9;i++)

  {

        for(j=1;j<=i;j++)

        {

          printf("%d*%d=%d\t",i,j,i*j);              

        }

        printf("\n");

  }

}

输出结果:

1*1=1

2*1=2 2*2=4

3*1=3 3*2=6 3*3=9

…………

9*1=9 9*2=18 9*3=27 9*4=36 9*5+45 9*6=54 9*7=63 9*8=72 9*9=81

例:

以下程序实现什么功能?

main()

{

intn,t,number=100;

floata=2,b=1,s=0;

for(n=1;n<=number;n++)

{s=s+a/b;

t=a;a=a+b;b=t;

}

printf("sumis%f\n",s);

}

例:

计算数列n-n/2+n/3-n/4+……-n/100。

main()

{

inti;

floatn,sum,temp;

printf("Inputn:

");scanf("%f",&n);

sum=0;

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

{temp=n/i;

sum+=temp;

n=-n;

}

printf("n-n/2+n/3-....-n/100=%f\n",sum);

}

第六章函数、存储类别

函数的定义方法;参数的传递机制;嵌套调用和递归调用;变量的作用域和生命期;预处理命令(重点是宏替换)。

问题:

原来直接在main()函数实现的功能,如何把它写成子函数,注意参数该如何设计。

例如:

函数的返回值类型由什么决定?

(由函数类型决定)

以下正确的函数定义形式是:

(A)

A)intfun(intx,inty)

B)doublef1(intx,y)

C)doublefun(intx,inty);

D)intf1(intxinty)

函数中未指定存储类别的局部变量,其隐含的存储类别为:

(auto)

练习题P122第8题

#include

voidfun()

{charc;

if((c=getchar())!

='\n')

fun();

putchar(c);

}

main()

{fun();}

当从键盘输入:

uvwxyz后按回车键,则输出结果为:

zyxwvu

 

例如:

#definePT3

#defineS(X)PT*X*X

main()

{inta=1,b=2;

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

}

运行结果不是27,而是7

#defineZero(X)X-X

intmain()

{

printf("%d\n",2*Zero(4-3));

}

运行结果不是0,而是-2

#defineX10

#defineAprintf("%d,",X)

main()

{A;

getch();

}

运行结果:

10

 

第七章数组

数组概念;一维、二维数组的定义和初始化;数组的应用;几个经典算法(冒泡法排序、查找、查找最值);字符串与字符数组的关系与区别。

例如:

main()

{

inti,x[3][3]={10,20,30,40,50,60,70,80,90};

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

printf("%4d",x[2-i][i]);

}

运行结果:

705030

例如:

以下对二维数组a的说明中正确的是:

(B)

A)inta[3][];B)doublea[2][4];

C)floata(3,4);D)floata(3)(4);

练习题P154第14题

#include

#include

main()

{

chara[20]="cehjknptw";

chars[]="fdla";

inti,j,k;

for(k=0;s[k]!

='\0';k++)

{j=0;

while(s[k]>=a[j]&&a[j]!

='\0')

j++;

for(i=strlen(a);i>=j;i--)

a[i+1]=a[i];

a[j]=s[k];

}

printf("%s\n",a);

}

例如:

下面程序的输出结果为?

#include

main()

{

charstr1[30]="student\'\n\101";

charstr2[]="student\0abcd";

printf("lengthofstr1:

%sis%d,sizeofstr1is%d\n",str1,strlen(str1),sizeof(str1));

printf("lengthofstr2:

%sis%d,sizeofstr2is%d\n",str2,strlen(str2),sizeof(str2));

}

/*注:

strlen()函数是求实参字符串的长度,sizeof是一个单目运算符,功能是求一个变量或一种数据类型所占用的存储空间的长度。

*/

第八章指针

指针的概念;指针作函数参数的特点;数组与指针的关系;数组名作为函数参数;指针的运算;字符串与指针;指针数组和指向指针的指针;函数指针;malloc函数的用法。

注意:

对二维数组a[][],a[i][j]等价于*(*(a+i)+j)也等价于*(a[i]+j)并且等价于

(*(a+i))[j],去掉外层的“*”则变成列地址。

例如:

下列语句中不正确的是:

(A)

A)charstr[20];str=”IloveChina!

”;B)charstr[20]=”IloveChina!

”;

C)char*str;str=”IloveChina!

”;D)char*str=”IloveChina!

”;

例如:

main()

{

charw[][5]={"ABCD","EFGH","IJKL","MNOP"};

intk;

for(k=1;k<3;k++)

printf("%s",w[k]+k);

}

运行结果:

FGHKL

 

注意下面三个函数功能的不同(哪个函数能实现交换实参?

):

swap1(intx,inty)

{inttemp;

temp=x;x=y;y=temp;

}

swap2(int*p1,int*p2)

{inttemp;

temp=*p1;*p1=*p2;*p2=temp;

}

swap3(int*p1,int*p2)

{int*p;

p=p1;p1=p2;p2=p;

}

例如:

voidf(char*s,char*t)

{

while(*s++=*t++);

}

这个函数的功能是实现字符串拷贝。

voidsort1(int*a,intn)/*冒泡法排序函数*/

{inti,j,temp;

for(i=0;i

for(j=n-1;j>i;j--)

if(a[j-1]>a[j])

{temp=a[j-1];a[j-1]=a[j];a[j]=temp;}

}

例如:

main()

{char*str[]={"Pascal","Cpp","Basic","Fortran"};

char**p;

for(p=str;p

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

}

这个程序的功能是输出4个字符串。

若输出修改为printf(“%s\n”,*p+2);结果为?

若输出修改为printf(“%c\n”,*(*p+2)+1);结果为?

例如:

main()

{intx[5]={2,4,6,8,10},*p,**pp;

p=x+2;pp=&p;

printf(“%d”,*(p++));

printf(“%3d\n”,**pp);

}

输出结果为:

68

注意:

int(*p)();int*p[4];int(*p)[4];int*p();定义的p分别是什么?

使用子函数用冒泡排序法对数组进行排序(思考如何编写向有序数组中插入一个元素?

如何编写从有序数组中删除一个指定的元素?

#include

voidsort(inta[],intn)

{inti,j,temp;

for(i=0;i

{for(j=n-1;j>i;j--)

if(a[j-1]>a[j])

{temp=a[j-1];

a[j-1]=a[j];

a[j]=temp;

}

}/*for*/

}

voidprint(inta[],intn)

{inti;

for(i=0;i

printf("%d",a[i]);

printf("\n");

}

main()

{inti,n,a[100];

scanf("%d",&n);

for(i=0;i

scanf("%d",&a[i]);

sort(a,n);

print(a,n);}

例:

理解int*p=(int*)malloc(sizeof(int));scanf("%d",p);的含义。

第九章库函数

了解常用库函数的功能及其函数原型。

第十章结构,杂类

结构类型的定义;结构类型变量和指针;结构类型中成员的访问方法;枚举类型。

例如:

structstudent

{intage;

intnum;

}std,&p;

p=&std;

对结构体变量std中成员age的引用方式正确的写法有:

std.age或p->age或(*p).age

例如:

若有定义:

structaa{intm,n;}s[2]={{1,2},{3,4}},*p=s;则表达式++p->m的值是:

2;(++p)->n的值是:

4

第11章文件

文件的概念与分类;缓冲文件系统的打开、读写和关闭;文件指针;读写位置指针;相关的函数(原型及各参数的意义)。

例如:

当调用函数fopen()发生错误时,函数的返回值是:

NULL(即是0)

例如:

设有以下结构体类型:

structst

{charname[8];

intnum;

floats[4];

}student[50];

并且结构体数组student中的元素都已有值,若要将这些元素写到磁盘文件指针fp所指向的二进制文件中,使用语句:

fwrite(student,50*sizeof(structst),1,fp);或

fwrite(student,sizeof(structst),50,fp);或

fwrite(student,sizeof(student),1,fp);

某班有N个学生,有M门课的成绩。

从键盘输入每个学生的学号、姓名和各门课成绩,计算每个学生M门课的平均成绩。

并将所有这些数据存放在磁盘文件”chengji.txt”中。

(N取30,M取5)

#defineN30

#defineM5

#include

main()

{

structstudent

{charnum[9];

charname[12];

intscore[M];

floatave;};

structstudentstu[N];

FILE*fp;

intk,i;

if((fp=fopen("chengji.txt","w"))==NULL)

{printf("Cannotcreatfile!

\n");exit(0);}

printf("Input%dstudentdata:

\n",N);

for(k=0;k

{printf("InputNo:

%dstudentdata:

\n",k+1);

printf("Inputnum:

");scanf("%s",stu[k].num);

printf("Inputname:

");scanf("%s",stu[k].name);

printf("Input%dscore:

",M);

stu[k].ave=0;

for(i=0;i

{scanf("%d",&stu[k].score[i]);

stu[k].ave=stu[k].ave+stu[k].score[i];}

stu[k].ave=stu[k].ave/M;

fprintf(fp,"%9s%12s%4d%4d%4d%4d%4d%8.2f\n",stu[k].num,stu[k].name,

stu[k].score[0],stu[k].score[1],stu[k].score[2],stu[k].score[3],stu[k].score[4],stu[k].ave);

}

getch();

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1