1、1C语言程序设计复习课一、基本要求熟练掌握 C 语言的基本语法与基本概念,掌握程序设计中的基本算法,如累加、累乘、求最大(最小值) 、排序 (起泡法、选择法) 、迭代、递归、查找等。要有较强的程序阅读、理解能力,会按照规定的要求去设计程序、完善程序。1、基本知识及简单 C 程序(1) 一个程序必须有 main( )函数,程序由函数组成。不论其位置如何 , 一个程序总是从 main( )函数开始执行,main( )函数运行结束,整个程序的运行也结束了。(2) 基本数据类型及常量的表示方法。字符:单引号括起;字符串:双引号括起。它们在内存中的存储方式有差别。转义字符:, 代表一个字符,用于输出和,
2、如要在屏幕上显示“string”,使用语句:printf(“string” ”);(3) 基本输入、输出函数的使用。功能及调用格式,格式控制符的含义。scanf(“%d%d“, scanf(“%d,%d“, scanf(“a=%d,b=%d“, 针对以上三种格式,应如何进行键盘输入?(4) 常用运算符与表达式。注意其优先级别、结合方向,熟练掌握常用运算符的用法。例如:自增、自减运算符的使用;尤其是作为循环或 if 语句中的判断条件时的使用;逻辑运算符 printf(“%d“,strlen(c);A14 B9 C3 D字符串中有非法字符,输出值不确定例 4、运行以下程序,当数据的输入形式为:48
3、,25时,程序的输出结果为( ) 。2#include main( ) int a,b;scanf(“%d%d“,printf(“a-b=%dn“,a-b);A、a-b=48 B、a-b=23 C、a-b=25 D、不确定值例 5、若有如下函数定义:int f( ) int x=2, y=4, z=6; return z,y,x; 则调用函数 f 后的返回值是( ) 。 A. 2 B.4 C.6 D. 以上都不正确例 6、设有定义 int i,j;则执行如下语句后:j=(i=1,i+9)9?i+|+i:+i; i,j 的值为 。 2、C 语言的基本结构(1) 顺序结构(2) 选择结构if 语句
4、的三种形式switch 的语法特点和 break 语句(3) 重复结构for 语句; while 语句; do while 语句continue break例 1、若执行以下程序时从键盘上输入 4,则输出结果是_。 main( ) int n;scanf(“%d“,if(n+ void main( ) char s80; int i,j; gets(s); for(i=j=0;si!=0;i+) if(si!=c) ; sj= 0; puts(s);3、数 组熟练掌握一维、二维数组的定义与使用。定义数组时,其下标只能是常数或用#define 定义的符号常量。数组名是指针常量,其值不可变。例如:
5、int s10=8,9,5;语句:s+; 对否? 熟练掌握用一维、二维数组表示字符串的方法;掌握常用字符串处理函数的功能和调用形式。例 1、以下能对二维数组 a 进行正确初始化的语句是( ) 。Aint a2 =1,0,1,5,2,3;Bint a 3=1,2,3,4,5,6;Cint a24=1,2,3,4,5,6;Dint a 3=1,0,1, ,1,1;例 2、以下程序的输出结果是 。main( ) char ch35=“AAAAA“,“BBBB“,“CCC“;printf(“%s“n“,ch1);A、 “AAAAA“ B、“BBBBCCC“ C、 “BBBB“ D、 “CCC“例 3、
6、已知有如下程序段:char str 10=“Aoyun”, “Beijing”,*p=printf(“%sn”,p+10);则执行 printf 语句后输出为_。5ABeijing B. Aoyou C. ing D. ng 例 4、下列程序的输出结果是_。 # include int main ( ) char a =“135792468“,*p;int i=0;p=a;while(*p) if(i%2=0) *p=*;p+; i+;puts(a);return 0;例 5、函数 del( )用来删除有序数组 a 中的给定元素 x 。函数 del()的第 1 个参数是删除前数组 a 的元素个
7、数,返回值为删除后数组 a 的元素个数。在空白处填上的语句。del(int n, int a, int x)int p, i;p =0;while ( xap 6sub(4,8);void sub(int x,int y) int k;if(xvoid fun(int *a, int i ,int j) int t;if(ivoid fun( ) static int y=0;y+=2; printf(“%dt“,y);int main( ) int x;for(x=2;xvoid fun(int *a, int *b) printf(“%d%d“, *a, *b);*a=*a+*b;*b=2
8、+*a;int main( ) int x=2,y=3;fun(printf(“%d%d“,x,y);return 0;例 7、第 8 章的补充作业(1)x=x/10 (2)k!=i (3)*pmax=*pmax*10+numi(4)*pmin=*pmin*10+num3-i例 8、输入一个不包括空格的字符串,判断输入的字符串是否为回文。回文是相对中心左右对称的字符串。如:字符串“abcba ”和“abddba”是回文,而字符串“abcAa”不是回文。程序如下:# includeint f(char *p) char k;char *p1,*p2;p1=p2=p;while(*p2+);_ ;
9、 while( _) if(_ )return 0; p1+; p2-;9return 1;main( ) char s200;printf(“ninput a string:“);scanf(“%s“,s);if(_ ) printf(“nstring: %s YES!n“,s);elseprintf(“nstring: %s NOT!n“,s);6、自定义数据类型熟练掌握结构体类型及变量的定义、初始化;掌握结构数组、指向结构体变量、数组的指针应用;熟悉链表基本操作;熟悉共用体、枚举类型及变量的定义。结构体变量所占的内存长度,为结构体中每一个成员所占内存之和;共用体变量所占的内存长度,为占内
10、存最多的那个成员的长度。例 1、设有以下定义和声明语句,则下列表达式中值为 15 的是 C 。struct std int d;struct std *next; ;struct std a3=9,A(ptr+1)-next-d B ptr-dC(ptr-next)-d D(ptr+2)-next-d例 2、以下程序的执行结果是。void main( ) union char *name;int age;int income;s;s.name=“Wang Ling”;s.age=28;s.income=2468;printf(“%dn”,s.name);10例 3、以下程序的输出是_61_。s
11、truct st int x; int *y; *p;int dt4= 10,20,30,40 ;struct st s4= 50,main( ) p=s+1;printf(“%dn“,+(p-x); 例 4、已知 head 指向单向链表的第一个结点,以下程序调用函数 print 输出这一单向链表。请填空。#include#includestruct student int info;struct student *link;void print(struct student *head)定义 head 指针 struct student *p;定义指针 Pprintf(“n the link
12、 list is :“);p=head;if(head!=NULL)do printf(“%d“, P-info ); p= P-link ; while ( p!=null /p ); main( ) struct student *head;.print(head);.7、文 件例 1、下面程序中,数据文件 “file.txt” 用添加(append)模式打开,然后将字符11串“student” 写入数据文件,最后显示文件指针当前位置。在空白处填上适当语句。#include void main(void)FILE *fp;long position;fp=fopen( “file.txt“
13、, “a“ );f ; position = ; printf(“position=%ldn“, position);fclose(fp);例 2、若要用 fopen 函数打开一个新的文本文件,该文件既要能读也要能写,则文件操作方式字符串应该为_。A、 “r+” B、 “a” C、 “w+” D、 “a+”二、编程练习1、编程求 100200 之间的所有素数。写一个判素数的函数,在主函数中打印出所有素数。函数2、编写一个 C 程序,在主函数中从键盘接收一个字符串,在另一个函数中将该字符串中所有大写字符转换成小写字符,最后在主函数中显示转换后的字符串。 函数3、有 10 个学生,每个学生的信息包括:学号和成绩。编写 C 程序,要求从键盘输入他们的信息,并将学生按成绩由高到低进行排序,排序之后输出每个学生的名次及信息,成绩相等的学生名次相同。定义两个数组 X1 学号 X2 成绩4、编写一个函数,该函数求两个整数的最小公倍数,在主函数中由键盘输入两个整数,调用此函数并输出结果。试编程实现。5、一个 5*5 二维数组元素值由键盘输入,求出其左上三角元素之和以及边框元素之和。6、编写一个 C 程序,用循环的方法为一个 5*5 的二维数组赋 1 到 25 的自然数,然后输出该数组的左下半三角(含对角线) 。i=0 i=65,=97 函数