用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n个整数在主函数中输入,最后在主函数中输出。
解:程序如下:# includeint main( ){void sort(int p,int n);int i,n,date[20],**p,* pstr[20];printf("input n:\n");scanf("%d",&n) ;for (i=0;i**(p+j)) //比较后交换整数地址 {temp= * (p+i); *(p+i)= *(p+j); *(p+j) = temp; } } }}运行结果:[img=292x80]17d84c0dd254d15.png[/img]data数组用来存放n个整数,pstr是指针数组,每一个元素指向data 数组中的一个元素,p是指向指针的指针,请参考图8.5。图8. 5(a)表示的是排序前的情况,图8. 5(b)表示的是排序后的情况。可以看到data数组中的数,次序没有变化,而pstr指针数组中的各元素的值(也就是它们的指向)改变了。[img=535x255]17d84c18a7b62e3.png[/img]
举一反三
- 编程题编写程序,对N个整数排序并输出。N个整数和N在主程序中输入,最后在主函数中输出。(要求使用指针变量指向数组的方法)
- 【其它】编写程序 1 、用递归法将一个整数 n 转换成字符串。例如,输入 356 ,应输出字符串 “356” ;输入 -729 ,应输出 “-729” 。 n 的位数不确定,可以是任意位数的整数。要求在主函数中输入整数,在被调用函数中完成转换,并输出。 2 、判断长整型 s 各位上的是否都是素数。 3 、从键盘任意输入一个整数,用函数编程判断该整数是否为素数。 4 、从键盘任意输入一个整数 n (如果 n<0 ,则要求提示 "Input Error! " ),用函数编程计算这个整数的阶乘值。 5 、找出 3—30 之间的所有素数。 6 、将字符串 str1 中的字母字符复制到另一字符串 str2 中,如输入 str1 字符串为 abcd123ABCD ,输出 str2 字符串为 abcdABCD 。要求在主函数中输入字符串 str1 ,并输出复制结果,在被调用函数中完成复制。 7 、试编写程序 , 使输入的一个字符串按反序存放。要求在主函数中输入原字符串和输出反序后的字符串。 8 、用选择法对数组中的 10 个整数按由小到大排序。要求在主函数中输入未排序的原始数据并输出排序后的数组。 9 、
- 有n个整数,使前面各数顺序向后移动m个位置,最后m个数变成最前面m个数。写一函数实现上述功能,在主函数中输入n个整数和输出调整后的n个数。输入样例:5/*n的值*/2/*m的值*/12345输出样例:45123
- 采用指针变量作为形参,编写一个实现两个整数交换的函数。在主函数中输入3个整数,调用数据交换函数将它们按从大到小的顺序排序后输出。
- 输入一个正整数n(50<=n<=100),使用随机数函数生成n个整数,并分别用选择排序法和冒泡排序法将这n个整数按照从大到小的次序排列。
内容
- 0
编写一个采用冒泡法对n个数由小到大进行排序的函数。在主函数中输入n的值及n个数,然后调用自定义函数并输出排序结果。
- 1
程序设计题:编写一个函数,判断一个数是不是素数。在主函数中输入一个整数,输出是否是素数的信息。要求:(1)编写一个函数prime(n),判断返回给定整数n是否为素数。(2)编写一个主函数,输入一个整数,调用第(1)题中的函数,判断此函数是否为素数,并输出结果。
- 2
函数功能:将字符串指针数组string指向的n个字符串依次输出 26ef9a1c1eaa5c2fe1dc2248fb2044fa.jpg
- 3
有 [color=#000000]n[/color] 个整数, 使前面各数顺序向后移 [color=#000000]m[/color] 个位置, 移出的数再从开头移入。编写一个函数 实现以上功能, 在主函数中输入 [color=#000000]n[/color] 个整数并输出调整后的 [color=#000000]n[/color] 个数。
- 4
编写函数,对数组中的10个整数从小到大排序。在主函数中用键盘输入10个整数,并在主函数中输出排好序的数组。