期末复习c语言

2024-07-26

期末复习c语言(精选6篇)

期末复习c语言 第1篇

《C语言程序设计》期末复习指导

一、考核说明

《C语言程序设计》课程是一门基础必修课程。本课程是学习数据结构、操作系统、计算机网络、数据库、软件工程等课程的先修课,在整个专业教学体系中占有非常重要的作用。

本课程主要介绍C语言的基本语法规则和程序设计方法,包括C语言程序结构和上机运行程序的基本过程,各种数据类型的常量和变量的定义与表示,各种运算符和表达式的表示与应用,各种流程控制语句的定义与作用,各种常用函数的定义格式与调用方法,用户函数的定义与调用,数组、指针、结构、文件等数据类型的定义与使用,结构化和模块化的程序设计方法等内容。

学习《C语言程序设计》需要理论与实践相结合,只注重书本知识是空洞的,只注重上机实践是迷茫的,必须两者结合循序渐进,通过书本知识指导实践,通过实践加深理解和吸收知识,以及运用知识解决问题的能力。

现将该课程考核的有关问题说明如下: 1.考核对象(本科)的学生。2.命题依据

本考核说明以《C语言程序设计》课程的教学大纲为依据编制。本考核说明是考试命题的依据。3.考核要求

本课程是以掌握C语言知识并解决实际程序设计问题为目的。主 要考核学生对C语言知识的掌握程度和对解决一般问题的程序设计能力。对C语言知识要在理解和应用的基础上加强记忆和掌握,不能死记硬背。

本课程教学内容包括了解、理解和应用三个层次,并且逐步递进,具体含义如下:

(1)了解层次:记忆C语言中的基本概念和语法规则;(2)理解层次:掌握C语言中的每个语法成分和语句的定义格式、含义及作用;

(3)应用层次:利用C语言,结合实际解决问题的需要,能够分析和编写程序。4.命题原则

(1)在教学大纲和考核说明所规定的知识范围内命题。在教学知识范围之内,需要灵活运用才能够解决问题的试题不属于超纲。(2)试题的取材要求覆盖面广、区分度高。

(3)试题兼顾各个能力层次,了解和理解约占40%,应用约占60%。(4)试题的难易程度和题量适当,按难易程度分为四个层次:容易占20%,较易占40%,较难占30%,难占10%。题量安排以平时能够独立完成作业者,能在规定的考试时间内做完并有一定时间检查为原则。

5.试题题型

选择:根据题意,从四种可选择的答案中选择合适的一种答案。

填空:根据题意,在画有横线或空白括号内填写合适内容。写出程序运行结果:根据所给的C语言程序,写出运行后的输出结果。

按程序功能填空:根据所给的C语言程序或函数,在空格处填上适当的语句使程序完善。

编写程序或函数:根据所给出的题目要求,编写出相应的程序或函数模块。

第二部分 考核内容及要求

第一 C语言概述

考核内容(知识点):

1.程序、程序文件和函数的概念及其相互之间的关系。2.函数的定义格式和作用,主函数的特殊地位和作用。3.C语言简单语句和复合语句的语法格式。4.#include预处理命令的格式与作用。

5.头文件的文件名格式、在程序中的使用方法和作用。6.程序中两种注释标记的写法和作用。

7.标准输出函数printf()和标准输入函数scanf()的定义格式和具体应用。

8.C语言程序文件名、编译后生成的目标文件名和连接后生成的可执行文件名的命名规则,以及上机输入、编辑、编译、连接和运行程序的过程。

考核要求:

要求了解和理解以上内容。

第二 数据类型和表达式

重点考核的内容(知识点): 1.C语言中的数据类型的分类。

2.各种整数类型的关键字表示,存储空间的大小和值域范围。3.整型变量的定义和初始化,十进制整型常量的表示。4.字符类型的关键字表示,存储空间的大小和值域范围;字符型常量的表示,回车、换行、单引号、双引号、反斜线、空字符等特殊字符的表示。

5.字符型变量的定义和初始化,字符型与整型的关系。6.枚举的概念,枚举类型的定义,枚举变量的定义和初始化,枚举常量与整型常量的对应关系。

7.各种实数类型的关键字表示,存储空间的大小和有效位数。8.单精度和双精度实数的定点表示和浮点(科学)表示,实型变量的定义和初始化。

9.加、减、乘、除、取余、赋值、增

1、减

1、取数据存储长度等算术运算符的表示、含义、运算对象个数和运算优先级。10.关系运算符的定义和关系表达式的计算,逻辑运算符的定义与逻辑表达式的计算,根据任意表达式的值判断其逻辑值的方法。

一般考核的内容(知识点):

1.整型常量的八进制和十六进制表示。2.符号常量的两种定义方法,它们之间的区别。3.位操作符、复合赋值操作符的含义与使用。4.求关系或逻辑表达式的相反表达式的方法。

考核要求:

理解和掌握以上重点考核的内容,了解和理解以上一般考核内容。

第三 流程控制语句

考核内容(知识点):

1.C语言程序中的顺序、分支和循环这三种基本结构,每种结构的执行过程。

2.简单if语句、带else子句的if语句、多分支结构的if语句的定义格式、执行过程和在处理问题中的具体应用。

3.switch语句的定义格式、执行过程和在处理问题中的具体应用。

4.if语句与switch语句之间的功能比较,if语句与switch语句之间的转换。

5.for循环、while循环和do-while循环的定义格式、执行过程和在处理问题中的具体应用。6.三种循环结构不同特点。

7.Break语句在switch语句和各种循环语句中的作用,continue语句在各种循环语句中的作用。

8.goto语句和return语句的定义格式和功能。考核要求:

理解和掌握本章的所有内容,并能够灵活应用。

第四 数组和字符串

考核内容(知识点):

1.一维数组的含义、定义格式及初始化格式。

2.数组长度、数组元素、元素下标的含义,访问数组元素的语法格式,下标运算符的操作对象和操作结果。

3.数组元素的下标变化范围,数组元素所占存储空间大小和整个数组所占存储空间大小的计算,各元素对应存储空间的排列情况,每个元素的存储地址的计算。

4.利用一维数组存储数据,按元素值的升序或降序排列数据,按给定条件或功能对数组元素依次进行访问和处理。5.二维数组的含义、定义格式及初始化格式。

6.二维数组的行数和列数的概念,数组长度(即所含元素个数)的计算。

7.访问二维数组元素的语法格式,每个下标运算符的操作对象和操作结果。

8.二维数组中的所有元素在存储空间中的排列情况,每个元素的存储地址的计算。

9.利用二维数组存储矩阵数据,按给定条件或功能对数组元素依次进行访问和处理。10.字符串常量的定义格式,字符串的存储格式,字符串长度的概念。

11.一维字符数组、二维字符数组与字符串之间的关系,一维字符数组与二维字符数组的初始化。

12.strlen、strcpy、strcmp、strcat等字符串函数的声明格式及功能。

13.利用typedef语句定义数据类型的方法。

考核要求:

了解和理解一维数组、二维数组和字符串的概念的使用方法,会利用它们存储和处理数据。

第五 指针

考核内容(知识点):

1.指针的概念,指针变量的定义和初始化。

2.指针赋值(=)、取对象(变量)地址(&)、访问指针所指对象(*)、指针比较(==、!=、>、<等)、指针算术运算(+、-、+=等)、指针增1或减1(++、--)等各种运算的含义和使用。3.数组名的指针含义。

4.一维数组元素的下标访问方式与指针访问方式及其之间的转换。

5.二维数组元素的下标访问方式与指针访问方式及其之间的转换。6.动态存储分配函数malloc()和calloc()以及动态存储空间释放函数free()的定义格式与调用方法。

考核要求:

理解指针的概念,掌握利用指针访问简单数据和数组元素的方法,掌握进行动态存储分配与释放的方法。

第六 函数

考核内容(知识点): 1.函数的定义格式。

2.函数调用表达式的语法格式及执行过程。

3.函数定义中形参变量的作用及实虚参数结合的过程。5.函数声明(原型)语句的定义格式及作用。

6.形参为一维数组或二维数组时的说明格式,调用时数组参数传递的过程。

7.变量的作用域的概念和含义;系统对全局变量、static变量、局部变量的建立和初始化过程。

8.函数的递归调用的概念和递归函数的具体执行过程。9.头文件在程序文件中的位置和作用。

考核要求:

掌握用户自定义函数的定义、声明与调用方法,掌握函数调用中一般参数、指针参数、数组参数的传递,以及函数体执行和返回的过程。

第七 结构与联合考核内容(知识点):

1.结构的概念,结构类型的定义格式,结构类型的声明(即不完整定义)格式。

2.结构对象(变量)的各种定义格式和初始化,结构大小的计算,结构对象和结构数组对象的动态分配和初始化。

3.结构赋值,结构成员的直接访问和间接访问,利用结构数组保存和处理数据。

4.结构和结构指针作为函数参数和返回值类型的具体应用。5.链表的概念,链表中结点的结构,链表的建立和遍历的方法和算法。

6.联合的概念,联合类型的定义格式,联合对象的定义和初始化,联合的存储结构及大小的计算,匿名联合的特点。

考核要求:

理解和掌握结构和联合类型的特点以及数据成员的访问方法,了解和理解链表中结点的结构和建立与访问链表的方法,以及结构与联合嵌套定义的概念。

第八

文件

考核内容(知识点):

1.数据文件的概念。

2.文件的打开和关闭方法。

3.文件的各种访问方式的表示。

4.对字符文件进行的输入和输出数据的方法。

5.对字节文件进行的输入和输出数据的方法。考核要求:

了解和理解文件的有关概念和访问方式,会利用字符或字节文件保存和处理数据。

期末复习c语言 第2篇

例10.4 指向结构体数组的指针的应用

#include struct student { int num;char name[20];char sex;int age;};struct student stu[3]={{10101,″Li Lin″,′M′,18},{10102,″Zhang Fun″,′M′,19},{10104,″WangMing″,′F′,20}};void main(){ struct student *p;

printf(″No.Name

sex

agen″);

for(p=stu;p<stu+3;p++)

printf(″%5d %-20s %2c %4dn″,p->num,p->name,p->sex,p->age);

} 运行结果:

No.Name

sex

age

10101

LiLin

1010Zhang Fun M

10104

WangMing F

例10.5 有一个结构体变量stu,内含学生学号、姓名和3门课程的成绩。要求在main函数中赋予值,在另一函数print中将它们输出。今用结构体变量作函数参数。#include #include #define FORMAT ″%dn%sn%fn%fn%fn″ struct student { int num;

char name[20];

float score[3];};

#include #include #define FORMAT ″%dn%sn%fn%fn%fn″ struct student { int num;

char name[20];

float score[3];};

void main(){ void print(struct student);

struct student stu;

stu.num=12345;

strcpy(stu.name,″LiLin″);

stu.score[0]=67.5;

stu.score[1]=89;

stu.score[2]=78.6;

print(stu);} void print(struct student stu){ printf(FORMAT,stu.num,stu.name,stu.score[0],stu.score[1],stu.score[2]);

printf(″n″);} 运行结果: 12345 Li Li 67.500000 89.000000 78.599998 例10.6 将上题改用指向结构体变量的指针作参数。#include struct student { int num;

char name[20];

float score[3];}stu={12345, ″LiLi″,67.5,89,78.6};void main(){ void print(struct student *);

print(&stu);}

void print(struct student *p){ printf(FORMAT,p->num,p->name,p->score[0],p->score[1],p->score[2]);

printf(″\n″); } 运行结果: 12345 Li Li 67.500000 89.000000 78.599998  有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程总成绩、平均分数)。 10.1:# include

struct student 

{ char num[6];

char name[8];

int score[3];

float avr;

}stu[10];

 main()

{ int i,j,max=0,maxi=0,sum=0;

float average=0;

for(i=0;i<10;i++)

{ scanf(“%s%s”,stu[i].num,stu[i].name);

for(j=0;j<3;j++)

scanf(“%d”,&stu[i].score[j]);

}

 for(i=0;i<10;i++)

{ sum=0;

for(j=0;j<3;j++)

sum+=stu[i].score[j];

stu[i].avr=sum/3.0;

average+=stu[i].avr;

if(sum>max){ max=sum;maxi=i;} 

} 

average/=10;

printf(“average=%6.2fn”,average);

printf(“The highest is:%s,%s,%d,%f”,stu[maxi].num,stu[maxi].name,max,stu[maxi].avr); }

指针

例9.4 输入a、b、c3个整数,按大小顺序输出。#include void main()

{void exchange(int *q1,int *q2,int *q3);int a,b,c,*p1,*p2,*p3;

scanf(″%d,%d,%d″,&a, &b, &c);

p1=&a;p2=&b;p3=&c;

exchange(p1,p2,p3);

printf(″%d,%d,%d\n″,a,b,c);

void exchange(int *q1,int *q2,int *q3){ void swap(int *pt1,int *pt2);

if(*q1<*q2)swap(q1,q2);

if(*q1<*q3)swap(q1,q3);

if(*q2<*q3)swap(q2,q3);

void swap(int *pt1,int *pt2)

{int temp;

temp=*pt1;

*pt1=*pt2;

*pt2=temp;

score 3

运行情况如下:

9,0,10↙ 10,9,0

例9.10:有一个班,3个学生,各学4门课,计算总平均分数以及第n个学生的成绩。这个题目是很简单的。只是为了说明用指向数组的指针作函数参数而举的例子。用函数average求总平均成绩,用函数search找出并输出第i个学生的成绩。#include void main()

{ void average(float *p,int n);

void search(float(*p)[4],int n);

float score[3][4]={{65,67,70,60},average(*score,12); /*求12个分数的平均分*/

search(score,2);

/*求序号为2的学生的成绩*/ }

void average(float *p,int n){ float*p_end;

float sum=0,aver;

p_end=p+n-1;

for(;p<=p_end;p++)

sum=sum+(*p);

aver=sum/n;

printf(″average=%5.2f\n″,aver); }

void search(float(*p)[4],int n)

/ * p是指向具有4个元素的一维数组的指针 */ {int i;

printf(″the score of No.%d are:n″,n);

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

printf(″%5.2f″,*(*(p+n)+i));}

程序运行结果如下: average=82.25

The score of No.2 are:

90.00 99.00 100.00 98.00

例9.11: 在上题基础上,查找有一门以上课程不及格的学生,打印出他们的全部课程的成绩。

#include void main()

{void search(float(*p)[4],int n);

float score[3][4]={{65,57,70,60},{58,87,90,81},{90,99,100,98}};

{80,87,90,81},{90,99,100,98}};

search(score,3);

void search(float(*p)[4],int n){int i,j,flag;

for(j=0;j<n;j++)

{flag=0;

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

if(*(*(p+j)+i)<60)flag=1;

if(flag==1)

{ printf(“No.%d fails,his scores are: \n”,j+1);

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

printf(″%5.1f″,*(*(p+j)+i));

printf(″\n″);

程序运行结果如下:

No.1 fails, his scores are:

65.0

57.0

70.0

60.0 No.2 fails, his scores are:

58.0 87.0 90.0 81.0 例9.17:求a和b中的最大者。#include void main()

{int max(int,int);int a,b,c;

scanf(″%d,%d″,&a,&b);

c=max(a,b);printf(″a=%d,b=%d,max=%dn″,a,b,c);

int max(int x,int y){ int z;

if(x>y)z=x;

else

z=y;

return(z);

例9.18:有若干个学生的成绩(每个学生有4门课程),要求在用户输入学生序号以后,能输出该学生的全部成绩。用指针函数来实现。

#include void main()

{float score[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};

float *search(float(*pointer)[4],int n);

float*p;

int i,m;

printf(″enter the number of student:″);

scanf(″%d″,&m);

printf(″The scores of No.%d are:n″,m); p=search(score,m);

for(i=0;i<4;i++)printf(″%5.2ft″,*(p+i));

float *search(float(*pointer)[4],int n){ float *pt;

pt=*(pointer+n);

return(pt);

运行情况如下:

enter the number of student:1↙ The scores of No.1 are:

56.00

89.00

67.00

88.00 例9.19: 对上例中的学生,找出其中有不及格课程的学生及其学生号。#include void main()

{ float score[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};

float search(float(*pointer)[4]);

float*p;

int i,j;

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

{p=search(score+i);

if(p==*(score+i))

{ printf(″No.%d scores:″,i);

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

printf(″%5.2f″,*(p+j));

printf(″n″);}

float *search(float(*pointer)[4]){ int i;

float *pt;

pt=*(pointer+1);

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

if(*(*pointer+i)<60)pt=*pointer;

return(pt);

} 运行情况如下:

No.1 scores:56.00 89.00 67.00 88.00

No.2 scores:34.00 78.00 90.00 66.00 

例9.20:将若干字符串按字母顺序(由小到大)输出。#include #include void main()

{void sort(char *name[ ],int n);

void print(char *name[ ],int n);

char *name[ ]={“Follow me”,“BASIC”,“Great Wall″,”FORTRAN“,”Computer design“};int n=5;

sort(name,n);

print(name,n);

void sort(char *name[ ],int n){char *temp;

int i,j,k;

for(i=0;i<n-1;i++){k=i;

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

if(strcmp(name[k],name[j])>0)k=j;

if(k!=i)

{ temp=name[i];

name[i]=name[k];

name[k]=temp;}

void print(char *name[ ],int n){ int i;

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

printf(″%sn″,name[i]);

} 运行结果为: BASIC Computer design FORTRAN Follow me Great Wall 作业:(提交上机报告)输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:①输入10个数;②进行处理;③输出10个数。# include main()

{ void input(int number[10]);

void max_min_value(int array[10]);

void output(int array[10]);

int number[10];input(number);max_min_value(number);output(number);

} void input(int number[10])

{ int i;

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

scanf(“%d”,&number[i]);} void max_min_value(int array[10])

{ int *max,*min,*p,*array_end;

array_end=array+10;

max=min=array;

for(p=array+1;p

if(*p>*max)max=p;

else if(*p<*min)min=p;

*p=array[0];array[0]=*min;*min=*p;

*p=array[9];array[9]=*max;*max=*p;

} void output(int array[10])

{ int *p;

for(p=array;p<=array+9;p++)

printf(“%4d”,*p); }

数组和函数的组合

例8.12 有一个一维数组,内放10个学生成绩,写一个函数,求出平均分、最高分和最低分。#include float Max=0,Min=0;

/*全局变量*/ void main()

{float average(float array[ ],int n);

float ave,score[10];

int i;

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

scanf(″%f″,&score[i]);

ave= average(score,10);

printf(″max=%6.2f\nmin=%6.2f\n

average=%6.2f\n″,Max,Min,ave);

}

float average(float array[ ],int n)

/*定义函数,形参为数组*/ { int i;

float aver,sum=array[0];

Max=Min=array[0];

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

{if(array[i]>Max)Max=array[i];

else if(array[i]

sum=sum+array[i];

aver=sum/n;

return(aver);

例8.18 有一个含若干字符的字符串,今输入一个字符,要求程序将字符串中该字符删去。用外部函数实现。file1.c(文件1)#include void main()

{ extern void enter_string(char str[]);

extern void detele_string(char str[],char ch);

extern void print_string(char str[]);

char c;

char str[80];enter_string(str);

scanf(”%c“,&c);

detele_string(str,c);

print_string(str);

} file2.c(文件2)#include void enter_string(char str[80]){

gets(str);}

file3.c(文件3)

void delete_string(char str[],char ch){ int i,j;

for(i=j=0;str[i]!=';i++)

if(str[i]!=ch)

str[j++]=str[i];

str[i]=';} file4.c(文件4)#include void print_string(char str[]){

printf(”%sn",str);}

运行情况如下:

abcdefgc↙

(输入str)

c↙ 

(输入要删去的字符)abdefg

(输出已删去指定字符的字符串)

8.1:判断m是否是素数。(用函数实现)#include main()

{ int f(int m);

int m,n;

scanf(“%d”,&m);

n=f(m);

if(n)printf(“%d is a prime numbern”,m);

else printf(“%d is not a prime numbern”,m);

}

int f(int m)

{ int i,k,p;

k=sqrt(m);

for(i=2;i<=k;i++)

if(m%i==0)break;

if(i>=k+1)p=1;

else p=0;

return p;

}

8.2:用起泡法对10个数排序。(用函数实现)

#include main()

{ void sort(int array[],int n);

int a[10],i;

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

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

sort(a,10);

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

printf(“%4d”,a[i]);} void sort(int array[],int n)

{ int i,j,t;

for(i=0;i

for(j=0;j<9-i;j++)

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

{ t=a[j];a[j]=a[j+1];a[j+1]=t;}

}

8.3:用选择法对10个数排序。(用函数实现)#include main()

{ void sort(int array[],int n);

int a[10],i;

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

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

sort(a,10);

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

printf(“%4d”,a[i]);} void sort(int array[],int n)

{ int i,j,k,t;

for(i=0;i

{ k=i;

for(j=i+1;j

if(array[j]

t=array[k];array[k]=array[i];array[i]=t;

}

浅谈C语言及C语言学习方法 第3篇

学习的目的必须明确, 目的不明确就没办法学好, 学习起来就没有动力。

C语言是目前被广泛使用的教学语言, 功能强大、应用广泛, 集高级编程语言和汇编语言的特点于一身, 既可以用来编写系统软件, 也可以用来编写应用软件, 例如要进行一个嵌入式项目, 或者需要进行服务器端开发, 或者写一个性能相关的组件等等, C语言都是比较好的选择。目前市面上的许多软件也是在C语言的平台上开发出来的, 因而学好C语言具有很重要的意义。另外C语言是工程实践性很强的语言, 是实实在在从项目需要中产生的, 伴随着Unix的兴起而流行, 语义简明清晰, 功能强大而不臃肿, 简洁而不简单。另外也可以在C++的使用过程中使用C语言的思考方式, 汲取C语言简洁明快清晰的设计思路, 对编程设计水平会有很大的提高。

C语言简洁紧凑、灵活方便、可移植性强, 程序的书写比较自由, 语法限制不严格。C语言相比C++的优点之一就是不会在私底下产生一些莫名其妙的额外产物, 这点在编写操作系统这类要求优化性能的情景下尤为重要。C语言本身只提供必要的语言特性, 复杂一点的功能如文件处理、数学计算等等都以库函数方式提供。这种简洁性也让C语言的可移植性、便携性特别优秀, 也使得很多嵌入式系统依然使用C语言作为主要编程工作语言。

C语言运算符丰富, 功能强大, 应用广泛。它是一个比较少见的应用领域极为广泛的语言。在编程过程中可以使用各种运算符, 可以实现其他很多高级语言无法实现的功能。另外还具有强大的图形功能。

C语言程序层次分明, 设计思路清晰。结构式的语言特点使代码和数据分割, 层次清晰, 便于使用和维护。

由于C语言的这些特点和优势, 使其成为理工科必修公共课之一, 也是编程者首先学习的程序设计语言。

二、如何学习C语言

学校十分重视C语言的学习, 越来越多的人想掌握这门语言, 但是大部分人反应C语言抽象难以理解, 枯燥难以掌握, 经常是一个学期下来毫无收获, 对C语言没有一个整体的认识, 连一个简单的小程序也写不好。其实初学者认为C语言复杂难学是人之常情, 况且C语言又需要一定的数学基础, 这对高职高专的学生来讲, 是有些困难。然而只要具备一定的编程经验, 再掌握一些编程技巧, 就可以有效的提高编程的效率和能力。

1、多看书, 看懂理解基本知识

教材一般都涵盖了C语言的方方面面, 从基础知识到应用实例都讲述的非常全面, 举例也都很经典。不要小看一本教材, 其实教材是学习的第一步, 是基础, 只有从基础开始, 才能进一步提高能力, 若无基础, 何谈提高和技巧。

C语言涉及的主要内容包括:运算符及数据结构;变量的作用域和存储类别、函数及函数的调用、数组及数组的应用、指针、文件、链表等。学习C语言应首先较好的掌握好这些重点难点内容, 以及一些细节、易错的地方。这会使对C的运用更加得心应手。

2、多动手, 在实践中提升能力

C语言是实践性很强的课程。只有通过大量的上机练习, 亲自动手试一试, 才能消化理论知识, 加深对理论知识的理解, 像基本数据类型, 三种基本结构 (顺序结构、循环结构、选择结构) 这些东西不能死记硬背, 亲自动手编写一些简单实例更好。

一开始的练习, 可以亲自动手把教材上的例子打一打, 运行一下程序是否正确, 有什么问题自己亲自调试。在这一步要基本掌握C语言编程设计的基本方法, 包括新建、打开、保存、关闭C程序, 熟练地输入、编辑C程序, 养成良好的C语言编程风格。

之后可以在老师的指导下, 编写一些小程序, 这类任务一般是在第一步输入的C程序的基础上进行一些修改, 扩充其功能而来的, 相对来说是比较简单的任务, 基本是模仿教材范例编写, 举一反三。编写好之后运行一下程序, 看一看程序结果发生了什么变化, 分析结果变化的原因, 加深对所学知识点的理解。事实上这和验证教材上的实例是同步进行的, 照搬教材实例可加深知识的记忆, 改造教材实例可加深对知识的理解, 二者相辅相成, 相互促进。

无论是编写怎样的程序, 都要多调试程序, 以增强自己调试程序的能力, 教材中都有C语言初学者易犯的错误, 按照易出错的类型, 将教材中的正确的程序改成错误的程序, 运行一下程序, 看出现的错误信息提示, 并记下错误信息, 再将程序改成正确的, 运行一下程序。这样反复修改, 就能够学习C语言程序发生错误的原因和修改错误的能力。修改C语言语法错误时要注意以下两点:

(1) C语言简洁紧凑、灵活方便, 程序的书写比较自由, 语法限制不严格。因此错误信息定位不是特别精确。例如, 当提示第50行发生错误时, 如果在第50行没有发现错误, 从第50行开始往前查找错误并修改之。

(2) 一条语句错误可能会产生若干条错误信息。只要修改了这条错误, 其他错误会随之消失。一般情况下, 第一条错误信息最能反映错误的位置和类型, 所以调试程序时务必根据第一条错误信息进行修改, 修改后, 立即运行程序, 如果还有很多错误, 要一个一个地修改, 也就是说, 每修改一处错误要运行一次程序。

调试程序是一种实践性很强的事, 光纸上谈兵是永远学不会调试程序的。面对错误提示, 能快速发现错误并改正错误, 是需要实践、实践再实践积累出来的。

3、多利用网络资源

毕竟老师讲授的知识有限, 课堂学习时间有限, 自己可以在课余时间通过网络获取更多更广的资料。比如想全面了解C语言的来龙去脉, 比如想弄清很多编程术语的解释, 都可以在网上获取答案。也可以注册一个编程者论坛或是编程者联盟的账号, 当你对某个函数或者关键字不是很理解的时候, 就可以去搜索资料, 与其他程序员交流经验, 看看别人是怎么使用的。当你遇到无法调试的问题时, 可以在网上找到问题的解决方案, 获取到别人的帮助, 这对于学习非常便利。

4、多看代码, 研究典型的C语言程序

学习编程也需要大量阅读名家经典代码, 在看代码的时候, 要注意分析别人是如何运用编程技巧的, 看懂别人是如何解决问题的, 研究它的实现方法和程序设计技巧, 提高自己的程序设计能力。要对程序中数据结构的运用和算法进行总结和分析。初学编程者, 多读、多编、多模仿, 熟悉了, 便能编出自己的程序了。

期末综合测试题(C) 第4篇

1. 若关于x的不等式-3x+n>0的解集是x<2,则关于x的不等式-3x+n<0的解集是

()

A. x<2B. x≤2C. x>2D. x≥2

2. 在一次课堂练习中,小敏同学做了如下4道分解因式题.你认为小敏做得不够完整的一道题是()

A. x3-x=x(x2-1)B. x2-2xy+y2=(x-y)2

C. x2y-xy2=xy(x-y) D. x2-y2=(x-y)(x+y)

3. 从A地到B地的路程为m km,某汽车匀速行驶从A地到B地需t h.若汽车速度每小时加快a km,则行驶时间可以缩短()

A.h B.hC.hD.h

4. 如图1,AB∥CD,AE∥FD,AE、FD分别交BC于G、H,则图中共有相似三角形()

A. 4对 B. 5对 C. 6对D. 7对

5. 某校测量了八(1)班学生的身高(精确到1 cm),按10 cm为一段进行分组,绘制出图2所示的频数分布直方图.下列说法正确的是()

A. 该班人数最多的身高段的学生有7人

B. 该班身高低于160.5 cm的学生有15人

C. 该班身高最高段的学生有20人

D. 该班身高最高段的学生有7人

6. 有一三角形纸片ABC,已知∠A=65°,∠B=75°.将纸片的一角折叠,如图3所示,使点C落在△ABC内.若∠1=20°,则∠2为()

A. 30°B. 60°C. 20° D. 65°

二、填空题(每小题3分,共30分)

7. 如果正整数x的与2的和不小于x的一半与的和,则x的值可为.

8. 观察下列各式:2×4=32-1,3×5=42-1,4×6=52-1,…,10×12=112-1.将你猜想到的规律用只有一个字母的式子表示出来.

9. 小王在超市用24元钱买了某种品牌的牛奶若干盒.过一段时间再去该超市,他发现这种牛奶进行让利销售,每盒让利0.4元.他同样用24元钱比上次多买了2盒.若设他第一次买了x盒,那么可列方程 .

10. 如图4,△ABC中,BP ∶ PC=3 ∶ 4,PE∥AB,PD∥AC,则S△ABC ∶ S▱ADPE=.

11. 如图5,在平面直角坐标系中,已知点A(-3,0),B(0,-4),C(0,1).过C作直线l交x轴于D,使得以D、C、O为顶点的三角形与以A、B、O为顶点的三角形相似,这样的直线一共可以作出条.

12. 一组数据4,7,18,29,1,0,5,2的极差是.

13. 某职业技术学校甲、乙两个班举行电脑汉字输入比赛,参加比赛的学生每分钟输入汉字的个数经统计后填入下表:

表1

某同学根据上表得出如下结论:①甲、乙两班学生成绩的平均水平相同;②乙班优秀(每分钟输入汉字不少于100个为优秀)的人数多于甲班优秀的人数;③甲班的成绩波动比乙班的成绩波动大.上述结论正确的是(只填序号).

14. 如图6,AB∥CD,AF分别交AB、CD于A、C,CE平分∠DCF,∠1=100°,则∠2=.

15. 如图7,AB∥CD,AF交CD于E,若∠CEF=40°,则∠A=.

16. 有位同学验证了几个值就认为n2+3n+1(n为正整数)一定是质数.其实当n= 时,n2+3n+1=就不是质数,因而他的判断是错误的.

三、解答题(17~19题每题8分,20~21题每题9分,22题10分,共52分)

17. 深受海内外关注的沪杭磁悬浮交通项目2006年3月获得国务院批准.沪杭磁悬浮交通线建成后,分为中心城区段与郊区段两部分.其中中心城区段的长度约为70 km,约占全程的40%.沪杭磁悬浮列车的票价预定为每千米0.65元~0.75元,请你估计沪杭磁悬浮列车全程预定票价的范围.

18. 根据图8中所给出的长度,用因式的乘积分别表示图形中阴影部分的面积.

19. 阅读材料:

关于x的方程x+=c+的解是x1=c,x2=;x-=c-(即x+=c+)的解是x1=c,x2=-;x+=c+的解是x1=c,x2=;x+=c+的解是x1=c,x2=……

(1)请观察上述方程与其解的特征,比较关于x的方程x+=c+(m≠0)与它们的关系,猜想它的解是什么.并利用“方程的解”的概念进行验证.

(2)由上述的观察、比较、猜想、验证,可以得出结论:如果方程的左边是未知数与其倒数的倍数的和,方程右边的形式与左边完全相同,只是把其中的未知数换成某个常数,那么这样的方程可以直接求解.

请用这个结论解关于x的方程:x+=a+.

20. 如图9所示,花丛中有一盏路灯AB.在灯光下,小明在D点处的影长DE=3 m.沿BD延长线方向行走到达G点,DG=5 m,这时小明的影长GH=5 m.如果小明的身高为1.7 m,求路灯AB的高度(精确到0.1 m).

21. 某市实验中学王老师随机抽取该校八(4)班男生的身高(单位:cm)数据,整理之后制得如图10所示的频数分布直方图(每组含最低身高,但不含最高身高).

根据这个统计图,解答下列问题:

(1)写出一条你从图中获得的信息;

(2)王老师准备从该班挑选出身高差不多的16名男生参加广播操比赛,他应选择身高在哪个范围内的男生,为什么?

22. 已知AB∥CD,直线MN交AB、CD于E、F,EG、FH分别是∠MEB和∠MFD的平分线.求证:EG∥FH.

证法1:如图11(1)所示, 因AB∥CD且MN交AB、CD于E、F, 故∠MEB=∠MFD.

又∵ EG、FH分别平分∠MEB和∠MFD,

∴ ∠1=∠2.所以EG∥FH(同位角相等,两直线平行).

证法2:如图11(2)所示,延长GE到K.因AB∥CD且MN交AB、CD于E、F, 故∠AEF=∠DFE.

又∵ EG、FH分别平分∠MEB和∠MFD, ∴ EK平分∠AEF.

∴ ∠1=∠2. 所以KG∥FH(内错角相等,两直线平行).即EG∥FH.

期末C语言课程总结报告 第5篇

报告人情况:

班级: 姓名: 学号:

理论课老师姓名: 实验课老师姓名:

以下写的内容要求如下:通过程序设计课的学习,本人所学到的有关程序设计的知识回顾,学习了哪些算法,认为已经掌握的算法(不需要看书就能编)和完全没掌握的算法;在学习程序设计语言的过程中自己的经验和教训;对老师讲课和指导过程中教学态度和教学方法的看法和意见(要实事求是,意见决不会作为分数高低的依据,分别对理论课老师和实验课老师评价),对老师在今后教学的建议;对下一届同学学习本课程的建议等等。此报告在平时成绩考核时作为主要参考。

C语言期末考试编程题范文 第6篇

int a,b,c,s,i=0;

for(s=100;s<1000;s++)

{

c=s%10;

b=s/10%10;

a=s/100;

if(s==a*a*a+b*b*b+c*c*c)

{

printf(“%dt”,s);

++i;

if(i%5==0)

printf(“n”);

}

} } 2.求1+2!+3!+...+20!的和 #include void main(){ double fact=1.0,sum=0.0;int i,j;for(i=1;i<=20;i++){ for(j=1;j<=i;j++)fact*=j;sum+=fact;fact=1;} printf(“%.0fn”,sum);} 3.输入一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。#include #include void main(){ long num;int a,b,c,d;printf(“Please input the number:”);scanf(“%d”,&num);if(num<=9999||num>=100000){ printf(“%The number error!n”);exit(0);} a=num/10000;b=num/1000%10;c=num/10%10;d=num%10;if(a==d&&b==c)printf(“nYes,the %ld palindrome!n”,num);else

is is printf(“nNo,the %ld is not palindrome!n”,num);} 4.求出1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数并并按照一行5个的格式输出。

#include void main(){ int num,i=0;for(num=1;num<=1000;num++)

if(((num%7||num%11)==1)&&((num%7&&num%11)==0)){ printf(“%dt”,num);++i;if(i%5==0)printf(“n”);} } 5.编程列出200以内所有的素数,按照一行10个的格式输出,并求出所有素数的平均值,#include #include void main(){ int i,j,k=0,sum=0,avg=0;for(i=2;i<200;i++){ for(j=2;j<=sqrt(i);j++)if(i%j==0)break;if(j>sqrt(i)){ printf(“%dt”,i);++k;sum+=i;if(k%10==0)printf(“n”);} } avg=sum/k;printf(“nThe is %dn”,avg);}

average

6、编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1+1/3+1/5...+1/n #include void main(){ void odd(int n);void even(int n);int n;printf(“Please input the number:”);scanf(“%d”,&n);if(n%2)odd(n);else even(n);} void odd(int n){ float sum=0.0;float j;int i;for(i=1;i<=n;i+=2){ j=1.0/i;sum+=j;} printf(“%fn”,sum);} void even(int n){ float sum=0.0;int i;float j;if(n==0)printf(“%fn”,sum);else { for(i=2;i<=n;i+=2){ j=1.0/i;sum+=j;} printf(“%fn”,sum);} }

7、已知abc+cba=1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有 组合。

#include void main(){ int a,b,c;for(a=1;a<=9;a++)for(b=0;b<=9;b++)for(c=1;c<=9;c++)

if((100*a+10*b+c+100*c+10*b+a)==1333)

printf(“a=%d,b=%d,c=%dn”,a,b,c);}

8、用户输入12个0-100之间的整数,统计出小于60,60到79,80到100三个范围的整数各有多少个? #include #include void main(){ int i,j,k,n,num;i=j=k=0;printf(“Please input the 12 numbers with 0~100:”);for(n=1;n<=12;n++){ scanf(“%d”,&num);if(!(num>=0&&num<=100))exit(0);if(num<60)++i;else if(num<80)++j;else ++k;} printf(“nThere

are

%d numbers less than 60,%d numbers between 60 and 79,%d numbers between 80 and 100.n”,i,j,k);}

9、求这样一个三位数并输出该数字,该三位数等于其每位数字的阶乘之和。

即: abc = a!+ b!+ c!#include void main(){ int a,b,c,num;int s(int);for(num=100;num<1000;num++){ a=num/100;b=num/10%10;c=num%10;if(num==s(a)+s(b)+s(c)){ printf(“The is %dn”,num);break;} } } s(int n){ int i,sum=1;for(i=1;i<=n;i++)sum*=i;

number return sum;}

10、猜数游戏:由用户随机输入一个1位正整数数让人来猜,只能猜5次,如果人猜对了,则在屏幕上显示“You are so clever”,否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止或者5次都猜不对给出提示“Game Over”。#include #include void main(){ int num,i,n;printf(“Please input the number with 0~9 for guessing:”);scanf(“%d”,&num);system(“cls”);if(num<0||num>9)exit(0);for(i=1;i<=5;i++){ printf(“nPlease input the number you guess:”);scanf(“%d”,&n);if(num==n){ printf(“nYou are so clever!n”);break;} else if(n

have

%d

times left!n”,5-i);continue;} else { printf(“nThe number you input is large,go on please!You

have

%d

times left!n”,5-i);continue;} } if(i>5)Over!n“);}

11、设N是一个四位数,它的9倍恰好是其反序数(例如:123的反序数是321),求N的值。#include void main(){ int n,k,a,b,c,d;for(n=1000;n<=9999;n++){ a=n/1000;

printf(”Game b=n/100%10;c=n/10%10;d=n%10;k=1000*d+100*c+10*b+a;if(k==9*n)printf(“N=%dn”,n);} } 12、100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马两匹驮1担。试编写程序计算大、中、小马的数目。#include void main(){ int h1,h2,h3;for(h1=0;h1<=100;h1++)for(h2=0;h2<=100;h2++)for(h3=0;h3<=100;h3+=2){

if(h1+h2+h3==100&&3*h1+2*h2+1/2*h3==100)printf(“The horse has has

%d,middle

old horse horse

%d,young has %dn”,h1,h2,h3);} }

13、一位司机酒驾撞人逃跑。现场三人目击事件,但都没记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的;丙是位数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。(车号为4位数)#include #include void main(){ int n,a,b,c,d,i;for(n=1000;n<=9999;n++){ a=n/1000;b=n/100%10;c=n/10%10;d=n%10;i=sqrt(n);if(a==b&&c==d&&i*i==n)printf(“%dn”,n);} } 14、求S=1/(1*2)+1/(2*3)+1/(3*4)+……前50项之和并输出结果。#include void main(){ float i;float s=0;for(i=1;i<51;i++)s+=1.0/(i*(i+1));printf(“%f”,s);}

15、编程求出所有1000到3000之间能被7、11、17同时整除的整数,并求其平均值,并输出结果(结果保留两位小数)。#include void main(){ int i,k=0,sum=0;for(i=1000;i<=3000;i++)if(i%7==0&&i%11==0&&i%17==0){ sum+=i;++k;printf(“%dt”,i);}

printf(“n%d”,sum/k);}

16、编程找出满足下列条件的所有四位数的和并输出:该数第一、三位数字之和为10,第二、四位数字之积为12。

#include #include int main(void){ int i,j,x,y,z,m;for(i = 1000;i< 10000;i++){ x = i/1000;y =(i/100)%10;z =(i/10)%10;m = i%10;if((x + z)==10&&(y+ m)==12){ printf(“%dt”,i);} } printf(“n”);return 0;}

17、求并输出所有满足如下条件的三位正整数:它是某整数的平方,它的三位数码有两位是相同的。(如100是10的平方,它有两个0,225是15的平方,它有两个2)。#include #include void main(){ int n,i,a,b,c;for(n=100;n<=999;n++){ a=n/100;b=n/10%10;c=n%10;i=sqrt(n);

if((a==b||a==c||b==c)&&n==i*i)printf(“%dt”,n);} }

18、输出所有大于1010的4位偶数,且该类偶数的各位数字两两不相同。#include void main(){ int num,a,b,c,d;

for(num=1012;num<=9999;num+=2){ a=num/1000;b=num/100%10;c=num/10%10;d=num%10;if(a!=b&&b!=c&&c!=d)printf(“%dt”,num);} }

19、编制程序要求输入整数a和b,若a+b大于100,则输出a+b百位以上的数字,否则输出两数字之和。#include 2

222void main(){ int a,b,s;printf(“Please input a and b:”);scanf(“%d%d”,&a,&b);s=a*a+b*b;if(s>100)printf(“n%dn”,s/100);else printf(“n%dn”,a+b);} 20、编写一个程序实现如下功能:计算1~100之间所有包含4或者包含5的数字,并显示其累加之和 #include void main(){ int a,b,i,sum=0;for(i=1;i<=99;i++){ a=i/10;b=i%10;

上一篇:我运动我快乐的记叙文下一篇:初入职场新人着装礼仪