例题:输入一个任意位数整数,求出每位上的数字,从高位向内容摘要:

]和 a[i+1]的值 */ for(i=0。 i4。 i++) } { 上一页 /*将 5个元素中的最大值放在最后 */ for(i=0。 i4。 i++) {if(a[i]a[i+1]) {t=a[i]。 a[i]=a[i+1]。 a[i+1]=t。 } } /*将 4个元素中的最大值放在最后 */ for(i=0。 i。 i++) {if(a[i]a[i+1]) {t=a[i]。 a[i]=a[i+1]。 a[i+1]=t。 } } 3 /*将 3个元素中的最大值放在最后 */ for(i=0。 i2。 i++) {if(a[i]a[i+1]) {t=a[i]。 a[i]=a[i+1]。 a[i+1]=t。 } } /*将 2个元素中的最大值放在最后 */ for(i=0。 i 1。 i++) {if(a[i]a[i+1]) {t=a[i]。 a[i]=a[i+1]。 a[i+1]=t。 } } /*将 n个元素中的最大值放在最后 */ for(i=0。 i n1。 i++) {if(a[i]a[i+1]) {t=a[i]。 a[i]=a[i+1]。 a[i+1]=t。 } } /*将 5个元素 按降序排序 */ { } for( ) j=1。 j5。 j++? 5j 起泡法排序 起泡法排序:与起泡从水中往上冒的情况有些类似。 具体做法:先将第一个数 a[0]与第 2个数 a[1]进行比较,如果 a[0]a[1],则将两个数进行交换,否则保持原顺序不变。 然后比较 a[1]和 a[2],依此类推,直到第 n1个元素与第 n个元素比较,这称为一趟起泡。 这一趟最明显的效果是将最大的数据排到了最后。 然后对前 n1个数据进行同样的操作,则具有次大值的数被排在第 n1的位置上,重复以上操作直到所有元素按顺序排列。 /*起泡法排序 chp6\*/ main() {int i,j,a[5]={9,8,4,5,0,2},t。 clrscr()。 for(i=0。 i5。 i++) printf(%d ,a[i])。 printf(\n)。 for(i=1。 i5。 i++) {for(j=0。 j5i。 j++) if(a[j]a[j+1]) {t=a[j]。 a[j]=a[j+1]。 a[j+1]=t。 } } for(i=0。 i5。 i++) printf(%d ,a[i])。 } 练习:编程模拟 23选 5的抽奖系统。 ( ) 课程回顾 一维数组的初始化 一维数组中元素的引用方式和地址表示 两种排序方法:冒泡法和选择法 C本身没有字符串变量,字符串的存储完全依赖于字符数组,但字符数组并不完全等价于字符串。 字符数组:用来存放字符数据的数组。 字符数组中的 一个元素存放一个字符。 一、定义: char 数组名 [长度 ] 例如: char c[5]={„c‟,‟h‟,‟i‟,‟n‟,‟a‟}。 在内存中占 5个字节 a[0] a[1] a[2] a[3] a[4] c h i n a。 这种定义方 式正误。 int c[5]={„c‟,‟h‟,‟i‟,‟n‟,‟a‟}。 √ 二、初始化和引用 方法同前面所讲的一维数组 三、字符串和字符串结束标志 字符串借助于字符型的一维数组来存放,并规定以‘ \0‟作为结束标志。 „\0‟ :转义字符,称为 “ 空值 ”。 其 ASCII码值为 0. 占内存空间,但不计入字符串的长度。 字符串长度:字符串结束标志之前的有效字符的个数。 字符串常量:系统在末尾自动加 ’ \0‟. 例如: “ ABC” 的长度为 3,在内存中占 4个字节的空间。 每个字符串常量都分别占用内存中一串连续的存储空间。 返回给系统的是字符串所占内存的首地址。 字符数组与字符串的区别: 字符数组的每个元素可存放一个字符,但并不限定最后一个字符是什么。 在 C中,有关字符串的很多操作都与字符串的结束标志有关,因此,在字符数组中的有效字符后加一个 ’ \0‟这一特定的情况下,可把这种一维数组称作 “ 字符串 ”。 可以说,字符串是字符数组的一种具体应用。 例如 :char s[]={„A‟,‟B‟,‟C‟}; 例如 :char s[]={„A‟,‟B‟,‟C‟,‟\0‟}; 都是正确的 一般赋值方式:在定义时逐个元素赋值 例如 1)char s[4]={„A‟,‟B‟,‟C‟,‟\0‟}; 2)char s[]={„A‟,‟B‟,‟C‟,‟\0‟}; 3)char s[10]={„A‟,‟B‟,‟C‟,‟\0‟};。 这四种方式有何异同。 4)char s[]={„A‟,‟B‟,‟C‟}; 直接用字符串常量赋值 例如: char s[]={“abc”}。 也可以省略大括号: char s[]=“abc”。 最常使用的方式 四、字符串的输入输出 输出: 若有定义: char c[]=“string”。 1)printf()函数 ① 逐个字符输出:格式符 %c ② 输出整个字符串:格式符 %s i=0。 while( ) {printf(“%c”,c[i])。 i++。 } 格式: printf(格式控制,输出的起始地址 ) 例如 1): printf(“%s”, c)。 结果为: string printf(“%s”, c+2)。 结果为: ring s t r i n g \0 c c+2 c[i]!=„\0‟ 例如 4): char c1[]=“boy”,c2[]=“girl”。 则: printf(“%s”,c1)。 printf(“%s”,c2)。 输出结果为: boygirl \n”,c1)。 bo girl 例如 2): printf(“%s”,”china”)。 结果为: china printf(“%.2s”,”china”)。 结果为: ch printf(“%.2s”,”china”+2)。 结果为: in printf(“%s”,”china”+2)。 结果为: ina 例如 3): char c[]={„a‟,‟b‟,‟c‟}。 printf(“%s”,c)。 结果为: 不确定 2)puts()函数 格式: puts(输出的起始地址 ) 若有定义: char c[]=“string”。 puts(c); 结果为: string puts(c+2); 结果为: ring 例如: char c1[]=“boy”,c2[]=“girl”。 puts(c2)。 输出结果为: 则: puts(c1)。 boy girl 注: puts函数自动将字符串结束标志 ’ \0‟转为 ’ \n‟输出,即该函数具有自动回车换行的功能。 输入: 若有定义: char c[20]。 1)scanf()函数 ① 逐个字符输入:格式符 %c ② 接收整个字符串:格式符 %s 格式: scanf(格式控制,接收字符的起始地址 ) i=0。 do {scanf(“%c”,amp。 c[i])。 i++。 } While( )。 例如: scanf(“%s”,c)。 若在程序运行中输入: china,则从 第一个 元素开始存放字符。 例如: scanf(“%s”,c+1)。 若在程序运行中输入: china,则从 第二个 元素开始存放字符。 c[i]!=„\n‟ 如果数组中存储一个“ 字符串 ” ,而且当遇回车符结束输入,应怎样表示条件。 i19 amp。 amp。 若在程序中输入: boy and gilr 然后 puts(c)。 该语句的输出结果为: boy 注:空格 、 回车符 都作为输入数据的分隔符而不能被读入。 2) gets()函数 格式: gets(接收字符的起始地址 ) 例如 :gets(c)。 注: 输入字符串以回车作为结束。 空格、制表符都作为 有效数据接收。 自动将回车转为结束标记 ’ \0‟。 注: 使用以上函数需要在函数首加头文件: 如有: char s[20]。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。