C语言数组编程题
c语言数组练习题及答案
![c语言数组练习题及答案](https://img.taocdn.com/s3/m/aa050b62c8d376eeaeaa31d5.png)
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语言数组编程题及解答
![C语言数组编程题及解答](https://img.taocdn.com/s3/m/aec245f6ff00bed5b8f31d00.png)
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个进行比较,并进行交换。
C语言数组试题
![C语言数组试题](https://img.taocdn.com/s3/m/2675284bddccda38376baf84.png)
第4章 数组4.1内容概述本章主要介绍了数值数组和字符数组的定义、初始化、元素引用和数组数据的输入与输出,字符数组实现字符串、字符串函数的实现与调用。
指针数组与数组指针定义、元素引用。
利用一维数组实现如挑数、排序、求和等实际应用问题。
利用二维数组实现矩阵的应用问题。
利用字符数组实现字符串的各种操作。
本章知识结构如图4.1所示。
图4.1 第4章知识结构图考核要求:掌握一维数组、二维数组、字符数组和指针数组的定义和初始化;掌握数组元素存储地址计算;掌握数组元素的下标法、指针法引用;掌握字符数组与字符串的区别与联系;掌握有关字符串处理函数的使用方法;能利用一维数组、二维数组解决向量、矩阵等实际应用问题。
重点难点:本章的重点是一维数组、二维数组和字符数组的定义、初始化、元素引用,字符串处理函数的使用。
本章的难点是字符串与字符数组的区别,指针数组和数组元素的指针法引用。
核心考点:数组的定义、初始化和数组元素的引用方法,一维数组、二维数组和字符数组的实际应用,字符串的处理方法。
4.2 典型题解析【例4.1】以下对一维数组a 的定义中正确的是( )。
A. char a(10);B. int a[0..100];C. int a[5];D. int k=10;int a[k];解析:一维数组定义的一般形式为:类型标识符 数组名[常量表达式]其中,常量表达式可以是任意类型,一般为算术表达式,其值表示数组元素的个数,即数组长度。
答案:C【例4.2】以下对一维数组的定义中不正确的是( )。
A. double x[5]={2.0,4.0,6.0,8.0,10.0};数组数值数组 定义 初始化 元素引用 数组元素输入和输出 指针数组 定义初始化 应用字符数组 定义 初始化 元素引用 数组元素输入和输出B. int y[5]={0,1,3,5,7,9};C. char ch1[ ]={'1', '2', '3', '4', '5'};D. char ch2[ ]={'\x10', '\xa', '\x8'};解析:可以对一维数组的全部元素或部分元素赋初值。
C语言习题集合(数组)
![C语言习题集合(数组)](https://img.taocdn.com/s3/m/f82b969e64ce0508763231126edb6f1aff00712a.png)
C语言习题集合(数组)第四章数组4.1 选择题1. 以下关于数组的描述正确的是( )。
A. 数组的大小是固定的,但可以有不同的类型的数组元素B. 数组的大小是可变的,但所有数组元素的类型必须相同C. 数组的大小是固定的,所有数组元素的类型必须相同D. 数组的大小是可变的,可以有不同的类型的数组元素2. 以下对一维整型数组a的正确说明是( )。
A.int a(10);B. int n=10,a[n];C.int n;D. #define SIZE 10 scanf("%d",&n); int a[SIZE];int a[n];3. 在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。
A. 整型常量B. 整型表达式C. 整型常量或整型表达式D. 任何类型的表达式4. 以下对一维数组m进行正确初始化的是( )。
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]的地址的是( )。
A. &bb[0]+1B. &bb[1]C. &bb[0]++D. bb+16. 假定int类型变量占用两个字节,其有定义:intx[10]={0,2,4};,则数组x在内存中所占字节数是( )。
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的表达式是( )A. a[g-c]B. a[4]C. a['d'-'c']D. a['d'-c]8. 以下程序段给数组所有的元素输入数据,请选择正确答案填入( )。
c语言数组编程题目
![c语言数组编程题目](https://img.taocdn.com/s3/m/4f0b457082c4bb4cf7ec4afe04a1b0717fd5b3b8.png)
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. 删除数组中的指定元素编写一个程序,删除给定数组中的指定元素。
C语言程序设计第六章数组习题及答案
![C语言程序设计第六章数组习题及答案](https://img.taocdn.com/s3/m/3e073764e2bd960591c67731.png)
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语言练习3(数组)=参考解答
![C语言练习3(数组)=参考解答](https://img.taocdn.com/s3/m/4c92f93ff46527d3240ce0cc.png)
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语言编程(函数)100道题
![C语言编程(函数)100道题](https://img.taocdn.com/s3/m/dabd10cc227916888586d73f.png)
C语言编程(函数)100道题C10027 1、编写函数fun, 函数的功能是:根据以下公式计算 s,计算结果作为函数值返回;n 通过形参传入。
S = 1 + 1/ (1+2) + 1/ (1+2+3) + …… + 1/ (1+2+3+……+n) float fun ( int n ){ int i ;float s = 0.0 , t = 0.0 ;for ( i = 1 ; i <= n ; i++ ) { t += i ; s += 1 / t ; }return s ;}2、编写函数fun,它的功能是:根据以下公式求p的值,结果由函数值带回。
m 与 n 为两个正整数且要求 m > n。
m!P = ?????n!(m-n)!float fun ( int m , int n ){ int i ;float p , t ;for ( t = 1.0 , i = 1 ; i <= m ; i++ ) t *= i ;p = t ;for ( t = 1.0 , i = 1 ; i <= n ; i++ ) t *= i ;p = p / t ;for ( t = 1.0 , i = 1 ; i <= m – n ; i++ ) t *= i ;p = p / t ;return p ;}3、请编写一个函数fun, 它的功能是:根据以下公式求л 的值,(要求满足精度 0.0005,即某项小于 0.0005 时停止迭代):π 1 1×2 1×2×3 1×2×3×4 1×2×…×n? = 1 + ? + ?? + ???? + ????? + …… + ????????2 3 3×5 3×5×7 3×5×7×9 3×5×…×(2n+1) double fun ( double eps ){ int n = 0 ;double t = 1.0 , pi = 0.0 ;while ( t >= eps ){ pi += t ; n++ ; t *= ( double ) n / (2 * n + 1) ; }return pi * 2 ;}4、请编写函数fun, 其功能是:计算并输出下列多项式值:1 1 1 1s = 1 + ?? + ?? + ?? + …… + ??1! 2! 3! n!1double fun ( int n ){ int i ;double t = 1.0 , sn = 1.0 ;for ( i = 1 ; i <= n ; i++ ){ t *= i ; sn += 1 / t ; }return sn ;}5、请编写函数fun,它的功能是:计算并输出下列级数和:1 1 1s = ??? + ??? + …… + ?????1×2 2×3 n×(n+1) double fun ( int n ){ int i ;double s = 0.0 ;for ( i = 1 ; i <= n ; i++ ) s += 1.0 / i / ( i + 1 ) ;return s ;}6、请编写函数fun, 其功能是:计算并输出当 x < 0.97 时下列多项式的值,直到?Sn-(Sn-1)?< 0.000001 为止。
C试题-在c语言中文,一维数组的定义方式为:类型
![C试题-在c语言中文,一维数组的定义方式为:类型](https://img.taocdn.com/s3/m/6912127049d7c1c708a1284ac850ad02de8007dd.png)
C试题一、选择题:1、以下对一维整型数组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];2、若有说明:int a[10];则对a数组元素的正确引用是A a[10]B a[3.5]C a (5)D a [10-10]3、在c语言中文,一维数组的定义方式为:类型说明符数组名A[常量表达式] B[整型表达式]C[整型常量]或[整型表达式]D[整型常量]4、以下能对二维数组a进行正确初始化的语句是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}};5、若有说明:int a[3][4]={0};则下面正确的叙述是A只有元素a[0][0]可得到初值0B 此说明语句不正确C 数组a中文各元素都可得到初值,但其值不一定为0D 数组a 中每个元素均可得到初值06、以下各组选项中,均能正确定义二维实型数组a的选项是A float a[3][4];B float a(3,4);float a[] [4]; float a[3][4];float a[3][]={{1},{0}} float a[][]={{0},{0}};C float a[3][4];D float a[3][4];static float a[][4]={{0},{0}}; float a [3][];auto float a [][4]={{0},{0},{0}}; float a[][4]10、下面程序中文有错误的行是(每行程序前面的数字表示行号)1 main()2 {3 int a[3]={1};4 int i;5 scanf(“%d”,&a);6 for (i=1;i<3;i++) a[0]=a[0]+a[i];7 printf(“a[0]=%d\n”,a[0]);8 }A 3B 6C 7D 511、若二维数组a有m列,则计算机任一元素a[i][j]在数组中文位置的公式为(假设a[0][0]位于数组的第一个位置上。
数组c语言试题库及答案
![数组c语言试题库及答案](https://img.taocdn.com/s3/m/b383340449d7c1c708a1284ac850ad02df80071b.png)
数组c语言试题库及答案1. 请解释C语言中数组的概念。
答:在C语言中,数组是一种数据结构,它允许将多个相同类型的数据项存储在连续的内存位置。
数组可以是一维的,也可以是多维的。
2. 如何声明一个整型数组?答:声明一个整型数组的语法是 `int array_name[size];`,其中`array_name` 是数组的名字,`size` 是数组中元素的数量。
3. 请写出一个程序,用于计算一个整型数组中所有元素的和。
```c#include <stdio.h>int main() {int array[] = {1, 2, 3, 4, 5};int sum = 0;for(int i = 0; i < 5; i++) {sum += array[i];}printf("Sum of array elements: %d\n", sum);return 0;}```4. 如果一个数组的元素数量是动态的,应该如何声明?答:在C语言中,可以使用指针来处理动态数组。
声明方式为`int *array_name;`,然后在程序中使用 `malloc` 或 `calloc` 函数分配内存。
5. 请解释数组的索引。
答:数组的索引是从0开始的,它表示数组中元素的位置。
例如,对于一个名为 `array` 的数组,`array[0]` 是数组的第一个元素。
6. 如何初始化一个整型数组?答:可以使用花括号 `{}` 来初始化数组,例如 `int array[] = {1, 2, 3, 4, 5};`。
7. 请写出一个程序,用于交换数组中的两个元素。
```c#include <stdio.h>int main() {int array[] = {1, 2, 3, 4, 5};int temp;int index1 = 1; // 第二个元素int index2 = 3; // 第四个元素temp = array[index1];array[index1] = array[index2];array[index2] = temp;for(int i = 0; i < 5; i++) {printf("%d ", array[i]);}return 0;}```8. 在C语言中,数组的元素可以是什么数据类型?答:数组的元素可以是任何数据类型,包括整型、浮点型、字符型、结构体等。
C语言(数组)习题与答案
![C语言(数组)习题与答案](https://img.taocdn.com/s3/m/465904f9e45c3b3567ec8bef.png)
一、单选题1、下列描述中不正确的是()A.字符串的结束符是'\0'。
B.可以对字符型数组进行整体输入、输出。
C.字符型数组中能存放字符串。
D.字符串函数声明在ctype.h中。
正确答案:D2、下面是有关C语言字符数组的描述,其中错误的是()A.不可以用赋值语句给字符数组名赋字符串B.可以用输入语句把字符串整体输入给字符数组C.字符数组只能存放字符串D.字符数组中的内容不一定是字符串正确答案:C3、下面是对数组s的初始化操作,其中不正确的是()A.char s[5]= " ";B.char s[5]={'a'};C.char s[5]={"a"};D.char s[5]= "abcdef";正确答案:D4、下面叙述正确的是()A.字符串"123 "与"123"相等。
B.字符串"123"小于字符串"2"。
C.两个字符串所包含的字符个数不相同时,才能进行大小比较。
D.字符个数多的字符串比字符个数少的字符串大。
正确答案:B5、下面程序段的输出结果是()char a[7]=“123456”;char b[4]=”ABC”;strcpy(a,b);printf(“%c”,a[5]);A.\0B.C.5D.6正确答案:D6、以下对二维数组a的正确说明是__。
A.double a[1][4];B.float a(3)(4);C. floatf a(3,4);D. int a[3][];正确答案:A7、以下能对二维数组a进行正确初始化的语句是__。
A. int a[][3]={{1,2,3},{4,5,6}};B.int a[2][]={{1,0,1},{5,2,3}};C.int a [2][4]={{1,2,3},{4,5},{6}};D. int a[][3={{1,0,1},{},{1,1}};正确答案:A8、若有说明: int a[3][4]={0};则下面正确的叙述是__。
第4章数组习题(C语言程序设计)
![第4章数组习题(C语言程序设计)](https://img.taocdn.com/s3/m/8a98248fa0116c175f0e4841.png)
puts(strcpy(a[0],a[2]);的输出结果是__2_3____
第4章 数组
三、写出程序运行结果
第4章 数组
1. main() { int a[]={2,4,6,8,10};
int y=1,j;
y
j
1
0
for(j=0;j<3;j++)
1
y+=a[j+1];
2
y=y+a[1]+a[2]+a[3]
第4章 数组
程序设计基础—C语言
第4章 数组
第4章 数组
一、单项选择题 (第107页)
第4章 数组
1、定义数组时,表示数组长度的不能是 (A )
存储类型 数据类型 数组名[ 数组长度 ]
√A. 整型变量 int x=6 ; int a[x];
B. 符号常量 #define N 5 C. 整型常量 char b[ 5];
}
1 2 34 5678 9 13 15
则字符串s所占的字节数是(
)
字符串s的字节数=长度+1 sizeof(s)= strlen(s)+1
A. 19 C. 15
B. 18
√D. 16
第4章 数组
二、填空题
第4章 数组
1.若定义int a[10]={1,2,3};则a[2]的值__3___;
2.若定义char string[] =“You are a student!”;
s=10*6+’5’-’0’=65
s=10*65+’2’-’0’=652
s=10*652+’1’-’0’=6521
printf(“%d\n”,s); }
C语言-数组-实验题目及答案
![C语言-数组-实验题目及答案](https://img.taocdn.com/s3/m/0b065ed4dd36a32d727581aa.png)
实验六数组程序设计【实验目的】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语言数组百道练习题含答案
![C语言数组百道练习题含答案](https://img.taocdn.com/s3/m/b7cd1ba9bd64783e09122bea.png)
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语言一维数组练习题及参考程序](https://img.taocdn.com/s3/m/590b5e67ce84b9d528ea81c758f5f61fb7362811.png)
4.1习题1、输入10个整数,然后将这10个整数逆序输出。
#include<stdio.h>int main(){int i;int a[10];printf("Input data: ");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("Output data: ");for(i=9;i>=0;i--) //通过下标引用顺序实现逆序printf("%d ",a[i]);return 0;}2、输入一个整数m,然后输入m个整数,存放在数组a中;再输入一个整数n,然后输入n个整数,存放在数组b中。
找出a和b两数组的非共有元素,存放在数组c中并输出。
(m和n的值不超过20)#include<stdio.h>int main(){int a[20], b[20], c[20];//假定元素值不超过20int m, n, i, j, k=0;scanf("%d", &m);for(i=0; i<m; i++)scanf("%d", &a[i]);scanf("%d", &n);for(i=0; i<n; i++)scanf("%d", &b[i]);for(i=0; i<m; i++)//找出数组a中不是共同元素的值{for(j=0; j<n; j++){if(a[i]==b[j])break;}if(j>=n)//不是共同元素{c[k]=a[i];k++;//为存放下一个元素做准备}}for(i=0; i<n; i++)//找出数组b中不是共同元素的值{for(j=0; j<m; j++){if(b[i]==a[j])break;}if(j>=m){c[k]=b[i];k++;}}for(i=0; i<k; i++)printf(" %d", c[i]);printf(“\n”);return 0;}3、输入N个整数(N定义为常量),将最小值与第一个数交换,最大值与最后一个数交换。
c语言面试编程题
![c语言面试编程题](https://img.taocdn.com/s3/m/6a2f3346eef9aef8941ea76e58fafab069dc4409.png)
c语言面试编程题题目1:找出数组中出现次数最多的元素题目描述:给定一个整型数组,编写一个程序找到出现次数最多的元素,并返回该元素。
输入:整型数组输出:出现次数最多的元素示例:输入:[1, 2, 3, 1, 2, 3, 4, 1, 2, 3]输出:1解题思路:首先,我们可以使用一个哈希表来统计每个元素的出现次数,然后遍历哈希表找到出现次数最多的元素即可。
解题代码:```#include <stdio.h>#include <stdlib.h>int findMostFrequentElement(int arr[], int size) {if (size == 0) {return 0;}int maxCount = 0;int maxElement = arr[0];// 哈希表用于统计元素出现次数int* count = (int*)calloc(1000, sizeof(int));for (int i = 0; i < size; i++) {count[arr[i]]++;if (count[arr[i]] > maxCount) {maxCount = count[arr[i]];maxElement = arr[i];}}free(count);return maxElement;}int main() {int arr[] = {1, 2, 3, 1, 2, 3, 4, 1, 2, 3};int size = sizeof(arr) / sizeof(arr[0]);int mostFrequentElement = findMostFrequentElement(arr, size); printf("The most frequent element is %d\n", mostFrequentElement);return 0;}```题目2:反转字符串中的元音字母题目描述:给定一个字符串,编写一个程序反转字符串中的元音字母。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验4 数组
一.实验目的:
1.掌握一维数组的定义、赋值和输入输出的方法;
2.掌握字符数组定义、初始化、赋值的方法;
3.了解常见的字符串函数功能及其使用方法;
4.掌握二维数组的定义与引用。
二.实验内容:
1.编写程序,输入10个整数存入一维数组,统计输出其中的正数、负数和零的个数。
2.编写程序,输入10个整数存入一维数组,再按逆序重新存放后再输出。
3.编写程序,输入10个整数存入一维数组,对其进行升序排序后输出。
4.编写程序,求二维数组中元素的最大值和最小值。
5.编写程序,求一个4×4矩阵中所有元素之和。
6.编写程序:从键盘上输入一字符串,统计输出该字符串中的字母字符、数字字符、空格以及其他字符的个数。
7.编写程序:从键盘上输入一字符串,并判断是否形成回文(即正序和逆序一样,如“abcd dcba”)。
8. 产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。
9. 产生一个由10个元素组成的一维数组,数组元素由随机数(0-99)构成。
按照升序排列并输出。
再输入一个数,按原来的规律将其插入并输出。
10. 产生一个由10个元素组成的一维数组,数组元素由随机数(0-99)构成。
按照升序排列并输出。
再输入一个数,要求找出该数是数组中的第几个元素,如果不在数组中,则输出找不到。
11. 找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列最小。
可能没有鞍点。
12. 编程输出杨辉三角。
(要求输出10行)(杨辉三角:每行端点与结尾的数为1.每个数等于它上方两数之和。
每行数字左右对称,由1开始逐渐变大)
13. 输入一行字符,统计大写字母、小写字母、数字、空格以及其它字符个数。
14. 编写程序,将两个字符串连接起来,不用strcat。
15. 编写程序实现strcpy函数功能。
16. 编程实现strlen函数功能。
17. 编程求2-4+6-8…-100+102的值。
18. 假设某人有100,000现金。
每经过一次路口需要进行一次交费。
交费规则为当他现金大于50,000时每次需要交5%如果现金小于等于50,000时每次交5,000。
请写一程序计算此人可以经过多少次这个路口。
19. 输入若干个正整数,以0结束,将其中大于平均值且个位为5的数排序后输出。
(按由大到小的顺序排序)
20. 输入一个字符串,将其中ASCII码值为基数的字符排序后输出。
(按由小到大的顺序)
21. 输入一个以回车结束的字符串(少于80个字符),滤去所有的非16进制字符后,组成一个新字符串(16进制形式),然后将其转换为10进制数后输出。
22. 读入一个正整数n(1<=n<=6),再读入n阶矩阵,计算该矩阵除副对角线、最后一行、最后一列以外的所有元素之和(副对角线为矩阵的右上角至左下角的连线)。
23. 输入一个正整数n,输入n个数,生成一个n*n的矩阵,矩阵中第1行是输入的n 个数,以后每一行都是上一行循环左移一个元素。
输入输出示例:
Input n:5
Input number:2 5 8 4 9
The matrix is:
2 5 8 4 9
5 8 4 9 2
8 4 9 2 5
4 9 2
5 8
9 2 5 8 4
24. 输出可大可小的正方形图案,最外层是第一层,要求每层上用的数字与层数相同。
输入输出示例:
Input n:3
The matrix is:
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
25. 实现选择排序算法。
26. 实现希尔排序算法。
27. 实现快速排序算法。
28. 实现堆排序算法。
29. 实现归并排序算法。
30. 实现基数排序算法。
31. 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
三.实验步骤:
四. 实验结果分析:。