c语言编程有关数组的几道例题

合集下载

C语言编程题:数组

C语言编程题:数组

C语言编程题:数组
1. 任输入一个字符串, 查其中含有几个要求的子串.
参考答案
2. 任意输入两个字串放入两个字符数组中,并分别排序,然后采用“逐个比较两字串中字
符大小”的方法,将他们由小到大的合并到另一数组中。

参考答案
3. 一个数如果恰好等于它的因子之和,这个数就称为“完数”。

例如6=1+2+3.编程找出
1000以内的所有完数。

参考答案
4. 求100之内的素数
参考答案
5. 有一个已经排好序的数组。

现输入一个数,要求按原来的规律将它插入数组中。

参考答案 6. 将一个数组逆序输出。

参考答案
7. 打印出杨辉三角形(要求打印出10行如下图)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1 1 5 10 10 5 1 ……参考答案
8. 本程序从键盘输入一个5*5整型数组赋值,找出其中的最小值并显示出来。

参考答案 9. 实现矩阵(3行3列)的转置(即行列互换)。

参考答案
10. 要求程序的功能是:把20个随机数存入一个数组,然后输出该数组中的最小值。

其中
确定最小值的下标的操作在fun函数中实现,请给出该函数的定义。

参考答案。

C语言程序设计习题 数 组

C语言程序设计习题 数 组

数组1:输入10个整数,分别输出这10个数,再计算并输出它们的和。

2:输入10个不同的整数,将它们存入数组a中,再输入1个数x,然后在数组中查找x。

如果找到,则输出相应的下标,否则输出“not found”.3:输入1个正整数n(1<n<=10),再输入n个整数,将它们存入数组a中:(1)输出最小值与它所对应的下标(2)将最小值与第一个数交换,输出交换后的n个数4:编一函数,把一个字符串中从第i个字符开始的n个字符保存在另一个字符数组中,并输出。

5:编写程序:由键盘任意输入一串字符,判断是否为回文。

回文是首位对称相等的字符串,如:abcdcba是回文。

6:编写程序:验证下列矩阵是否为魔方阵。

魔方阵是每一行、每一列、每一对角线上的元素之和都是相等的矩阵。

17 24 1 8 1523 5 7 14 164 6 13 20 2210 12 19 21 311 18 25 2 97:编写程序:由键盘任意输入一串字符,再输入一个字符,统计这个字符在这串字符串中出现的次数。

8:编写程序:由键盘任意输入一串字符,在输入一个字符和一个位置,将此字符插入在这个字符串的这个位置上。

如:原来串为abcdef,输入字符k,位置是3,新串为abkcdef。

9:有3 ×4矩阵,其中数字为整型常数(如下图),求出其中最大元素和最小元素,并输出。

10:由键盘任意输入两个字符串,不用库函数strcat,将两个字符串连接。

11:由键盘任意输入一串字符,对其进行加密,加密原则为:如果为字母,将其循环右移两个字母,其他字符不变。

如:原串为ab12CDxyz,新串为cd12EFzab。

12:输入一个5*5的数组,分别求其主对角线和辅对角线上元素的和。

13:由键盘任意输入10个数,将最大数调到最前面,最小数调到最后面。

14:由键盘任意输入10个学生的姓名(以拼音形式),将它们按ASCII码的顺序从小到大排序,并输出。

c语言数组练习题及答案

c语言数组练习题及答案

c语言数组练习题及答案第一题:在数组a中,存放有n个学生的成绩.试编一函数:将低于平均分的学生人数m由函数值返回,将低于平均分的分数由数组b带回. int fun(int a[],int n,int b[]) {int i,m=0,aver=0;for(i=0;i<n;i++) aver+=a[i];aver/=n;for(i=0;i<n;i++)if(a[i]<aver) b[m++]=a[i];return m;}第二题:试编一函数:求出1000之间能被7或11整除,但不能同时被7或11整除的所有整数的个数n由函数值返回,并将符合条件的数放在数组a中带回. int fun(int a[]){int i,n=0;for(i=1;i<1000;i++)if((i%7==0&&i%11!=0)||(i%7!=0&&i%11==0)) a[n++]=i;return n;}第三题:试编一函数:将大于整数m且紧靠m的k个素数存入数组a中. void fun(int m,int k,int a[]) {int i,n,data,flag;data=m+1; n=0;while(n<k){flag=1;for(i=2;i<=data/2;i++)if(data%i==0){flag=0; break;}if(flag) a[n++]=data;data++;}}第四题:试编一函数:在数组a中有n个整数,要求把下标从0到p(p小于等于n-1)的数平移到数组的最后.如:原始内容: 1,2,3,4,5,6,7,8,9,10; 当p=4时:移后内容: 6,7,8,9,10,1,2,3,4,5void fun(int a[],int n,int p) {int i,j,t;for(i=0;i<=p;i++){t=a[0];for(j=1;j<n;j++) a[j-1]=a[j];a[n-1]=t;}}第五题:试编一函数:在具有n个数据的数组a中,求出次最大值的下标并由函数值返回.int fun(int a[],int n){int i,j,max,may;if(a[0]>a[1]){max=0; may=1;}else {max=1; may=0;}for(i=2;i<n;i++)if(a[i]>a[max]){may=max;amx=i;}else if(a[i]>a[may]) may=i;return may;}第六题:在数组a中有n个四位数.试编一函数,要求按每个数的后三位的大小进行升序排列,当后三位等相同时,则对这些数值按原始四位数据进行降序排序.将排序后的前10个数存入数组b中.(提示:可采用选择排序)int fun(int a[],int n,int b[]) {int i,j,k,t,m=10;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(a[j]%1000<a[k]%1000) k=j;else if(a[j]%1000==a[k]%1000 && a[j]>a[k]) k=j;if(k!=i){t=a[i]; a[i]=a[k]; a[k]=t;}}for(i=0;i<m;i++) b[i]=a[i];return m;}第七题:在三位数(100至999)中寻找符合下面条件的整数.它即是完全平方数,又有两位数字相同.(如:144,676;)并将符合条件数的个数n由函数值返回,符合条件的数存入数组a中返回.int fun(int a[]){int i,j,hun,ten,data,n=0;for(i=10;i<32;i++){j=i*i;if(j>=100&&j<=999){hun=j/100;ten=j%100/10;data=j%10;if(hun==ten||ten==data||data==hun) a[n++]=j;}}return n;}第八题:判断一个长整型数是否为回文数(回文数是指其数字左右对称的整数).当该数是回文数时,函数值返回1,否则返回0.(提示:利用逻辑量flag进行操作). intfun(long m){int i=0,n=0,flag=1,a[20];while(m){a[n]=m%10; m=m/10; n++;}while(i<=n/2 && flag)if(a[i]!=a[--n] flag=0;else i++;return flag;}第九题:在数组a中存有n个数据,试编一函数:依次从数组中取出一个数据,如查该数连续大于该数以后的5个数且该数是奇数,统计出满足此条件数的个数m由函数值返回,并把这些数按从小到大的顺序存入数组b中.int fun(int a[],int n,int b[]) {int i,j,flag,m=0;for(i=0;i<n-5;i++){for(j=i+1;j<=i+5;j++)if(a[i]>a[j]) flag=1;else {flag=0; break;}if(flag==1 && a[i]%2==1) b[m++]=a[i];}for(i=0;i<m-1;i++)for(j=0;j<m-1-i;j++)if(b[j]>b[j+1]){flag=b[j]; b[j]=b[j+1]; b[j+1]=flag;}return m;}第十题:在数组a中有n个四位数,试编一函数:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数m由函数值返回,再把所有满足此条件的四位数依次存入数组b中,然后对数组b中的四位数按从小到大的顺序排序.int fun(int a[],int n,int b[]) {int i,j,m,thou,hun,ten,data;for(i=0;i<n;i++){thou=a[i]/1000;hun=a[i]%1000/100;ten=a[i]%100/10;data=a[i]%10;if(thou+data==hun+ten) b[m++]=a[i];}for(i=0;i<m-1;i++)for(j=0;j<m-1-i;j++)if(b[j]<b[j+1]){data=b[j]; b[j]=b[j+1]; b[j+1]=data;}}第十一题:在数组a中有n=100个人围坐一圈并按顺时针方向从1到n编号,从第s=1个人开始进行从1到m=10的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止,现要求将出圈次序重新存入数组a中.void fun(int a[],int n,int s,int m) {int i,j,k,l,x;i=s-1; k=0; l=n;while(l>0){k++;if(k==m){x=a[i];for(j=i+1;j<n;j++) a[j-1]=a[j];a[n-1]=x;k=0; l--;}else i++;if(i==l) i=0;}}。

C语言习题(6)

C语言习题(6)

C语言习题(6)第六章数组一.填空题1.C语言数组的下标总是从开始,不可以为负数;构成数组各个元素具有相同的。

2.在C语言中,二维数组的元素在内存中的存放顺序是。

3.若有定义:double x[3][5],则x数组中行下标的下限为,列下标的上限为。

4.若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]的值为,a[2][1]得到的值为。

5.若有定义int a[][4]={1,2,3,4,5,6,7,8,9},则数组a第一维的大小为。

6.设char str[100]=”Hangzhou”;则数组str所在内存空间应为字节。

7.下列程序的输出结果是。

char str[ ][10]={”abcd”,”1234”,”efgh”,”5678”};int k=1;printf(“%s”,str[k++]);8.欲将字符串S1复制到字符串S2中,其语句是。

9.如果在程序中调用了strcat函数,则需要预处理命令;如果调用了gets函数,则需要预处理命令。

10.字符串是以为结束标志的一维字符数组。

有定义:char a[]=”China”;则a数组的长度是。

11.数组在内存中占用一段连续的存储空间,该存储空间的首地址用表示。

12.调用strlen(“abcd\0ef\0g”)的返回值为。

二.选择题1.在C语言中,引用数组元素时,其数组下标的数据类型允许是。

A)整型常量B)整型表达式C)整型常量或整型表达式C)任何类型的表达式2.以下对一维整型数组a的正确说明是。

A)int a(10) ; B)int n=10,a[n];C)int n; D)#define SIZE 10scanf(“%d”,&n);int a[SIZE];int a[n];3.若有定义:int a[10],则对数组a元素的正确引用是。

A)a[10] B)a[3.5] C)a(5) D)a[10-10]4.若有定义:int a[3][4],则对数组a元素的正确引用是。

数组编程练习

数组编程练习

C程序常用编程(数组)1、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。

2、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。

求该数组的最大值、最小值、总和和平均值并输出。

3、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。

按照升序排列并输出。

4、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。

编程将逆序数组输出。

5、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。

按照升序排列并输出。

再输入一个数,按照原来的规律将其插入并输出。

6、用数组输出Fibonacci数列的前40项7、用筛选法求100以内的素数8、产生一个由15个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。

按照升序排列并输出。

再输入一个数,要求找出该数是数组中的第几个元素,如果不在数组中,输出找不到。

9、将一个二维数组(3行4列)的行和列互换(转置),存到另一个二维数组(4行3列)中并输出。

10、编程输出杨辉三角(要求输出10行)11、编程输入5阶魔方阵。

12、找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列最小。

可能没有鞍点。

13、输入一行字符,统计大写字母、小写字母、数字、空格以及其他字符个数。

14、有一行电文,按照下列规律译成密码:A → Z a → zB → Y b → yC → X c → x……非字母不变。

15、编写程序,将两个字符串连接起来,不用strcat函数。

14、编写程序实现strcpy函数功能。

16、编写程序实现strncpy函数功能。

17、编程实现strcmp函数功能。

18、编程实现strlen函数功能。

c语言二维数组经典例题

c语言二维数组经典例题

c语言二维数组经典例题题目:有一个3×4的二维数组,求该二维数组中的最大元素及其所在的行和列。

#include <stdio.h>int main() {int arr[3][4] = {{1, 5, 3, 4},{9, 2, 7, 8},{6, 3, 5, 2}};int max = arr[0][0];int row = 0, col = 0;// 遍历二维数组for (int i = 0; i < 3; i++) {for (int j = 0; j < 4; j++) {if (arr[i][j] > max) {max = arr[i][j];row = i;col = j;}}}printf("最大元素是 %d,位于第 %d行,第 %d列\n", max, row + 1, col + 1);return 0;}题目解析:1. 初始化二维数组- 首先定义并初始化了一个3×4的二维数组`arr`。

这个二维数组有3行4列,存储了一些整数元素。

2. 寻找最大元素- 先假设二维数组的第一个元素`arr[0][0]`为最大元素,将其赋值给变量`max`,并记录其行索引为0(`row = 0`),列索引为0(`col = 0`)。

- 然后使用嵌套的`for`循环遍历整个二维数组。

外层`for`循环控制行,内层`for`循环控制列。

- 在循环中,对于每个元素`arr[i][j]`,如果它大于当前的最大元素`max`,则更新`max`的值为`arr[i][j]`,同时更新`row`为当前行`i`,`col`为当前列`j`。

3. 输出结果- 根据找到的最大元素`max`以及其所在的行`row`和列`col`,输出结果。

需要注意的是,由于数组索引从0开始,而在实际生活中我们习惯从1开始计数行和列,所以在输出行和列的时候,我们输出`row + 1`和`col + 1`。

C语言练习3(数组)=参考解答

C语言练习3(数组)=参考解答

C语言(数组)一、选择题1. 设有程序:main(){ int i,a[11];printf("给数组赋值:\n");for (i=0;i<=10;i++)scanf("%d",( ));... ...printf("输出数组:\n");for(i=0;i<=10;i++)printf("%d,",( ));}则在程序中的两个园括号中分别应填入:CA) &a[i]和&a[i]B) a[i]和&a[i]C) &a[i]和a[i]D) a[i]和a[i]2. 设已定义:int a[15]; 则数组a占用的内存单元数是( C ).A) 15 B) 16 C) 30 D) 323. 阅读程序:main(){ int a[2]={0},i,j,k=2;for(i=0;i<k;i++)for(j=0;j<k;j++) a[j]=a[i]+1;printf("%d\n",a[k]);}以上程序的输出结果是( D ).A) 1 B) 3 C) 2 D) 不确定的值4. 阅读程序:f(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);}以上程序的输出结果是( D ).A) 720 B) 6 C)24 D) 1205. 以下定义语句中,错误的是( B ).A) int a[ ] = {6,7,8};B) int n=5, a[n];C) char a[ ]= "string";D) char a[5 ]={'0','1','2','3','4'};6. 以下描述中正确的是( D ).A) 数组名后面的常量表达式用一对圆括弧括起来B) 数组下标从1开始C) 数组下标的数据类型可以是整型或实型D) 数组名的规定与变量名相同7. 若定义数组并初始化char a[10]={'0','1 ','2','3','4','5','6','7','8','9'};指出以下错误语句( AB ).A) scanf("%c",a[0]);B) scanf("%s",&a);C) printf("%c",a[3]);D) printf("%s",a);8.若定义数组int a[10] ,其最后一个数组元素为( C ).A) a[0]C) a[9]D) a[10]9. 若定义数组并初始化int a[10]={ 1,2,3,4},以下语句哪一个不成立( B )?A) a[8] 的值为0B) a[1] 的值为1C) a[3] 的值为4D) a[9] 的值为010. 指出以下错误语句( A ).A) int n=10,a[n];B) int n,a[10];C) int a[10]={1,2,3};D) int a[10]={1,2,3,4,5,6,7,8,9,10};11. 请读程序:main(){int n[2],i,j,k;for(i=0;i<2;i++) n[i]=0;k=2;for(i=0;i<k;i++)for(j=0;j<k;j++) n[j]=n[i]+1;printf("%d\n",n[k]);}上面程序的输出结果是( A ).A)不确定的值 B)3 C)2 D)112. 若有以下的定义和语句:int str[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='e',则数值为2的表达式是( C ).A)str['g'-c] B)str[2] C)str['d'-'c'] D)str['d'-c]13. 设有数组定义:int a[5];则下列给数组元素赋值错误的是( B ).B) scanf("%c",a[3]);C) a[3]=getchar();D) a[3]='a'+3;14. 以下数组定义中错误的是( D ).A) #define N 30int a[N+30];B) #define N 30int a[N];C) int a[30];D) int a[N];15. 在定义一个一维数组时,不能用来表示数组长度的是( D ).A)常量 B)符号常量 C)常量表达式 D) 已被赋值的变量16. 若float型变量占用4个字节,有定义float a[20]={1.1,2.1,3.1};则数组a在内存中所占的字节数是( D ).A)12 B)20 C)40 D)8017. 设已定义:int x[2][4]={1,2,3,4,5,6,7,8}; 则元素x[1][1]的正确初值是( A ).A) 6 B) 5 C) 7 D) 118. 设有定义:int a[][3]={{1,2,3},{4,5,6},{7,8,9}}; 则a[1][2]的初值为( C ).A) 2 B) 4 C) 6 D) 819. 设有:int a[4][5]; 则数组a占用的内存字节数是( C ).A) 12 B) 24 C) 40 D) 2020. 以下数组定义中,不正确的是( B ).A) int b[3][4];B) int c[3][ ]={{1,2},{1,2,3},{4,5,6,7}};C) int b[200][100]={0};D) int c[ ][3]={{1,2,3},{4,5,6}};21. 定义数组:int x[2][3]; 则数组x 的维数是( 2 ).A) 1 B) 2 C) 3 D) 622. 若定义数组并初始化int b[2][3]= { 1,2,3,4,5,6},以下语句哪一个成立( C )?A) 表达式b[1][2]的值为1B) 表达式b[1][2]的值为4C) 表达式b[1][2]的值为6D) 表达式b[1][2]的值为223. 若定义数组并初始化int a[2][3]={{1,2,3},{4,5,6}};for(i=0;i<2;i++)for(j=0;j<3;j++)printf("%d",a[i][j]);语句的结果是哪一个( C )?A) 1,2,3,4,5,6B) 1 2 3 4 5 6C) 12345624. 若定义数组并初始化int a[2][3]= {{1,2, 3},{4,5,6}};以下语句哪一个不成立( B )?A) a数组中有6个元素B) a[2][3]是a数组的最后一个元素的引用C) a数组中每个元素都为整数D) a数组是整型数组25. 定义如下变量和数组:int i;int x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是( C ).for(i=0;i<3;i++) printf("%d",x[i][2-i]);A) 1 5 9 B) 1 4 7 C) 3 5 7 D) 3 6 926. 如有以下定义:double s[][5]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14};则数值为2的元素是( C ).A) s[1][3] B) s[0][3] C) s[0][2] D) s[1][2]27. 以下程序的输出结果是( A ).main(){int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf("%d",s);}A) 18 B) 19 C) 20 D) 2128. 若已有char b[10][50];则该二维字符数组在内存所占字节数为( D ).A) 10 B)50 C)60 D)50029. 设有:char a[10]; 下列语句那个是正确的( D )?A) scanf("%s",a[0]);B) scanf("%s",&a);C) printf("%s",a[0])D) printf("%s",a)30. 阅读程序:main(){ char a[10];int i;for(i=1;i<=5;i++)scanf("%c",&a[i]);printf("%c",a[0]);}设从键盘输入字符串:abcde,则程序的输出结果是( C ).A) a B)空格 C)不确定D)031. 合法的数组定义是( D ).A) int a[ ] = "string";B) int a[5]={0,1,2,3,4,5};C) char a= "string";D) char a[ ]={'0','1','2','3'};32. 设有数组定义:char string[ ]="China";则数组string所占的空间为( B ).A) 5个字节B) 6个字节C) 7个字节D) 10个字节33. 定义字符数组c:char c[ ]={"c language"};数组c在内存中所占字节数是( C ).A) 9 B) 10 C) 11 D) 1234. 指出以下错误语句( C ).A) char a[10]={'0','1','2','3','4','5','6','7','8','9'};B) char a[10]={'0','1 ','2','3'};C) char a[2]= {"1","2"};D) char a[2]= {'a’,'b’};35. 若定义数组并初始化char a[10]={"hello"},该数组的元素个数是( A ).A) 10B) 5C) 6D) 736. 若定义数组并初始化char a[10]={"HELLO"},该数组的元素中 a[2]是( A ).A) 'L'B) 'E'C) 'H'D) 'O'37. 若定义数组并初始化int b[10]={ 1,2,3,4},以下哪几个语句成立( A C D)?A)b[8]的值为0B)b[1]的值为1C)b[3]的值为整数D)b[10]不是b数组中的元素38. 若定义数组int a[10];指出下列错误语句:ABCDA) a数组共有10个元素,其引用方法是:a[1],a[2]...a[10];B) a数组是整型数组,其元素自动初始化为0;C) a数组最后一个元素的引用方法是a[10];D) a数组第一个元素的引用方法是a[1];二、判断题1.数组是数目固定的若干变量的有序集合,数组中各元素的类型可以不同。

C语言数组练习及答案

C语言数组练习及答案

第四部分数组4.1 选择题1. 以下关于数组的描述正确的是(c )。

A. 数组的大小是固定的,但可以有不同的类型的数组元素B. 数组的大小是可变的,但所有数组元素的类型必须相同C. 数组的大小是固定的,所有数组元素的类型必须相同D. 数组的大小是可变的,可以有不同的类型的数组元素2. 以下对一维整型数组a的正确说明是(d )。

A.int a(10);B. int n=10,a[n];C.int n;D. #define SIZE 10scanf("%d",&n); int a[SIZE];int a[n];3. 在C语言中,引用数组元素时,其数组下标的数据类型允许是(c )。

A. 整型常量B. 整型表达式C. 整型常量或整型表达式D. 任何类型的表达式4. 以下对一维数组m进行正确初始化的是(c )。

A. int m[10]=(0,0,0,0) ;B. int m[10]={ };C. int m[ ]={0};D. int m[10]={10*2};5. 若有定义:int bb[ 8];。

则以下表达式中不能代表数组元bb[1]的地址的是(c )。

A. &bb[0]+1B. &bb[1]C. &bb[0]++D. bb+16. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是(d )。

A. 3B. 6C. 10D. 207. 若有以下说明:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='a',d,g;则数值为4的表达式是(d )A. a[g-c]B. a[4]C. a['d'-'c']D. a['d'-c]8. 以下程序段给数组所有的元素输入数据,请选择正确答案填入(a )。

#include<stdio.h>main(){int a[10],i=0;while(i<10) scanf("%d",________ );┇}A. a+(i++)B. &a[i+1]C. a+iD. &a[++i]9. 执行下面的程序段后,变量k中的值为(a )。

C语言编程实例100题(带解析适合新手超经典)

C语言编程实例100题(带解析适合新手超经典)

C语言程序实例100个(一)【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。

组成所有的排列后再去掉不满足条件的排列。

2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++)/*以下为三重循环*/ for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k);}}==============================================================【程序2】题目:企业发放的奖金根据利润提成。

利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。

注意定义时需把奖金定义成长整型。

2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}==============================================================【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。

C语言例题解析数组

C语言例题解析数组

(2)其中continue语 句的作用是_____;
(3)标记红色语句的 作用是____.
for (i=16;i<1000;i++)
{ if (i%17!=0) continue;
j++;
printf((j==4)?j=0,”%d\n”:”%d\t”,i);
}
}
2. 以下程序分别在a数组和b数组 中放入an+1和bn+1个由小到大的 有序数,程序把两个数组中的数按 由小到大的顺序归并到c数组中.
#include <stdio.h> main() { int a[10]={1,2,5,8,9,10};an=5;
int b[10]={1,3,4,8,12,18};bn=5; int i,j,k,c[20],max=9999; a[an+1]=b[bn+1]=max; i=j=k=0; while ((a[i]!=max)||(b(j)!=max))
3. 若有以下说明语句,则输出结果是:___ char sp[]=“\x69\082\n”; printf(“%d”,strlen(sp));
A.3 B. 5 C. 1 D. 字符串中有非法字符,输出值不定
4. int x=3; do {printf(“%2d\n”,x-=2);}while (!(--x)
的输出是_____ A. 1 B. 1, -2 C. 3, 0 D. 是死循环
填充题
1. 以下程序把一由小到大的数列放在 a[1]到a[n]中,a[0]用做工作单元,程序 把读入的x值插入到a 数组中,插入后, 数组中的数仍然有序,请填充.
#include <stdio.h> main() { int a[10]={0,12,17,20,25,28},x,i,n=5;

C语言数组百道练习题含答案

C语言数组百道练习题含答案

C) int a(10);
D)#define SIZE 10
int a[SIZE];
6.3 若有说明:int a[10];则对数组元素的正确引用是 D 。 A)a[10] B)a[3,5] C)a(5) D)a[10-10]
6.4 在 C 语言中,一维数组的定义方式为:类型说明符 数组名 D 。
A)[常量表达式]
6.18 下面程序有错误的行是 D (行前数字表示行号)。
1 main() 2{ 3 int a[3]={0}; 4 int i; 5 for(i=0;i<3;i++) scanf("%d",&a[i]); 6 for(i=1;i<4;i++) a[0]=a[0]+a[i]; 7 printf("%d\n",a[0]); 8}
C)因为二维数组 a 中第二维大小的值除初值个数的商为 0,故数组 a 的行数为 1
D)只有元素 a[0][0]和 a[0][1]可得到初值 0,其余元素均得不到初值 0
6.13 若有说明:static int a[3][4];则数组中各元素 B 。
A)可在程序的运行阶段得到初值 0
B)可在程序的编译阶段得到初值 0
} } A) 1 1 1 1 1
11111 11111 11111 11111
B) 0 0 0 0 1 00010 00100 01000 10000
C) 1 0 0 0 0 01000 00100 00010 00001
D) 1 0 0 0 1 01010 00100 01010 10001
6.28 下面程序的运行结果是 C 。
A。 for(k=0;k<3;k++) printf("%d ",a[k][2-k]); A)3 5 7 B)3 6 9 C)1 5 9 D)1 4 7

C语言数组选择题(新)五篇

C语言数组选择题(新)五篇

C语言数组选择题(新)五篇第一篇:C语言数组选择题(新)1、以下定义语句中,错误的是________。

A)int a[]={1,2};B)char a[]={“test”};C)char s[10]={“test”};D)int n=5,a[n];D2、以下对一维数组a进行正确初始化的是__________。

A)int a[10]=(0,0,0,0,0);B)int a[10]={ };C)int a[ ]={0};D)int a[10]={ 10*2};C3、以下对二维数组a进行正确初始化的是__________。

A)int a[2][3]={ {1,2},{3,4},{5,6} };B)int a[ ][3]={1,2,3,4,5,6 };C)int a[2][ ]={1,2,3,4,5,6};D)int a[2][ ]={ { 1,2},{3,4}};B4、在定义int a[5][4];之后,对a的引用正确的是________。

A)a[2][4]B)a[1,3] C)a[4][3]D)a[5][0] C5、以下给字符数组str定义和赋值正确的是________。

A)char str[10];str={“China!”};B)char str[ ]={“China!”};C)char str[10];strcpy(str,“abcdefghijkl”);D)charstr[10]={“abcdefghijkl”};B6、以下一维数组a的正确定义是________。

A)int a(10);B)int n=10,a[n];C)int n;D)#define SIZE 10scanf(“%d”,&n);int a[SIZE];int a[n];D7、在执行语句:int a[ ][3]={1,2,3,4,5,6};后,a[1][0]的值是________。

A)4B)1 C)2D)5 A8、当接受用户输入的含有空格的字符串时,应使用________函数。

C语言习题六(数组部分)习题及答案

C语言习题六(数组部分)习题及答案

C语言习题六(数组部分)习题及答案习题六一.选择题1.在C语言中,引用数组元素时,其数组下标的数据类型允许是c 。

A)整型常量B)整型表达式C)整型常量或整型表达式C)任何类型的表达式2.以下对一维整型数组a的正确说明是DA)int a(10) ; B)int n=10,a[n];C)int n; D)#define SIZE 10scanf(“%d”,&n);int a[SIZE];int a[n];3.若有定义:int a[10],则对数组a元素的正确引用是 D 。

A)a[10] B)a[3.5] C)a(5) D)a[10-10]4.以下不能对一维数组a进行正确初始化的语句是B 。

A)int a[10]={0,0,0,0,0}; B)int a[10]={} ;C)int a[ ] = {0} ; D)int a[10]={10*1} ;5.若有定义:int a[3][4],则对数组a元素的正确引用是。

AA)a[2][3] B)a[1,3] C)a(5) D)a[10-10]6.以下能对二维数组a进行正确初始化的语句是B。

A)int a[2][]={{1,0,1},{5,2,3}} ;B)int a[][3]={{1,2,3},{4,5,6}} ;C)int a[2][4]={{1,2,3},{4,5},{6}} ;D)int a[][3]={{1,0,1},{},{1,1}} ;7.以下不能对二维数组a进行正确初始化的语句是。

CA)int a[2][3]={0} ;B)int a[][3]={{1,2},{0}} ;C)int a[2][3]={{1,2},{3,4},{5,6}} ;D)int a[][3]={1,2,3,4,5,6} ;8.若有说明:int a[3][4]={0};则下面正确的叙述是D。

A)只有元素a[0][0]可得到初值0B)此说明语句不正确C)数组a中各元素都可得到初值,但其值不一定为0D)数组a中每个元素均可得到初值09.若有说明:int a[][4]={0,0};则下面不正确的叙述是D。

c数组练习题

c数组练习题

c数组练习题在C语言中,数组是一种非常重要的数据结构。

通过数组,我们可以有效地存储和操作多个相同类型的数据。

本篇文章将介绍一些常见的C数组练习题,帮助您提高对数组的理解和运用能力。

一、数组元素求和编写一个C程序,用于计算给定数组中所有元素的和。

首先,我们声明一个包含整数的数组,并从用户那里获取输入。

然后,我们使用一个循环结构来遍历数组,并将每个元素累加到总和变量中。

最后,打印出求和的结果。

```c#include <stdio.h>#define SIZE 5int main() {int arr[SIZE];int sum = 0;printf("请输入%d个整数:\n", SIZE);for (int i = 0; i < SIZE; i++) {scanf("%d", &arr[i]);sum += arr[i];printf("数组元素之和: %d\n", sum);return 0;}```二、查找数组中的最大值和最小值编写一个C程序,用于查找给定数组中的最大值和最小值。

我们首先声明一个包含整数的数组,并从用户那里获取输入。

然后,我们使用两个变量来保存数组中的最大和最小值,并通过遍历数组来更新这些变量。

最后,打印出最大和最小值。

```c#include <stdio.h>#define SIZE 5int main() {int arr[SIZE];int max, min;printf("请输入%d个整数:\n", SIZE);for (int i = 0; i < SIZE; i++) {scanf("%d", &arr[i]);max = min = arr[0];for (int i = 1; i < SIZE; 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;}```三、反转数组元素编写一个C程序,用于反转给定数组中的元素顺序。

C语言习题数组部分

C语言习题数组部分

C语言习题数组部分1、设char a[]=”abx\t1\128\\0”;则数组a的长度是_____。

2、以下程序的功能是()main(){int a[10]={3,5,9,2,1,8,0,4,6,7},i,p=0,q=0;for(i=0;i<10;i++){if(a[i]<q) q=a[i];if(a[i]>a[p]) p=i;}printf(“\n%d,%d”,q,p);}A. 求最大值和最小值B. 求最大值的位置和最小值的位置C. 求最大值的位置和最小值D. 求最大值和最小值的位置3、以下程序中,有一个不符合C语法规则的语句,这个语句是() #define M 10Main(){A. int i,n,a[M*10];scanf(“%d”,&n);B. int b[n];C. {int n=1000;D. for(i=0;i<n;i++)scanf(“%d”,a+i);} }4、对以下实现循环移位(将前9个数向后移一个位置,最后一个数移到最前面)的各程序段中个,正确的是()。

A. main(){ int i,k,a[10]={0,1,2,3,4,5,6,7,8,9};k=a[9];for (i=9;i>0;i--)a[i+1]=a[i];a[0]=k;}B. main(){ int i,k,a[10]={0,1,2,3,4,5,6,7,8,9};k=a[9];for (i=9;i>0;i--)a[i]=a[i-1];a[0]=k;}C. main(){ int i,k,a[10]={0,1,2,3,4,5,6,7,8,9};k=a[9];for (i=1;i>10;i++)a[i]=a[i-1];a[0]=k;}D. main(){ int i,k,a[10]={0,1,2,3,4,5,6,7,8,9};k=a[9];for (i=9;i>0;i--)a[i]=a[i-1];a[0]=k;}5、以下程序的运行结果是()Main(){int k=4,a=3,b=2,c=1;Printf(“\n%d\n”,k<a?k:c<b?c:a);}A. 1B. 2C. 3D. 46、以下二维数组a的正确说明是()A. int a[0][1]B. float a(3,4);C. doubule a[1][4];D. float a(3)(4)7、以下程序的运行结果是()main(){char a[]=”abcXYZ789”;int j,k=0;for(j=0;a[j];j++)if(a[j]>a[k])k=j;j=a[0];a[0]=a[k];a[k]=j;printf(“%s”,a);}A. ZbcXYa789B. 7bcXYZa89C. cbaXYZ789D. 9bcXYZ78a8、以下程序的运行结果是()main(){char a[]=”morning”,t;int j,j=0;for(i=1;i<7;i++)if(a[j]<a[i]) j=i;t=a[j];a[j]=a[7];a[7]=a[j];puts(a);}A. moB. morningC. mogninrD. mornin9、以下程序的运行结果是()main(){int i;char a[]=”ab12”;for(i=0;a[i];i++)switch(a[i]){ case 1:printf(“%d”,a[i]);break;case 2:printf(“%d”,a[i]);break;default: if(a[i]>=’a’&&a[i]<=’z’)putchar(a[i]);else printf(“%d”,a[i]+1); }A. ab12B. ab23C. ab5051D. ab495010、下列程序的正确输出结果是()#define SUB(X,Y) (X)*Y main(){i nt a=3,b=4;printf(“%d”,SUB(a+b.a+b));} A. 19 B. 49 C.31 D.25 答案1 102 C3 B4 B5 A6 C7 C8 A9 C10 D。

C语言程序设计习题 数 组

C语言程序设计习题 数 组

数组1:输入10个整数,分别输出这10个数,再计算并输出它们的和。

2:输入10个不同的整数,将它们存入数组a中,再输入1个数x,然后在数组中查找x。

如果找到,则输出相应的下标,否则输出“not found”.3:输入1个正整数n(1<n<=10),再输入n个整数,将它们存入数组a中:(1)输出最小值与它所对应的下标(2)将最小值与第一个数交换,输出交换后的n个数4:编一函数,把一个字符串中从第i个字符开始的n个字符保存在另一个字符数组中,并输出。

5:编写程序:由键盘任意输入一串字符,判断是否为回文。

回文是首位对称相等的字符串,如:abcdcba是回文。

6:编写程序:验证下列矩阵是否为魔方阵。

魔方阵是每一行、每一列、每一对角线上的元素之和都是相等的矩阵。

17 24 1 8 1523 5 7 14 164 6 13 20 2210 12 19 21 311 18 25 2 97:编写程序:由键盘任意输入一串字符,再输入一个字符,统计这个字符在这串字符串中出现的次数。

8:编写程序:由键盘任意输入一串字符,在输入一个字符和一个位置,将此字符插入在这个字符串的这个位置上。

如:原来串为abcdef,输入字符k,位置是3,新串为abkcdef。

9:有3 ×4矩阵,其中数字为整型常数(如下图),求出其中最大元素和最小元素,并输出。

10:由键盘任意输入两个字符串,不用库函数strcat,将两个字符串连接。

11:由键盘任意输入一串字符,对其进行加密,加密原则为:如果为字母,将其循环右移两个字母,其他字符不变。

如:原串为ab12CDxyz,新串为cd12EFzab。

12:输入一个5*5的数组,分别求其主对角线和辅对角线上元素的和。

13:由键盘任意输入10个数,将最大数调到最前面,最小数调到最后面。

14:由键盘任意输入10个学生的姓名(以拼音形式),将它们按ASCII码的顺序从小到大排序,并输出。

C语言数组例题

C语言数组例题

课堂练习课堂练习:#include "stdio.h"void main( ){int a[6][6], i , j;for ( i=1 ; i<6 ; i++ )for ( j=1 ; j<6 ; j++)a[i][j]=( i/j )*( j/i );for ( i=1 ; i<6 ; i++ ){for ( j=1 ; j<6 ; j++)printf(“ %d",a[i][j]);printf("\n");}}答案:1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1void main( ){char ch[7]={ "12ab56" };int i ,s=0;for ( i=0 ; ch[i]>='0'&&ch[i]<='9' ; i=i+2 )s=10*s+ch[i]-'0';printf("%d\n",s);}答案:1#include "string.h"void main( ){char a[80]="AB",b[80]="LMNP";int i=0;strcat( a , b );while ( a[i++]!='\0‘ ) b[i]=a[i];puts( b );}答案:LBLMNPvoid main( ){char str[ ]="SSSWLIA", c;int k;for ( k=2 ; (c=str[k])!='\0' ; k++ ){switch ( c ){case 'I': ++k; break;case 'L': continue;default : putchar(c); continue;}putchar('*');}答案:SW*void main( ){char a[ ]="morning", t;int i , j=0;for ( i=1 ; i<7 ; i++) if ( a[j]<a[i] ) j=i;t=a[j];a[j]=a[7];a[7]=t;puts( a );}答案:movoid main( ){int a[5][5], i, j, n=1;for ( i=0 ; i<5 ; i++ )for ( j=0 ; j<5 ; j++ )a[i][j]=n++;printf("the result is:\n");for ( i=0 ; i<5 ; i++ ){for ( j=0 ; j<=i ; j++ )printf("%4d",a[i][j]);printf("\n");}答案:16 711 12 1316 17 18 1921 22 23 24 25#include "stdio.h"void main( ){int a[10]={ 1 , 2 , 2 , 3 , 4 , 3 , 4 , 5 , 1 , 5 };int n=0, i , j , c , k;for ( i=0 ; i<10-n ; i++ ){c=a[i];for ( j=i+1 ; j<10-n ; j++ )if( a[j]==c ){for ( k=j ; k<10-n ; k++ )a[k]=a[k+1];n++;}}for ( i=0 ; i<10-n ; i++ )printf("%d ",a[i]);答案:1 2 3 4 5void main( ){int i=1 , n=3 , j , k=3;int a[5]={ 1 , 4 , 5 };while ( i<=n&&k>a[i] ) i++;for ( j=n-1 ; j>=i ; j--)a[j+1]=a[j];a[i]=k;for ( i=0 ; i<=n ; i++ )printf("%3d",a[i]);}答案:1 3 4 5void main( ){int num_list[ ]={ 6,7,8,9 }, k , j , b ,u=0,m=4,w;w=m-1;while ( u<=w ){ j=num_list[u];k=2;b=1;while ( k<=j/2&&b ) b=j%++k;if ( b ) printf("%d\n",num_list[u++]);else{ num_list[u]=num_list[w];num_list[w--]=j;答案:7void main( ){int a[9]={ 0, 6, 12, 18, 42, 44, 52, 67, 94 };int x=52, i, n=9, m;i=n/2+1;m=n/2;while ( m!=0 ){ if ( x<a[i] ){ i=i-m/2-1; m=m/2; }else if ( x>a[i] ){ i=i+m/2+1; m=m/2; }else break;}printf("The index is:%d\n",i);答案:The index is:6void main( ){int i, j, row, col, min;int a[3][4]={ {1,2,3,4} , {9,8,7,6} , {-1,-2,0,5} };min=a[0][0];for ( i=0 ; i<3 ; i++ )for ( j=0 ; j<4 ; j++ )if ( a[i][j]<min ){ min=a[i][j]; row=i; col=j; }printf("min=%d,row=%d,col=%d\n",min,ro w+1,col+1);}答案:min=-2,row=3,col=2void main( ){int a[10]={ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };int k, s, i;float ave;for ( k=s=i=0 ; i<10 ; i++ ){ if ( a[i]%2==0 ) continue;s=s+a[i];k++;}if ( k!=0 ){ ave=s/k;printf("The number is:%d,\nThe average is:%f\n",k,ave);}答案:The number is:5,The average is:5.00#define SIZE 30void main( ){float a[SIZE], b[SIZE/5], sum; int i, k;for ( k=2, i=0 ; i<SIZE ; i++ ){ a[i]=k; k=k+2;}for ( k=0, i=0, sum=0 ; i<SIZE ; i++ ){ sum=sum+a[i];if ( ( i+1 )%5==0 ){ b[k]=sum/5; sum=0; k++; }}printf("The result is:\n");for (i=0;i<SIZE/5;i++) printf("%3.0f ",b[i]);The result is:6 16 26 36 46 56void main( ){char x[ ]="the teacher";int i=0;while ( x[++i]!='\0' )if ( x[i-1]=='t' )printf("%c",x[i]); }答案:hevoid main( ){int i;char a[ ]="Time",b[ ]="Tom";for ( i=0 ; a[i]!='\0'&&b[i]!='\0' ; i++ )if ( a[i]==b[i] )if ( a[i]>='a'&&a[i]<='z' )printf("%c",a[i]-32);else printf("%c",a[i]+32);else printf("*");}答案:t*Mvoid main( ){char a[2][6]={"Sun","Moon"};int i, j, len[2];for( i=0 ; i<2 ; i++ ){ for( j=0 ; j<6 ; j++ )if( a[i][j]=='\0' ){ len[i]=j; break; }printf("%s:%d\n",a[i],len[i]);}}答案: Sun:3 Moon:4void main( ){int i,r;char s1[80]="bus";char s2[80]="book";for ( i=r=0 ; s1[i]!='\0'&&s2[i]!='\0' ; i++ )if( s1[i]==s2[i])i++;else { r=s1[i]-s2[i];break; }printf("%d",r);}答案:4#define LEN 4void main( ){int j, c;char n[2][LEN+1]={ "8980" , "9198" };for( j=LEN-1 ; j>=0 ; j--){ c=n[0][j]+n[1][j]-2*'0';n[0][j]=c%10+'0';}for( j=0 ; j<=1 ; j++ )puts( n[j] );}答案:70789189void main( ){int i=5;char c[6]="abcd";do{ c[i]=c[i-1]; }while( --i>0 );puts( c );}答案: aabcdvoid main( ){char s[ ]="ABCCDA";int k;char c;for( k=1 ; (c=s[k])!='\0' ; k++ ){ switch( c ){ case 'A': putchar('%'); continue;case 'B': ++k; break;default: putchar('*');case 'C': putchar('&'); continue;}putchar( '#' );答案:#&*&%void main( ){int i=0;char a[ ]="abm", b[ ]="aqid", c[10];while ( a[i]!='\0'&&b[i]!='\0' ){ if ( a[i]>=b[i] )c[i]=a[i]-32;else c[i]=b[i]-32;++i;}c[ i ]='\0';puts(c);答案:AQM。

出几道c程序关于数组的编程题

出几道c程序关于数组的编程题

出几道c程序关于数组的编程题以下是一些关于数组的C程序编程题:1. 打印数组元素要求:给定一个数组,打印出数组中的所有元素。

c#include <stdio.h>int main() {int arr[] = {1, 2, 3, 4, 5};int n = sizeof(arr) / sizeof(arr[0]);for (int i = 0; i < n; i++) {printf("%d ", arr[i]);}return 0;}2. 查找数组中的最大值和最小值要求:给定一个数组,编写程序查找数组中的最大值和最小值。

c#include <stdio.h>int main() {int arr[] = {1, 2, 3, 4, 5};int n = sizeof(arr) / sizeof(arr[0]);int max = arr[0], 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("Max: %d\nMin: %d\n", max, min); return 0;}3. 反转数组元素要求:给定一个数组,编写程序将其中的元素反转。

#include <stdio.h>int main() {int arr[] = {1, 2, 3, 4, 5};int n = sizeof(arr) / sizeof(arr[0]); for (int i = 0; i < n / 2; i++) {int temp = arr[i];arr[i] = arr[n - i - 1];arr[n - i - 1] = temp;}for (int i = 0; i < n; i++) {printf("%d ", arr[i]);}return 0;}。

c语言编程有关数组的几道例题

c语言编程有关数组的几道例题

实验四一维数组、二维数组一、实验目的与要求1、熟练掌握一维数组、二维数组的定义、赋值和输入输出的方法。

2、掌握与数组有关的算法。

二、实验内容1、(1)输入N个整数,使用冒泡排序,将数据由大到小输出。

include "stdafx.h"#in clude<stdio.h>void swap2(int*,int*);void bubble(int aQ,int n);int main(void){int n,a[8];inti;printf("Enter n(n<=8):");scanf("%d",&n);printf("Enter a[%d]:", n);for(i=0;i< n;i++)scanf("%d", &a[i]);bubble(a,n);printf(H After sorted,a[%d]=", n);for(i=0;i< n;i++)pnntf(H%3d n,a[i]);return 0;}void bubble(int a[],int n) /*n是数组a中待排序元素的数量*7int i,j;for(i=1;i<n;i++) 广外部循环…请问这个嵌套循环怎么理解?? */ for0=O;j<n-i;j++)广内部循环…请问这个嵌套循环怎么理解?? */ if(aU]>a[j+1])swap2(&aD],&aD+1]);广交换*/}void swap2(int *px,int *py){int t;t=*px;*px=*py;*py=t;}单向冒泡排序法:〃输入10个整数,按从大到小输出〃#iiiclude<stdio.h>void main()intij,t,a[10];pimtf(n请输入10个整数\n“); for(i=0;i<10;i++)scanf(H%d,\&a[i]);for(j=l;j<10;j++)〃10个数要來回做(10・l)趟次//fbr(i=l ;i< 11 -j ;i++)〃第j趟要做(10・j)次比较//if(a[i]>a[i-l])〃每做完一趟,就会将数组中较小的一个数沉淀下來,较大的数不断往上冒〃{t=a[i] ;a[i]=a [i-1] ;a[i-1 ]=t;}pHntfC按从大到小排序输出结果是:\n“);for(i=0;i<10;i++)prmtf("%-3d n,a[i]);}双向冒泡排序法:〃输入10个整数,按从大到小输出〃#include<stdio.h>void main(){iiit ij,t,k,a[10];priiitfC*请输入10个整数\n“);for(i=0;i<10;i++)scanf("%d”,&a[ij);for(j=l;j<10;j++) //10 个数要來回做(10-1)趟次〃{for(i=l;i<ll-j;i++) 〃第j趟要做(10・j)次比较,双向冒泡法,是先从上至下两两比较一次〃if(a[i]>a[i-l]) 〃每做完一趟,就会将数组中较小的一个数沉淀下來,较大的数不断往上冒〃{t=a[i] ;a[i]=a[i-1 ] ;a[i-1 ]=t;}for(k=i-l ;k>0 ;k-) //与单向冒泡不同的是,这是双向冒泡的关键,每一次从顶至下比较完一次后,同时再从下//if(a[k]>a[k-l]) 〃至上比较一次,也就是说每一趟数组中的元素两两比较了两次,这就是双向冒泡排序了〃{t=a[k] ;a [k]=a [k-1 ] ;a [k-1 ]=t;}}priiitfC*按从大到小排序输出结果是:\n“);fbr(i=O;i<l 0;i++)pHntf(”%・3d”卫[i]);}$ (2)输入N个整数,使用改进的冒泡排序,将数据由大到小输出。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四一维数组、二维数组一、实验目的与要求1、熟练掌握一维数组、二维数组的定义、赋值和输入输出的方法。

2、掌握与数组有关的算法。

二、实验内容1、(1)输入N个整数,使用冒泡排序,将数据由大到小输出。

#include "stdafx.h"#include<stdio.h>void swap2(int*,int*);void bubble(int a[],int n);int main(void){int n,a[8];int i;printf("Enter n(n<=8):");scanf("%d",&n);printf("Enter a[%d]:", n);for(i=0;i<n;i++)scanf("%d", &a[i]);bubble(a,n);printf("After sorted,a[%d]=", n);for(i=0;i<n;i++)printf("%3d",a[i]);return 0;}void bubble(int a[],int n) /*n是数组a中待排序元素的数量*/{int i,j;for(i=1;i<n;i++) /*外部循环---请问这个嵌套循环怎么理解??*/for(j=0;j<n-i;j++) /*内部循环---请问这个嵌套循环怎么理解??*/if(a[j]>a[j+1])swap2(&a[j],&a[j+1]); /*交换*/}void swap2(int *px,int *py){int t;t=*px;*px=*py;*py=t;}单向冒泡排序法://输入10个整数,按从大到小输出//#include<stdio.h>void main(){int i,j,t,a[10];printf("请输入10个整数\n");for(i=0;i<10;i++)scanf("%d",&a[i]);for(j=1;j<10;j++) //10个数要来回做(10-1)趟次//for(i=1;i<11-j;i++) //第j趟要做(10-j)次比较//if(a[i]>a[i-1]) //每做完一趟,就会将数组中较小的一个数沉淀下来,较大的数不断往上冒//{t=a[i];a[i]=a[i-1];a[i-1]=t;}printf("按从大到小排序输出结果是:\n");for(i=0;i<10;i++)printf("%-3d",a[i]);printf("\n");}双向冒泡排序法://输入10个整数,按从大到小输出//#include<stdio.h>void main(){int i,j,t,k,a[10];printf("请输入10个整数\n");for(i=0;i<10;i++)scanf("%d",&a[i]);for(j=1;j<10;j++) //10个数要来回做(10-1)趟次//{for(i=1;i<11-j;i++) //第j趟要做(10-j)次比较,双向冒泡法,是先从上至下两两比较一次//if(a[i]>a[i-1]) //每做完一趟,就会将数组中较小的一个数沉淀下来,较大的数不断往上冒//{t=a[i];a[i]=a[i-1];a[i-1]=t;}for(k=i-1;k>0;k--) //与单向冒泡不同的是,这是双向冒泡的关键,每一次从顶至下比较完一次后,同时再从下//if(a[k]>a[k-1]) //至上比较一次,也就是说每一趟数组中的元素两两比较了两次,这就是双向冒泡排序了//{t=a[k];a[k]=a[k-1];a[k-1]=t;}}printf("按从大到小排序输出结果是:\n");for(i=0;i<10;i++)printf("%-3d",a[i]);printf("\n");}$(2)输入N个整数,使用改进的冒泡排序,将数据由大到小输出。

#include "stdafx.h"#include<stdio.h>void swap2(int*,int*);void bubble(int a[],int n);int main(void){int n,a[8];int i;printf("Enter n(n<=8):");scanf("%d",&n);printf("Enter a[%d]:", n);for(i=0;i<n;i++)scanf("%d", &a[i]);bubble(a,n);printf("After sorted,a[%d]=", n);for(i=0;i<n;i++)printf("%3d",a[i]);return 0;}void bubble(int a[],int n) /*n是数组a中待排序元素的数量*/{int i,j;for(i=1;i<n;i++) /*外部循环---请问这个嵌套循环怎么理解??*/for(j=0;j<n-i;j++) /*内部循环---请问这个嵌套循环怎么理解??*/if(a[j]>a[j+1])swap2(&a[j],&a[j+1]); /*交换*/}void swap2(int *px,int *py){int t;t=*px;*px=*py;*py=t;}2、*******输入N-1个整数组成一数列,再输入某数x,先将数列排序,根据x的值插入到有序数列中。

#include<stdio.h>main (){void Rank(int N,int n[]);int i,j,k;int n[11];printf("请输入10个整数:");for(i=0;i<10;i++)scanf("%d",&n[i]);Rank(10,n); //调用函数对输入的数组排序printf("\n请输入需要插入的整数:");scanf("%d",&k);if(k>n[9])n[10]=k;else{for(i=0;n[i]<=k;i++);for(j=9;j>=i;j--)n[j+1]=n[j]; //腾出位置,用以插入所输入的数n[i]=k;}printf("\n排序后此数列按升序排列为:");for(i=0;i<=10;i++)printf("%-4d",n[i]);}void Rank(int N,int n[]){int i,k,iTemp;for(k=1;k<=N-1;k++)for(i=N-1;i>=k;i--)if(n[i-1]>n[i]){iTemp=n[i];n[i]=n[i-1];n[i-1]=iTemp;}printf("排序后此数列按升序排列为:");for(i=0;i<=N-1;i++)printf("%-4d",n[i]);printf("\n");}3、输入行数n,打印出杨辉三角。

#include <stdio.h>int main(){ int yh[101][101]={{},{0,1}},i,n,m; scanf("%d",&m); /*输入要打印的行数,,,不能太大。

我水平不高。

*/for(i=2;i<=m;i++) { yh[i][1]=yh[i][i]=1; for(n=2;n<i;n++) { yh[i][n]=yh[i-1][n-1]+yh[i-1][n]; } }for(i=1;i<=m;i++) { for(n=1;n<=i;n++) { printf("%d",yh[i][n]); } printf("\n"); }return 0;}#include<stdio.h>#include<math.h>main(){ int a[8][8],i,j;for(i=0;i<8;i++){for(j=0;j<8;j++)if(j==0)a[i][j]=1;else if(i==j)a[i][j]=1;else if(i>j&&j>=1)a[i][j]=a[i-1][j]+a[i-1][j-1];elsea[i][j]=0;}for(i=0;i<8;i++){for(j=0;j<=i;j++)printf("%3d",a[i][j]);printf("\n");}}4、青年歌手参加歌曲大奖赛计分系统(1)有N个评委进行打分,求这位选手的平均得分(去掉一个最高分和一个最低分)。

#include <stdio.h>#include <stdlib.h>#include <time.h>void bubble_sort(int a[],int n){int i,j, itmp;for (i =0; i<n;i++){for(j=i+1 ;j<n;j++){if( a[i] >= a[j]){itmp = a[j];a[j] = a[i];a[i] = itmp;}}}}int main( int argc, char **argv){int iguide[10] = {0};srand((unsigned )time(NULL));for (int i = 0 ; i< 8;i++){int isum = 0;for (int j = 0 ; j< 10; j++){iguide[j] = rand()%10 +1;}bubble_sort(iguide,10);for (int l = 1;l<=8; l++){isum += iguide[l];}printf("The avg score the %d singer get is %d \n" ,i+1,isum/8); }return 0;}$(2)有N个评委进行打分,求M个选手每个人的平均得分(去掉一个最高分和一个最低分),并按平均得分由高到低排序输出。

相关文档
最新文档