《C程序设计专题辅导.ppt》由会员分享,可在线阅读,更多相关《C程序设计专题辅导.ppt(25页珍藏版)》请在三一办公上搜索。
1、C程序设计专题辅导课,内容提要:,数组字符串,数组,定义:类型名 数组名数组长度int a10,x55;#define N 5main()int bN;int i=10;int ci;,数组,初始化:int a10=1,2,3;static b23=1,2;int c=1,2,3,4;int x2=1,2,3;部分元素初始化:其余元素的值动态存储为随机数,静态存储自动为0,数组,数组的使用:int a10,i;使a的所有元素值为1;a=1;,for(i=0;i10;i+)ai=1;,二维数组在内存中的存放方式,int a32;3 行 2 列,6 个元素表示1个3行2列的矩阵a00 a01 a1
2、0 a11 a20 a21,二维数组的元素在内存中按行/列方式存放a00a01a10a11a20a21,二维数组在内存中的存放方式,int aMN,i,j;a00的地址是数组a在内存中存放的首(起始)地址aij距离起始地址的距离(偏移量)为:i*N+j,int a32;a02,a10代表同一个数组元素,字符串,字符串常量用一对双引号括起来的字符序列一个字符串结束符 0Happy6个字符 H a p p y 0,有效字符,字符串结束符,字符串的有效长度:有效字符的个数strlen(s);返回字符数组s的字符串有效长度,字符串的存储数组初始化,字符串可以存放在一维字符数组中 static char
3、 s6=H,a,p,p,y,0;字符数组初始化:用字符串常量static char s6=Happy;static char s6=Happy;char s=Happy;,对字符串的操作,把字符串放入一维字符数组(存储)对字符串的操作=对字符数组的操作普通字符数组:数组元素的个数是确定的,一般用下标控制循环字符串:没有显式地给出有效字符的个数,只规定在字符串结束符 0 之前的字符都是字符串的有效字符,一般用结束符 0 来控制循环循环条件:si!=0,举例(1),1.数组定义为 int a32=1,2,3,4,5,6,数组元素_的值为6。A、a32 B、a13 C、a12 D、a23,B,举例(
4、2),下列关于数组的定义,哪种说法是错误的()Aint a13;Bint x22=1,2,3,4;Cint x2=1,2,4,6;D int m3=1,2,3,4,5,6;,下列代码段的输出为()static int a34=1,2,3,4,5,6;printf(“%d”,a05);,C,5,举例(3),不正确的赋值或赋初值的方式是_。A、char str=string;B、char str7=s,t,r,i,n,g;C、char str10;str=string;D、char str7=s,t,r,i,n,g,0;,C数组名代表数组的首地址,举例(4),设变量定义为 char s=hello
5、nworldn;,则数组s中有_个元素。A12 B13 C14 D、15,下列代码段的输出为()char c=“Itr0willn”;printf(“%d”,strlen(c);A4 B10 C11 D15,B,A,举例(5),下列代码段的输出为()#include#include main()char st20=”hello%d0world!”;printf(“%d,%dn”,strlen(st),sizeof(st);,7,20,选择法排序,输入n(n10),再输入n个数,用选择法将它们从小到大排序后输出。设 n=5 3 5 2 8 1,(1)1 5 2 8 3(2)2 5 8 3(3)3
6、 8 5(4)5 8,3 5 2 8 1(n=5)5个数(a0a4)中找最小数,与a0交换(1)1 5 2 8 3 a4 a04个数(a1a4)中找最小数,与a1交换(2)1 2 5 8 3 a2 a13个数(a2a4)中找最小数,与a2交换(3)1 2 3 8 5 a4 a22个数(a3a4)中找最小数,与a3交换(4)1 2 3 5 8 a4 a3,选择法(1),冒泡法排序,输入n(n10),再输入n个数,用冒泡法将它们从小到大排序后输出。设 n=5 3 5 2 8 1,3 5 2 8 1(n=5)逐个进行相邻的数比较,将大数交换到后一位3 2 5 1 8(2)3 2 5 12 3 1 5
7、(3)2 3 1 2 1 3(4)2 1 1 21 2 3 5 8,冒泡法,举例(5),若输入89 76 24 25 9 8 11 16 35 4,则以下程序的输出结果是_。#include stdio.h#define N 10 main()int xN,y1N,y2N;int i,j,n1,n2,t,p;n1=n2=0;for(i=0;iy1j+1)t=y1j;y1j=y1j+1;y1j+1=t;for(i=0;in2-1;i+)p=i;for(j=i+1;jn2;j+)if(y2py2j)p=j;if(p!=i)t=y2i;y2i=y2p;y2p=t;for(i=0;in1;i+)pri
8、ntf(%d,y1i);for(i=0;in2;i+)printf(%d,y2i);,4,8,16,24,76,89,35,25,11,9,按偶数、奇数分成y1,y2,冒泡法,从小到大,选择法,从大到小,举例(6),1.若输入为3 9 8 6 5 3 7 1 2 4 2 1 2 3 4,则输出为()#include stdio.hvoid main()int flag,i,j,k,col,n,ri,a66;for(ri=1;ri=n)printf(a%d%d=%d#,i,col,aicol);flag=1;if(!flag)printf(NO#);,一行中最大的元素,是否是同列中最大,a00=
9、9#a12=7#a11=4,举例(7),1.输入123+234=357Yes?后,下列程序的输出结果是_。#include void main()int k,n1,n310;char c;n1=0;for(k=0;k10;k+)n3k=0;while(c=getchar()!=n)switch(c)case0:case 1:case 2:case 3:case 4:case5:case 6:case 7:case 8:case 9:n3c-0+;break;default:n1+;break;if(n1)printf(%d,n1);for(k=0;k10;k+)if(n3k)printf(%d
10、,n3k);,6 1 2 3 1 1 1,123+n31=1n32=1n33=1n1=1,234=n32=2n33=2n34=1n1=2,举例(8),程序填空,不要改变与输入输出有关的语句。输入一个正整数 repeat(0repeat10),做 repeat 次下列运算:输入一个以回车结束的字符串(少于80个字符),滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。输入输出示例:括号内为说明输入:2(repeat=2)10+A输出:Dec=16Dec=10,#include stdio.h#include string.h#define MAXLEN 80int main(void)char ch;char strMAXLEN,numMAXLEN;int i,k,t;int repeat,ri;long number;scanf(%d,t=0;for(k=0;k=0,