数组
1、数组含义:存放类型相同数据。数组元素在内存中存放的特点(占用一段连续的存储单元)。 2、 一维数组的定义、引用、初始化。
3、 二维数组的定义、引用、初始化。 4、 数组的相关运算:数组输入、输出、求最值,排序。 5、 字符数组的定义、引用、初始化。C语言中处理字符串的库函数(strcmp(),strcpy(),strcat(),strlen(),strlwr())的含义及使用。函数 1、 C语言源程序由许多函数组成,有且仅有一个main()函数,从main()函数开始执行,最后回到main()函数。 2、 函数分类: 从用户角度分:库函数,用户自定义函数。 从函数形式分:无参函数,有参函数。 3、 函数的定义、调用及声明。 4、 函数的嵌套调用与递归调用。 5、 函数调用中参数的传递方式及应用: (1) 值传递方式。 (2) 地址传递。 6、 数组元素作为函数实参与变量作为实参一样,实现值传递;数组名作为实参,传递的是数组的地址,实现地址传递,形参和实参指向同一连续存储单元。 7、 变量的存储类型,静态变量与动态变量的区别。(局部静态变量在程序运行整个过程中都占用内存单元。) 8、 局部变量和全局变量的使用及有效范围。预处理命令 1、 宏定义的方式(不带参数的宏定义,带参数的宏定义及其区别)。 2、 宏定义的特点:只做简单置换,不作正确性检查;不是C语句,行末没有分号。 3、 熟练掌握stdio.h、string.h、math.h包含文件的引用。指针 1、 指针定义:指针与指针变量(存放地址的变量)。 2、 指针与指针运算符(*),取地址运算符(&)。 3、 指向一维数组指针的应用(指针法、下标法);注意给指针赋初值。结构体和链表 1、结构体类型的定义,结构体变量的定义、引用及初始化,结构体变量中成员变量的引用。 2、结构体数组的定义、初始化。 3、链表,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针文件 1、 文件含义:存储在外部存储介质上的数据的集合。 2、 文件的打开与关闭,及其文件使用格式。
小测验
单选题 1、C语言中下列叙述正确的是___D__。
A:不能使用do-while语句构成的循环 B:do-while语句构成的循环,必须用break语句才能退出 C:do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D:do-while语句构成的循环,当while语句中的表达式值为零时结束循环 知识点:知识点/循环结构程序设计/WHILE和DO WHILE循环结构 2、下列描述中不正确的是____C__。 A:字符型数组中可以存放字符串 B:可以对字符型数组进行整体输入、输出 C:可以对整型数组进行整体输入、输出 D:不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值 知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用 3、以下程序的输出结果是___D___。 main() { int x=10,y=10,i; for(i=0;x>8 ;y=++i) printf("%d %d ",x--,y); } A:10 1 9 2 B:9 8 7 6 C:10 9 9 0 D:10 10 9 1 知识点:知识点/循环结构程序设计/FOR循环结构4、以下程序的输出结果是___B___。
main() { char a[10]={'1','2','3','4','5','6','7','8','9',0},*p; int i ; i=8; p=a+i; printf("%s\n",p-3); } A:6 B:6789 C:'6' D:789 知识点:知识点/指针/指针数组,指向指针的指针,MAIN函数的命令行参数 5、能正确表示a和b同时为正或同时为负的逻辑表达式是___D___。 A:(a>=0||b>=0)&&(a<0|| b<0) B:(a>=0&&b>=0)&&(a<0&&b<0) C:(a+b>0)&&(a+b<=0) D:a*b>0 知识点:知识点/基本语句/表达式语句,空语句,复合语句 6、以下程序的输出结果是__A__。 main() { int n=4; while(n--)printf("%d ",--n); } A:2 0 B:3 1 C:3 2 1 D:2 1 0 知识点:知识点/循环结构程序设计/WHILE和DO WHILE循环结构 7、以下程序的输出结果是___D___。 main() { int k=17; printf("%d,%o,%x\n",k,k,k); } A:17,021,0x11 B:17,17,17 C:17,0x11,021 D:17,21,11 知识点:知识点/数据类型及其运算/C的数据类型及其定义方法 8、若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是___A___。 A:*p=&a;scanf("%ld",p); B:p=(long *)malloc(8);scanf("%ld",p); C:scanf("%ld",p=&a); D:scanf("%ld",&a); 知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用 9、以下选项中,能定义s为合法的结构体变量的是___B___。 A:typedef struct abc { double a; char b[10]; } s; B:struct { double a; char b[10]; }s; C:struct ABC { double a; char b[10]; } ABC s; D:typedef ABC { double a; char b[10]; } ABC s; 10、请读程序: #include <stdio.h> main() { int a, b ; for(a = 1 , b = 1 ; a <= 100 ; a++) { if(b >= 20) break ; if (b%3 == 1) { b += 3 ; continue ; } b -= 5 ; } printf("%d\n", a) ; } 上面程序的输出结果是___B___。 A:7 B:8 C:9 D:10 知识点:知识点/选择结构程序设计/用SWITCH语句实现多分支选择结构 11、请选出合法的C语言赋值语句__C____。 A:a=b=58; B:i++; C:a=58,b=58; D:k=int(a+b); 12、若x和y都是int型变量,x=100、y=200,且有下面的程序片段 printf("%d",(x,y) ); 上面程序片段的输出结果是__A____。 A:200 B:100 C:100 200 D:输入格式符不够,输出不确定的值 13、若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是___A___。 A:pb=&x; B:pb=x; C:*pb=&x; D:*pb=*x 14、设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式是___D___。 A:'a'&&'b' B:a<=b C:a||+c&&b-c D:!((a<b)&&!c||1) 15、有程序如下: typedef struct link { double score; struct link *next; }; void main ( ) { link *ps, qs, rs; ps = ( struct link *) malloc (sizeof (struct link) ); ps->score = 81.5; qs.score = 55.5; rs.score = 68.0; ps->next = &qs ; qs.next =&rs; printf ( " %lf \n ", ps->score + ps->next->score); } 上面程序的输出结果是___137___。 --------------------------------------------------------------------程序设计 1.定义函数double fact( int n) 计算n!的值。double fact( int n){double mul;if (n==1||n==0)mul=1;else mul=n*fact(n-1);return mul;}
2.判断数m是否为素数(只能被1和它本身整除的整数)?若是,则输出yes;否则输出no
void main (){ int num,i; scanf("%d",&num); for(i=2;i
3.求出第n项Fibonacci数,并统计前n项之和。Fibonacci序列:1,1,2,3,5,8,13,21,34,55,……。该序列的第一个数和第二个数都是1,从第三个数开始,每个数都是前两个数之和
void main (){ int n,sum=0; scanf("%d",&n); printf("%d\n",Fibonacci(n)); for(int i=1;i<=n;i++) { sum+=Fibonacci(i); } printf("%d",sum);}int Fibonacci(int n){ if(n==1||n==2) return 1; return Fibonacci(n-1)+Fibonacci(n-2);}
4.输入某班级20个学生某课程的考试成绩,要求统计并输出班级总分及大于等于60分的人数。
#include#define n 20void main (){ int sco[n],sum=0,j=0; for(int i=0;i =60) { j++; } } printf("总分是:%d\n",sum); printf("及格人数为:%d",j);}
5.试编程判断输入的正整数是否既是5又是7的正倍数。若是,则输出yes;否则输出no。
#includevoid main (){ int n; scanf("%d",&n); if(!(n%7&&n%5)) printf("yes"); else printf("no");}
6.对15个数进行排序,按从小到大的顺序输出
#include7.写一个程序,它能够计算并输出杨辉三角形(帕斯卡三角形)前面的 n 行void Bubble(int myarr[],int len);int main(){ int myarr[15]; for(int i=0;i<15;i++) scanf_s("%d", &myarr[i] ); Bubble(myarr,15); for(int i=0;i<15;i++) { printf("%d:%d\n",i,myarr[i]); } return 0;}void Bubble(int myarr[],int len){ int length=len; int i=0; int j=0; for(i=0;i myarr[j+1]) { int temp=myarr[j]; myarr[j]=myarr[j+1]; myarr[j+1]=temp; } } }}
#include#define N 9 void main(){ int i,j,a[N][N]={0}; for(i=1;i