C语言上机题目——数组程序设计
- 格式:doc
- 大小:542.00 KB
- 文档页数:7
编程练习4 ——数组1. 随机数数组输出。
要求:产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。
输出结果:2. 求数组最大值、最小值、总和、平均数。
要求:产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。
求该数组的最大值、最小值、总和和平均值并输出。
输出结果:3. 冒泡法排序。
要求:产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。
按照升序排列并输出。
输出结果:4. 选择法排序。
输出结果:同上5. 比较法排序。
输出结果:同上6. 数组逆序输出要求:产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。
编程将逆序数组输出。
输出结果:7. 数组插数。
要求:产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。
按照升序排列并输出。
再输入一个数,按照原来的规律将其插入并输出。
输出结果:8. 用数组输出Fibonacci数列的前40项。
要求:每行输出5个元素,每个元素10位。
输出结果:(略)9. 用筛选法求100以内的素数。
输出结果:10. 数组查找。
要求:产生一个由15个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。
按照升序排列并输出。
再输入一个数,要求找出该数是数组中的第几个元素,如果不在数组中,输出找不到。
11. 二维数组行列互换。
要求:将一个二维数组(3行4列)的行和列互换(转置),存到另一个二维数组(4行3列)中并输出。
输出结果:12. 编程输出杨辉三角(要求输出10行)。
输出结果:13. 编程输入5阶魔方阵。
输出结果:14. 找出一个二维数组中的鞍点。
要求:即该位置上的元素在该行最大,在该列最小。
可能没有鞍点。
输出结果:15. 输入一行字符,统计大写字母、小写字母、数字、空格以及其他字符个数。
输出结果:16. 编写程序实现strcat函数功能。
输出结果:17. 编写程序实现strcpy函数功能。
第7章数组【练习7-1】将例7—3 程序中的break 语句去掉,输出结果有变化吗?假设输入数据不变,输出什么?解答:当去掉break 语句后,一旦找到数据将不跳出循环,而是继续往下找值为x 的元素,因此程序输出会有变化。
当输入数据仍为2 9 8 1 9 时,输出将是index is 1 index is 4。
【练习7—2】将数组中的数逆序存放.输入一个正整数n(1<n<=10),再输入n个整数,存入数组a中,输出最大值及其对应的最小下标,下标从0开始.试编写相应程序。
解答:#include<stdio。
h〉int main(void){int i,n,temp;int a[10];printf("Input n:");scanf(”%d",&n);printf(”Input %d integer:",n);for(i=0;i<n;i++)scanf(”%d”,&a[i]);printf(”After reversed:");for(i=0;i〈n/2;i++){temp=a[i];a[i]=a[n—1—i];a[n-1—i]=temp;}for(i=0;i〈n;i++)printf("%d ”,a[i]);return 0;}【练习7-3】求最大值及其下标.输入一个正整数n(1〈n<=10),再输入n个整数,存入数组a中,将先数组a中的这n个数逆序存放,在按顺序输出数组a中的n各元素.试编写相应程序.解答:#include〈stdio.h>int main(void){int i,index,n;int a[10];printf("Enter n:”);scanf(”%d",&n);printf(”Enter %d integrs:”,n);for(i=0;i〈n;i++)scanf("%d",&a[i]);for(i=n—1;i〉=0;i++)printf("%d ”,a[i]);return 0;}【练习7-4】找出不是两个数组共有的元素。
C语言数组编程题及解答【程序1】用筛选法求100之内的素数筛选法又称筛法,是求不超过自然数N(N>1)的所有质数的一种方法。
据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274~194年)发明的,又称埃拉托斯特尼筛子。
具体做法是:先把N个自然数按次序排列起来。
1不是质数,也不是合数,要划去。
第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。
2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。
3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。
这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。
因为希腊人是把数写在涂腊的板上,每要划去一个数,就在上面记以小点,寻求质数的工作完毕后,这许多小点就像一个筛子,所以就把埃拉托斯特尼的方法叫做“埃拉托斯特尼筛”,简称“筛法”。
#include <stdio.h>#include <math.h>void main(){int i,j;int a[100];for(i=0;i<100;i++)a[i]=i+1;for(i=1;i<100;i++){if(a[i]==0)continue;for(j=i+1;j<100;j++)if(a[j]%a[i]==0)a[j]=0;}for(j=1;j<100;j++) //j从1开始,去除a[0](其值为1),因为1既不是质数,也不是合数if(a[j]!=0)printf("%d,",a[j]);printf("\n");}【程序2】题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如6=1+2+3.编程找出1000以内的所有完数。
程序源代码:#include <stdio.h>int main(){int k[10];int i,j,n,s;for(j=2;j<1000;j++){n=-1;s=j;for(i=1;i<j;i++){if ((j%i)==0){n++;s=s-i;k[n]=i;}}if(s==0) //说明是完数{printf("%d is a wanshu:",j);for(i=0;i<=n;i++)printf("%d ",k[i]);printf("\n");}}return 1;}【程序3】题目:用选择法对10个数进行从大到小排序1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。
数组部分必须会编写的程序(参考答案)1、使用选择法、冒泡法对10个数进行排序,并输出排序前后的数列。
//选择法#include<stdio.h>void main(){int a[10]={12,45,7,8,96,4,10,48,2,46},n=10,i,j,t,temp;printf("Before sort:");for(i=0;i<10;i++){printf("%4d",a[i]);}printf("\n");//排序for(i=0;i<9;i++){t=i;for(j=i+1;j<10;j++){if(a[t]>a[j]){t=j;}}if(t!=i){temp=a[i];a[i]=a[t];a[t]=temp;}}printf("Aftere sorted:");for(i=0;i<10;i++){printf("%4d",a[i]);}printf("\n");}//冒泡法#include<stdio.h>void main(){int a[10]={12,45,7,8,96,4,10,48,2,46},n=10,I,j,t;printf(“Before sort:”);for(i=0;i<10;i++){printf("%4d",a[i]);}prtintf(“\n”);//排序for(i=0;i<=n-1;i++){for(j=0;j<i;j++)if(a[j]>a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;}}printf(“Aftere sorted:”);for(i=0;i<10;i++){printf("%4d",a[i]);}prtintf(“\n”);}2、已知数组a中的元素已按由小到大顺序排列,以下程序的功能是将输入的一个数插入数组a中,插入后,数组a中的元素仍然由小到大顺序排列。
实验六数组程序设计【实验目的】1、掌握使用一维数组编程方法2、掌握使用二维数组进行程序设计【实验内容】一、上机验证程序,并分析结果要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。
1、#include <stdio.h>int main(){ int a[ ]={1,2,3,4,5} , i, j, s=0 ;j = 1;for ( i = 4 ; i>=0 ; i--){s = s+ a[i] * j ;j = j * 10 ;}printf(" s= %d \n" , s );return 0;}二、程序改错题1.下面程序的功能,是从键盘输入一个数组(数组长度为10),查找数组中正数的个数。
源代码如下,程序中存在错误,请将其改正。
#include <stdio.h>int main(){int a(10);/*定义数组*/int count,i;/* i循环变量 count 正数个数*/for(i=0;i<=10;i++){/*循环输入*/scanf("%d",a[i]);}count=1;for(i=0;i<=10;i++){/*查找正数*/if(a(i)>0)count++;}printf("数组中正数有:%d个\n",count);return 0;}三编写程序1.编写程序要求输入30个学生的单科成绩,输出高于平均分的成绩。
#include <stdio.h>#define N 30int main(){float score[N],sum=0,aver;int i;for(i=0;i<30;i++){scanf("%f",&score[i]);sum=sum+score[i];}aver=sum/30;printf("平均分为:%.2f\n",aver);for(i=0;i<N;i++)if(score[i]>aver)printf("%.2f ",score[i]);printf("\n");return 0;}2.编写程序:假设有13位评委参与评分工作。
c语言数组编程题目含详解共5道1. 计算数组元素的和编写一个程序,计算给定数组中所有元素的和。
```c#include <stdio.h>int main() {int arr[] = {1, 2, 3, 4, 5};int n = sizeof(arr) / sizeof(arr[0]);int sum = 0;for (int i = 0; i < n; ++i) {sum += arr[i];}printf("数组元素的和: %d\n", sum);return 0;}```2. 查找数组中的最大值和最小值编写一个程序,查找给定数组中的最大值和最小值。
```c#include <stdio.h>int main() {int arr[] = {5, 2, 8, 1, 4};int n = sizeof(arr) / sizeof(arr[0]);int max = arr[0];int min = arr[0];for (int i = 1; i < n; ++i) {if (arr[i] > max) {max = arr[i];}if (arr[i] < min) {min = arr[i];}}printf("最大值: %d\n", max);printf("最小值: %d\n", min);return 0;}```3. 反转数组元素的顺序编写一个程序,反转给定数组的元素顺序。
```c#include <stdio.h>int main() {int arr[] = {1, 2, 3, 4, 5};int n = sizeof(arr) / sizeof(arr[0]);int temp;for (int i = 0; i < n / 2; ++i) {temp = arr[i];arr[i] = arr[n - i - 1];arr[n - i - 1] = temp;}printf("反转后的数组: ");for (int i = 0; i < n; ++i) {printf("%d ", arr[i]);}return 0;}```4. 删除数组中的指定元素编写一个程序,删除给定数组中的指定元素。
1.以下对一维整型数组a的定义,正确的是_。
(2分)A.int a(10) ;B.int n = 10 , a[n] ;C.int n ;scanf( "%d" , &n ) ;int a[n] ;D.int a[10] ;2.若有定义:int a[10] ;,则对a数组元素的正确引用是_。
(2分)A.a[10]B.a[3.5]C.a(5)D.a[10-10]3.对定义int a[10] = {6 , 7 , 8 , 9 , 10} ; 的正确理解是_。
(2分)A.将5个初值依次赋给a[1]--a[5]B.将5个初值依次赋给a[0]--a[4]C.将5个初值依次赋给a[6]--a[10]D.因为数组长度与初值个数不相同,所以此语句不正确4..若有定义:int a[3][4]; , 则对a数组元素的正确引用是_。
(2分)A.a[3][4]B.a[1,3]C.a[1+1][0]D.a(2)(1)5.以下对二维数组a初始化正确的语句是_。
(2分)A.int a[2][ ]={{0 , 1 , 2}, {3 , 4 , 5}};B.int a[ ][3]={{0, 1, 2}, {3, 4, 5}};C.int a[2][4]={{0, 1 , 2}, {3 , 4}, {5}};D.int a[ ][3]={{0, 1, 2}, { }, {3, 4}};6.对二维数组a进行如下初始化:int a[ ][3]={0 , 1 , 2 , 3 , 4 , 5};则a[1][1]的值是_。
(2分)A.0B.3C.4D.17.下面程序段的运行结果是_。
(2分)#include<stdio.h>int main( ){int i , x[3][3] = {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9} ;for( i = 0 ; i < 3 ; i++ )printf( "%2d" , x[i][2-i] ) ;return 0 ;}A.1 5 9B.1 4 7C.3 5 7D.3 6 98.以下对数组s的初始化,错误的是_。
c语言一维数组上机考试题目
以下是一些关于C语言一维数组的常见上机考试题目:
1. 编写一个程序,输入一个整数n,求出1到n之间所有偶数的和。
2. 编写一个程序,输入一个整数n,求出1到n之间所有数字的阶乘之和。
3. 编写一个程序,输入一个整数n,求出1到n之间所有数字的立方之和。
4. 编写一个程序,输入一个整数n,求出1到n之间所有数字的平方之和。
5. 编写一个程序,输入一个整数n,求出1到n之间所有数字的倒数之和。
6. 编写一个程序,输入一个整数n,求出1到n之间所有数字的绝对值之和。
7. 编写一个程序,输入一个整数n,求出1到n之间所有数字的因子之和。
8. 编写一个程序,输入一个整数n,求出1到n之间所有数字的质因子之和。
9. 编写一个程序,输入一个整数n,求出1到n之间所有数字的奇数因子之和。
10. 编写一个程序,输入一个整数n,求出1到n之间所有数字的因子个数之和。
以上题目只是示例,实际上关于C语言一维数组的上机考试题目还有很多其他类型。
考生应该掌握一维数组的基本概念和操作,并且能够灵活运用数组来解决问题。
C语言程序设计——数组(说课稿)南京浦口中等专业学校—陈松一、课程目标《C语言程序设计》是中职对口单招计算机专业理论考试和技能考试中一门重要的课程。
要求学生掌握计算机编程语言的基本知识,初步掌握程序设计的基本思想,具有基本的C程序设计能力,能比较熟练地阅读、理解和编制简单的C程序。
二、学情分析本课程是针对综合高中对口单招班高二年级计算机专业的学生,学生已学习了计算机基础和计算机原理课程,对专业知识有了一定的了解。
但班级学生参差不齐,不少学生学习习惯较差,基础较薄弱。
教师必须首先弄清学生对专业课学习的障碍及原因,再根据教学原理制定出相应的对策,培养学生学习的积极,提高解决实际问题的能力。
三、教材与参考书本课程使用的教材是《C语言编程基础》(第2版)电子工业出版社。
此教材分为两部分,第一部分是基础知识模块,第二部分是选用模块。
对口单招学生只学习第一部分内容,第二部分内容单招计算机专业的考纲中是不要求的。
辅导练习:1、C语言阶段综合测试卷集。
2、自己编写的每次课的学生工作页。
四、教材分析1、单元内容数组单元是C语言的一个重要章节,本单元教学内容有:(1)一维数组的定义、引用和初始化、一维数组应用。
(2)二维数组的定义、引用和初始化、二维数组应用。
(3)字符串与字符数组、字符串的输入输出、字符串处理函数、字符数组应用。
2、单元设计(1)本单元每次课都编写了学生工作页,让学生根据任务去学习本单元内容。
(2)本单元加强了上机实习的课时数,着重培养学生上机实践能力,提高他们的程序设计能力。
3、教学目标➢知识目标:(1)了解一维数组、二维数值型数组的定义和使用方法。
(2)掌握对数组的初始化。
(3)掌握字符串的输入、输出和处理。
(4)熟练掌握使用数组进行程序设计的方法。
(5)理解程序设计中的几种常见算法的基本思路。
➢技能目标:(1)学生能正确的定义数组;能正确的引用数组和初始化数组;能使用数组进行程序设计。
(2)培养学生的分析、思考能力,提高解决问题的能力。
实验一 C语言的运行环境、运行过程和表达式的使用一、目的与要求1、了解Dos、Windows环境下C语言的运行环境,了解所用的计算机系统的基本操作方法,学会独立使用该系统。
2、了解在该系统上如何编辑、编译、连接和运行一个C程序。
3、通过运行简单的C程序,初步了解C源程序的特点。
4、掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。
5、学会使用C的有关算术运算符,以及包含这些运算符的表达式二、实验例题【例1】编程实现在屏幕上显示如下三行文字Hello, world !Wolcome to the C language world!Everyone has been waiting for.在Turbo C的集成环境下,键入如下源文件。
敲Alt+F组合键打开File菜单,File菜单中Write to或save as选项可将默认noname.c文件名改为任意文件名。
程序example.c如下:main(){printf("Hello,World!\n");printf("Wolcome to the C language world!\n");printf("Everyone has been waiting for.\n");}然后用Ctrl+F9执行example.c,用Alt+F5查看结果,即在屏幕上显示题目要求的三行文字。
按回车键重新返回Turbo C的编辑环境。
注意,在运行程序之前最好先存盘。
【例2】输入并运行程序,写出运行结果。
main(){int a,b,sum;a=123;b=456;sum=a+b;printf(“sum is %d\n”,sum);}运行方法同上,最后结果为:sum is 579。
【例3】输入并运行程序,写出运行结果。
main(){int a,b,c;int max(int,int);scanf(“%d,%d”,&a,&b);c=max(a,b);printf(“max=%d”,c);}int max(int x,int y){int z;if (x>y) z=x;else z=y;return(z);}这个程序的功能是对于任意输入的两个整数,输出较大的那个数。
c语言课程设计数组一、教学目标本章节的教学目标是使学生掌握C语言中数组的概念、声明、初始化、访问以及数组排序等基本操作。
1.理解数组的概念和作用。
2.掌握数组的声明和初始化。
3.学会使用循环语句访问数组元素。
4.掌握数组的排序算法。
5.能够正确声明和使用一维数组。
6.能够对一维数组进行排序。
7.能够使用循环语句遍历数组并打印元素。
情感态度价值观目标:1.培养学生的逻辑思维能力。
2.培养学生的问题解决能力。
3.培养学生的团队合作意识。
二、教学内容本章节的教学内容主要包括数组的概念、声明、初始化、访问以及数组排序。
1.数组的概念和作用。
2.数组的声明和初始化,包括一维数组和多维数组。
3.数组的访问,包括使用循环语句遍历数组并打印元素。
4.数组的排序算法,包括冒泡排序和选择排序。
三、教学方法为了达到本章节的教学目标,将采用以下教学方法:1.讲授法:用于讲解数组的概念、声明、初始化、访问以及数组排序的基本原理。
2.案例分析法:通过分析实际案例,让学生更好地理解数组的应用。
3.实验法:让学生通过编写程序实践数组的操作,提高学生的实际编程能力。
四、教学资源为了支持本章节的教学内容和教学方法的实施,将准备以下教学资源:1.教材:《C语言程序设计》。
2.参考书:《C语言编程思想》。
3.多媒体资料:PPT课件、视频教程。
4.实验设备:计算机、编程环境。
五、教学评估为了全面、公正地评估学生在数组学习方面的掌握情况,将采用以下评估方式:1.平时表现:通过课堂提问、讨论和实验操作等环节,评估学生的参与度和理解程度。
2.作业:布置与数组相关的编程作业,评估学生对数组操作的掌握情况。
3.考试:包括期中考试和期末考试,题目将涵盖数组的概念、声明、初始化、访问以及数组排序等知识点。
4.平时表现:积极参与课堂活动,回答问题准确,讨论中能提出自己的见解。
5.作业:编程作业要求正确实现数组相关功能,代码规范,注释清晰。
6.考试:满分100分,60分为及格。
C语言上机程序设计题库【程序设计】功能:根据整型形参m,计算如下公式的值:y=sin(m)*10。
【参考代码】double y=0;y=sin(m)*10;return(y);功能:若x、y为奇数,求x到y之间的奇数和;若x、y为偶数,则求x到y之间的偶数和。
【参考代码】int i,s=0;for(i=x;i<=y;i+=2)s=s+i;return s;功能:编写程序,实现矩阵(3行3列)的转置(即行列互换)【参考代码】int i,j,t;for(i=0; i < 3; i++)for(j=0; j < i; j++){ t=array[i][j];array[i][j]=array[j][i];array[j][i]=t; }功能:求一个四位数的各位数字的立方和。
【参考代码】int d,s=0;while (n>0){d=n%10;s+=d*d*d;n/=10;}return s;功能:请编一个函数void fun(int tt[M][N],int pp[N]), tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。
二维数组中的数已在主函数中赋予。
【参考代码】int i,j;for(j=0;j<N;j++){pp[j]=tt[0][j];for(i=1;i<M;i++)if(tt[i][j]<pp[j])pp[j]=tt[i][j];}功能:求一组数中大于平均值的数的个数。
【参考代码】int i,k=0;float s=0,ave;for(i=0;i<n;i++)s+=a[i];ave=s/n;printf("%f ",ave);for(i=0;i<n;i++)if(a[i]>ave)k++;return k;题目:分别统计字符串中字母、数字、空格和其他字符出现的次数(字符长度小于80)。
第九章数组一、选择题[9.1] 假设已定义:int a[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0<=i<=9,那么对a数组元素的引用不正确的选项是A)a[p-a] B) *(&a[i]) C) p[i] D) *(*(a+i))【解析】A:p开场是数组a首地址,只要p++那么再减去a的首地址a[p-a]就能取到所有元素,B:&a[i]循环取其地址,*(&a[i]) 是该地址中所存储的元素C:p就是指针变量,相当于a[i],D:*(a+i) 那么正确[9.2] 以下程序段数组所有元素输入数据,应在下划线填入的是A) a+(i++) B) &a[i+1] C) a+i D) &a[++i]main(){ int a[10],i=0;while(i<10) scanf("%d",_);}【解析】因为要遍历,所以排除B.C,因为D先加1再取值,丢了a[0][9.3] 以下程序的输出结果是A) 3 B) 4 C) 1 D) 2main(){ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf("%d\n",*(p+2)); }【解析】*p=a;p指向首地址,*(p+2))往后移动两个元素,指向3[9.4] 以下程序的输出结果是A) 不确定的值 B) 3 C) 2 D) 1main(){ int n[2]={0},i,j,k=2;for(i=0;i<k;i++)for(j=0;j<k;j++)n[j]=n[i]+1;printf("%d\n",n[k]);}[9.5] 以下程序的输出结果是A)17 B)18 C)19 D)20main(){ int a[]={2,4,6,8,10},y=1,x,*p;p=&a[1];for(x=0;x<3;x++) y+=*(p+x);printf("%d\n",y);}【解析】p=&a[1]那么p指向元素为4,y+=*(p+x);相当于y=1+4+6+8=19[9.6] 以下程序的输出结果是A) 6 B) 8 C) 4 D) 2main(){ int a[]={2,4,6,8},*p=a,i;for(i=0;i<4;i++) a[i]=*p++;printf("%d\n",a[2]);}【解析】p=a,相当于重新把a中的容赋给a本身,所以a[2]=6[9.7] 以下程序的输出结果是A) 720 B) 120 C) 24 D) 6f(int b[],int n){ int i,r=1;for(i=0;i<=n;i++) r=r*b[i];return r;}main(){ int x,a[]={2,3,4,5,6,7,8,9};x=f(a,3);printf("%d\n",x);}【解析】调用x=f(a,3);for循环4次,将前四个元素相乘,即得r=2*3*4*5;[9.8] 以下程序中假设第一个printf语句输出的是194,那么第二个printf语句的输出结果是A) 212 B) 204 C) 1a4 D) 1a6 12main(){ int a[]={1,2,3,4,5,6,7,8,9,0},*p;p=a;printf("%x\n",p);printf("%x\n",p+9); }【解析】因为开场p的地址为194,p+9是指指针向后移动9个元素,而不是9个字节,每个int占2个字节,所以共移动18个字节,1个字节占一个存储单位,%x\n"是16进制,将18转化成16进制是12,所以194+12=2a6[9.9] 以下程序的输出结果是A) 0987654321 B) 4321098765 C) 5678901234 D) 0987651234fun(int *s,int n1,int n2){ int i,j,t;i=n1; j=n2;while(i<j){ t=*(s+i); *(s+i)=*(s+j); *(s+j)=t;i++; j--; }}main(){ int a[10]={1,2,3,4,5,6,7,8,9,0},i,*p=a;fun(p,0,3); fun(p,4,9); fun(p,0,9);for(i=0;i<10;i++) printf("%d",*(a+i));}【解析】为了使大家清晰地看出fun(int *s,int n1,int n2)的作用,我自己完善了程序如下:#include <stdio.h>#include <stdlib.h>fun(int *s,int n1,int n2){ int i,j,t;i=n1; j=n2;while(i<j){ t=*(s+i); *(s+i)=*(s+j); *(s+j)=t;i++; j--; }}main(){ int a[10]={1,2,3,4,5,6,7,8,9,0},i,*p=a;fun(p,0,3);for(i=0;i<10;i++) printf("%d",*(a+i)); printf("\n");fun(p,4,9);for(i=0;i<10;i++) printf("%d",*(a+i));printf("\n");fun(p,0,9);for(i=0;i<10;i++) printf("%d",*(a+i));printf("\n");}结果如下:其实,fun(p,0,3);就是将a中的前4个元素倒序,fun(p,4,9); 就是将a中的第5个到第10个倒序,最后fun(p,0,9);全部元素倒序。
验证传值和传地址的区别:
程序一:传值
void swap(int a,int b)
{ int t;
t=a; a=b; b=t;
}
main()
{ int x=10,y=20;
printf(“%d,%d\n”,x,y);
swap(x,y);
printf(“%d,%d\n”,x,y);
}
程序二:传地址
void swap(int *a,int *b)
{ int t;
t=*a; *a=*b; *b=t;
}
main()
{ int x=10,y=20;
printf(“%d,%d\n”,x,y);
swap(&x,&y);
printf(“%d,%d\n”,x,y);
}
上机练习1、定义一个数组,存放着10个整型数,编程对这10个数进行排序,输出排序结果。
上机练习2:有10个学生的成绩存在数组中,请统计大于等于平均成绩的人数。
上机练习3:有10个学生的成绩存在数组中,请统计最高分,最低分,并将最高分和最低分学生的下标输出到屏幕上。
上机练习4:现在一个数组存放10个整型数据(可以有相同),要求用户输入一个数,然后把数组中与其输入相同的数删除。