当前位置:文档之家› 数组编程练习(带答案)

数组编程练习(带答案)

数组编程练习

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

解:

#include

#include

#define N 10

int main()

{

int a[N],i;

for(i=0;i

{

a[i]=rand()%100;

}

printf("array a:\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

return 0;

}

2、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。求该数组的最大值、最小值、总和和平均值并输出。

解:

#include

#include

#define N 10

int main()

{

int a[N],i,max,min,sum;

float ave;

for(i=0;i

{

a[i]=rand()%100;

}

printf("array a:\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

max=a[0];

min=a[0];

sum=0;

for(i=0;i

{

sum=sum+a[i];

if(a[i]>max)

{

max=a[i];

}

if(a[i]

{

min=a[i];

}

}

ave=(float)sum/N;

printf("max=%d,min=%d,sum=%d,ave= %.2f\n",max,min,sum,ave);

return 0;

}

3、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。按照升序排列并输出。解:(冒泡法)

#include

#include

#define N 10

int main()

{

int a[N],i,j,t;

for(i=0;i

{

a[i]=rand()%100;

}

printf("array a:\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

for(i=1;i

{

for(j=0;j

{

if(a[j]>a[j+1])

{

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

}

}

printf("the sorted array a:\n");

for(i=0;i

printf("%4d",a[i]);

printf("\n");

return 0;

}

另解:(选择法)

#include

#include

#define N 10

int main()

{

int a[N],i,j,min_i,t;

for(i=0;i

{

a[i]=rand()%100;

}

printf("array a:\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

for(i=0;i

{

min_i=i;

for(j=i+1;j

{

if(a[j]

{

min_i=j;

}

}

t=a[i];

a[i]=a[min_i];

a[min_i]=t;

}

printf("the sorted array a:\n");

for(i=0;i<10;i++)

{

printf("%4d",a[i]);

}

printf("\n");

return 0;

}

另解:(比较法)

#include

#include

#define N 10

int main()

{

int a[N],i,j,t;

for(i=0;i

{

a[i]=rand()%100;

}

printf("array a:\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

for(i=1;i

{

for(j=i;j

{

if(a[j]

{

t=a[i-1];

a[i-1]=a[j];

a[j]=t;

}

}

}

printf("the sorted array a:\n");

for(i=0;i<10;i++)

{

printf("%4d",a[i]);

}

printf("\n");

return 0;

}

4、产生一个由10个元素组成的一维数组并输出,数

组元素由随机数(0-99)构成。编程将逆序数组输出。解:

#include

#include

#define N 10

int main()

{

int a[N],b[N],i,t;

for(i=0;i

{

a[i]=rand()%100;

}

printf("array a:\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

for(i=0;i

{

b[i]=a[N-1-i];

}

printf("the new array:\n");

for(i=0;i

{

printf("%4d",b[i]);

}

printf("\n");

return 0;

}

另解:

#include

#include

#define N 10

int main()

{

int a[N],i,t;

for(i=0;i

{

a[i]=rand()%100;

}

printf("array a:\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

for(i=0;i

{

t=a[i];

a[i]=a[N-1-i];

a[N-1-i]=t;

}

printf("the new array:\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

return 0;

}

5、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。按照升序排列并输出。再输入一个数,按照原来的规律将其插入并输出。

#include

#include

#define N 10

int main()

{

int a[N+1],i,j,t,n;

for(i=0;i

{

a[i]=rand()%100;

}

printf("array a:\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

for(i=1;i

{

for(j=0;j

{

if(a[j]>a[j+1])

{

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

}

}

printf("the sorted array a:\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

printf("please input n:\n");

scanf("%d",&n);

if(n>a[N-1])

{

a[N]=n;

}

else

{

for(i=0;i

{

if(a[i]>n)

{

for(j=N;j>i;j--)

{

a[j]=a[j-1];

}

a[j]=n;

break;

}

}

}

printf("the second sorted array a:\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

return 0;

}

6、用数组输出Fibonacci数列的前40项

解:

#include

#define N 40

int main()

{

int i;

int f[N]={1,1};

for(i=2;i

{

f[i]=f[i-2]+f[i-1];

}

for(i=0;i

{

printf("%12d",f[i]);

if((i+1)%5==0)

{

printf("\n");

}

}

return 0;

}

7、用筛选法求100以内的素数

解:

#include

#include

#define N 100

int main()

{

int a[N+1],i,j,n=0;

for(i=1;i<=N;i++)

{

a[i]=i;

}

a[1]=0;

for(i=2;i<=N;i++)

{

for(j=2;j<=(int)sqrt(i);j++)

{

if(a[i]%j==0)

{

a[i]=0;

}

}

}

for(i=1;i<=N;i++)

{

if(a[i]!=0)

{

printf("%4d",a[i]);

n++;

if(n%10==0)

{

printf("\n");

}

}

}

printf("\n");

return 0;

}

8、产生一个由15个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。按照升序排列并输出。再输入一个数,要求找出该数是数组中的第几个元素,如果不在数组中,输出找不到。

解:

#include

#include

#define N 15

int main()

{

int a[N],i,j,t,n;

for(i=0;i

{

a[i]=rand()%100;

}

printf("array a:\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

for(i=1;i

{

for(j=0;j

{

if(a[j]>a[j+1])

{

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

}

}

printf("the sorted array a:\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

printf("please input n to look for:\n");

scanf("%d",&n);

if(na[N-1])

{

printf("not found.\n");

}

else

{

for(i=0;i

if(a[i]==n)

{

printf("has found,its position is %d.\n",i);

break;

}

if(i==N)

printf("not found.\n");

}

return 0;

}

另解:

#include

#include

#define N 15

int main()

{

int

a[N],i,j,t,n,low=0,high=N-1,mid,flag=1;

for(i=0;i

{

a[i]=rand()%100;

}

printf("array a:\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

for(i=1;i

{

for(j=0;j

{

if(a[j]>a[j+1])

{

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

}

}

printf("the sorted array a:\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

printf("please input n to look for:\n");

scanf("%d",&n);

if(na[N-1])

{

printf("not found.\n");

}

else

{

do

{

mid=(low+high)/2;

if(a[mid]==n)

{

printf("has found,its position is %d.\n",mid);

flag=0;

}

else if(a[mid]>n)

{

high=mid-1;

}

else

{

low=mid+1;

}

}while(flag && high>=low);

}

if(low>high)

{

printf("not found.\n");

}

return 0;

}

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

解:

#include

#include

#define M 3

#define N 4 int main()

{

int a[M][N],b[N][M],i,j;

for(i=0;i

{

for(j=0;j

{

a[i][j]=rand()%100;

}

}

printf("array a:\n");

for(i=0;i

{

for(j=0;j

{

printf("%4d",a[i][j]);

}

printf("\n");

}

for(i=0;i

{

for(j=0;j

{

b[j][i]=a[i][j];

}

}

printf("array b:\n");

for(i=0;i

{

for(j=0;j

{

printf("%4d",b[i][j]);

}

printf("\n");

}

return 0;

}

10、编程输出杨辉三角(要求输出10行)解:

#include

#define N 10

int main()

{

int a[N][N],i,j;

for(i=0;i

{

a[i][0]=1;

a[i][i]=1;

}

for(i=2;i

{

for(j=1;j

{

a[i][j]=a[i-1][j-1]+a[i-1][j];

}

}

printf("yanghui triangle:\n");

for(i=0;i

{

for(j=0;j<=i;j++)

{

printf("%6d",a[i][j]);

}

printf("\n");

}

return 0;

}

11、编程输入5阶魔方阵。

解:

#include

#define N 5

int main()

{

int i,j,k,a[N][N]={0};

i=0;

j=N/2;

a[i][j]=1;

for(k=2;k<=N*N;k++)

{

i=i-1;

j=j+1;

if(i==-1)

{

if(j==N)

{

i=i+2;

j=j-1;

}

else

{

i=N-1;

}

}

if(j==N)

{

j=0;

}

if(a[i][j]==0)

{

a[i][j]=k;

}

else

{

i=i+2;

j=j-1;

a[i][j]=k;

}

}

printf(" %d magic square:\n",N);

for(i=0;i

{

for(j=0;j

{

printf("%4d",a[i][j]);

}

printf("\n");

}

return 0;

}

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

解:

#include

#define M 4

#define N 5

int main()

{

int i,j,k,max,maxj,flag;

int

a[M][N]={{1,2,3,4,5,},{2,4,6,8,10},{3,6,9,1 2,15},{4,8,12,16,20}};

for(i=0;i

{

for(j=0;j

{

printf("%4d",a[i][j]);

}

printf("\n");

}

for(i=0;i

{

max=a[i][0];

maxj=0;

for(j=0;j

{

if(a[i][j]>max)

{

max=a[i][j];

maxj=j;

}

}

flag=1;

for(k=0;k

{

if(a[k][maxj]

{

flag=0;

}

}

if(flag)

{

printf("saddle point is a[%d][%d]=%d\n",i,maxj,max);

break;

}

}

if(!flag)

{

printf("no saddle point.\n");

}

return 0;

}

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

解:

#include

#define N 100

int main() {

int i,upp,low,dig,spa,oth;

char c[N];

upp=0;

low=0;

dig=0;

spa=0;

oth=0;

printf("please input a line characters:\n");

gets(c);

for(i=0;c[i]!='\0';i++)

{

if(c[i]>='A' && c[i]<='Z')

{

upp++;

}

else if(c[i]>='a' && c[i]<='z')

{

low++;

}

else if(c[i]>='0' && c[i]<='9')

{

dig++;

}

else if(c[i]==' ')

{

spa++;

}

else

{

oth++;

}

}

printf("upper case: %2d\n",upp);

printf("lower case: %2d\n",low);

printf("digit: %2d\n",dig);

printf("space: %2d\n",spa);

printf("other: %2d\n",oth);

return 0;

}

14、有一行电文,按照下列规律译成密码:

A → Z a → z

B → Y b → y

C → X c → x

……

非字母不变。

解:

#include

#define N 100

int main()

{

int i;

char c1[N],c2[N];

printf("please input a message:\n");

gets(c1);

for(i=0;c1[i]!='\0';i++)

{

if(c1[i]>='A' && c1[i]<='Z')

{

c2[i]=155-c1[i];

}

else if(c1[i]>='a' && c1[i]<='z')

{

c2[i]=219-c1[i];

}

else

{

c2[i]=c1[i];

}

}

c2[i]='\0';

printf("cipher code:\n");

puts(c2);

return 0;

}

另解:

#include

#define N 100

int main()

{

int i;

char c1[N];

printf("please input a message:\n");

gets(c1);

for(i=0;c1[i]!='\0';i++)

{

if(c1[i]>='A' && c1[i]<='Z')

{

c1[i]=155-c1[i];

}

else if(c1[i]>='a' && c1[i]<='z')

{

c1[i]=219-c1[i];

}

else

{

c1[i]=c1[i];

}

}

printf("cipher code:\n");

puts(c1);

return 0;

}

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

解:

#include

#define N 100

int main()

{

int i,j;

char s1[N],s2[N];

printf("please input string 1:\n");

gets(s1);

printf("please input string 2:\n");

gets(s2);

for(i=0;s1[i]!='\0';i++)

{

;

}

for(j=0;s2[j]!='\0';j++)

{

s1[i+j]=s2[j];

}

s1[i+j]='\0';

puts(s1);

return 0;

}

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

解:

#include

#define N 100

void main()

{

int i;

char s1[N],s2[N];

printf("please input string 1:\n");

gets(s1);

printf("please input string 2:\n");

gets(s2);

for(i=0;s2[i]!='\0';i++)

s1[i]=s2[i];

s1[i]='\0';

puts(s1);

}

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

解:

#include

#define N 100

int main()

{

int i,n;

char s1[N],s2[N];

printf("please input string 1:\n");

gets(s1);

printf("please input string 2:\n");

gets(s2);

printf("please input n:\n");

scanf("%d",&n);

for(i=0;i

{

s1[i]=s2[i];

}

puts(s1);

return 0;

}

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

解:

#include

#define N 100

int main()

{

int i,s;

char s1[N],s2[N];

printf("please input string 1:\n");

gets(s1);

printf("please input string 2:\n");

gets(s2);

for(i=0;s1[i]!='\0' || s2[i]!='\0';i++) {

if(s1[i]==s2[i])

{

continue;

}

else if(s1[i]>s2[i])

{

s=1;

break;

}

else

{

s=-1;

break;

}

}

if(s1[i]=='\0' && s2[i]=='\0')

{

s=0;

}

else if(s1[i]=='\0')

{

s=-1;

}

else

{

s=1;

}

printf("%d\n",s);

return 0;

}

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

解:

#include

#define N 100

int main()

{

int i,len=0;

char s1[N];

printf("please input string:\n");

gets(s1);

for(i=0;s1[i]!='\0';i++)

{

len++;

}

printf("%d\n",len);

return 0;

}

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 10 scanf("%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]+1 B. &bb[1] C. &bb[0]++ D. bb+1 6. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是(d )。 A. 3 B. 6 C. 10 D. 20 7. 若有以下说明: 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 main() { int a[10],i=0; while(i<10) scanf("%d",________ ); ┇ }

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,",( )); } 则在程序中的两个园括号中分别应填入:C A) &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) 32 3. 阅读程序: main() { int a[2]={0},i,j,k=2; for(i=0;i

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) 120 5. 以下定义语句中,错误的是( 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语言程序设计第六章数组习题及答案

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.0 B.3 C.4 D.1 7.下面程序段的运行结果是_。(2分) #include int main( ){ int i , x[3][3] = {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9} ;

c语言数组练习题

c语言数组练习题 4.1内容概述 本章主要介绍了数值数组和字符数组的定义、初始化、元素引用和数组数据的输入与输出,字符数组实现字符串、字符串函数的实现与调用。指针数组与数组指针定义、元素引用。利用一维数组实现如挑数、排序、求和等实际应用问题。利用二维数组实现矩阵的应用问题。利用字符数组实现字符串的各种操作。本章知识结构如图4.1所示。 定义初始化数值数组元素引用 数组元素输入和输出 定义 初始化数组 字符数组元素引用 数组元素输入和输出 定义 指针数组初始化应用 图4.1 第4章知识结构图 考核要求:掌握一维数组、二维数组、字符数组和指针数组的定义和初始化;掌握数组元素存储地址计算;掌握数组元素的下标法、指针法引用;掌握字符数组与字符串的区别与联系;掌握有关字符串处理函数的使用方法;能利用一维数组、二维数组解决向量、矩阵等实际应用问题。

重点难点:本章的重点是一维数组、二维数组和字符数组的定义、初始化、元素引用,字符串处理函数的使用。本章的难点是字符串与字符数组的区别,指针数组和数组元素的指针法引用。 核心考点:数组的定义、初始化和数组元素的引用方法,一维数组、二维数组和字符数组的实际应用,字符串的处理方法。 4.典型题解析 以下对一维数组a的定义中正确的是。 A. char a; B. inta[0..100]; C. int a[5]; D. int k=10;int a[k]; 解析:一维数组定义的一般形式为: 类型标识符数组名[常量表达式] 其中,常量表达式可以是任意类型,一般为算术表达式,其值表示数组元素的个数,即数组长度。 答案:C 以下对一维数组的定义中不正确的是。 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’};

数组编程练习(带答案)

数组编程练习 1、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。 解: #include #include #define N 10 int main() { int a[N],i; for(i=0;i #include #define N 10 int main() { int a[N],i,max,min,sum; float ave; for(i=0;imax) { max=a[i]; } if(a[i] #include #define N 10 int main() { int a[N],i,j,t; for(i=0;i

C语言练习——数组(附答案)

练习4—数组(附答案) 一、基础知识 数组的定义、初始化、引用和遍历 1、定义一个整型数组a,长度为10,全部赋值为0~9,以“%d\t”格式输出所有元素。 2、定义一个整型数组b,长度为6,第1 个元素为2,第3 个元素4,第 4 个元素为5,其它赋值为0,以“%d\t”格式输出所有元素。 3、定义一个浮点型数组c,赋值为{1.7, 2.13, 4.2, 5.16, 7.3333, 3.5, 6.768, 11.11},以“%.4f\t”格式输出c 中所有元素。 4、定义一个整数数组d,长度为6,把上述数组b 中的元素复制到 d 中,使得数组b 和数组d 中存放相同元素,以“%d\t”格式先打印a 中的元素,接着打印b中的元素。 5、定义一个整型数组e,长度为5,依次从控制台输入数组中的各元素1,2,3,4,5,并在控制台以“%6d\t”格式输出打印e 中所有元素。 二、填空式编程 1、输入5 个整数, 将这5 个数按逆时针顺序转动一次后再输出,如输入1 2 3 4 5,逆时针转动一次后,输出2 3 4 5 1。要求用数组实现。完善test4_1.c。 2、如果要求程序实现数组元素的顺时针转动,那么应该如何修改test4_2.c

3、有一个已经排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。完善test4_3.c 4、给定平面上10 个点,求其中离原点最近的点。源程序用一维数组x 存放这10 个点的x 坐标,用一维数组y 存放相应的y 坐标,即第i 个点的坐标为(x[i], y[i])。完善test4_4.c 1. #include int main() { int a[10]={0,1,2,3,4,5,6,7,8,9}; int i; for(i=0;i<10;i++) printf("%d\t",a[i]); return 0; } 2. #include int main() { int b[6]={2,0,4,0,5,0};

数组习题及答案

构造数据对象——数组 一、填空题 1.数组是一组相同的集合。 2.数组名代表数组的。 3.数组元素在数组中的位置序号称为它是从开始整数。 4.有int a[ ]={4,6,2,12,435,-9,76,0,0};该数组元素值最大的下标为。 5.定义数组tw,其能存储23个长整形数的语句为。 6.有说明语句int a[10]={1,2,3,4,5,6};则元素a[9]的值为。 7.数组char c[ ]=”abcd”中有个元素,最后一个元素是。 8.”a”在内存中占个存储单元。 9.定义一个能存放下字符串Vocation的字符数组enm的语句为。 10.定义一个可保存100个整型数的数组pn,并把每个元素初值设为0的语句是。 11.与puts(ss)等价的printf函数调用是。 二、选择题 1.下面关于数组的说法,不正确的是() A.数组总为一个整体,可以参加算术运算 B.数组中的数组元素相当于一个简单变量 C.数组可以用来保存字符串 D.数组是一组连续的,类型相同的数据集合 2.下列说法不是数组特性的是() A.数组元素类型相同 B.数组长度固定

C.数组占用连续的内存空间 D.数组可作为一个整体参与运算 3.定义一个具有8个元素的整形数组,应使用语句() A.int a[8]; B.int a[2,4]; C.int a[ ]; D.int *a[8]; 4. 以下能正确定义一维数组的选项是() A.int num[ ]; B.#define N 100 int num[N]; C.int num[0..100]; D.int N=100; 5.下面对s的初始化,不正确的是() A.char s[5]={“abcd”}; B.char s[5]={‘a’,’b’,’c’}; C.char s[5]=””; D.char s[5]=”abcd”; 6.对以下说明语句正确的理解是() int a[10]={6,7,8,9,10,12}; A.将6个初值依次赋值给a[1]至a[5]; B.将6个初值依次赋值给a[0]至a[5]; C.将6个初值依次赋值给a[5]至a[10]; D.因数组长度和初值的个数不同,所以此语句不正确 7.用scanf语句为数组a中的第二个数组元素输入数据,格式正确的是()

C程序设计(数组)习题与答案

C程序设计(数组)习题与答案C程序设计(数组)习题与答案 数组是C语言中常用的数据结构之一,它可以存储多个相同类型的元素。掌握数组的使用对于C程序设计至关重要,下面将为大家介绍一些关于C数组的习题及其答案。 1. 习题一:计算数组元素的和 题目描述:编写一个程序,计算给定数组中所有元素的和,并输出结果。 解题思路: ```c #include int main() { int arr[5] = {1, 2, 3, 4, 5}; // 定义一个包含5个元素的整型数组 int sum = 0; // 用于存储和的变量 // 遍历数组,累加每个元素的值 for (int i = 0; i < 5; i++) { sum += arr[i]; } printf("数组元素的和为:%d\n", sum);

return 0; } ``` 2. 习题二:查找数组中的最大值 题目描述:编写一个程序,找出给定整型数组中的最大值,并输出结果。 解题思路: ```c #include int main() { int arr[7] = {4, 7, 2, 9, 1, 5, 8}; // 定义一个包含7个元素的整型数组 int max = arr[0]; // 假设第一个元素为最大值 // 遍历数组,比较每个元素的值与当前最大值的关系 for (int i = 1; i < 7; i++) { if (arr[i] > max) { max = arr[i]; } }

printf("数组中的最大值为:%d\n", max); return 0; } ``` 3. 习题三:查找数组中的特定元素 题目描述:编写一个程序,在给定整型数组中查找是否存在指定元素,并输出结果。 解题思路: ```c #include int main() { int arr[6] = {3, 6, 9, 2, 5, 8}; // 定义一个包含6个元素的整型数组 int target = 2; // 指定要查找的元素 int found = 0; // 用于标记是否找到目标元素的变量 // 遍历数组,比较每个元素的值与目标值的关系 for (int i = 0; i < 6; i++) { if (arr[i] == target) { found = 1;

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

C语言习题六(数组部分)习题及答案 习题六 一.选择题 1.在C语言中,引用数组元素时,其数组下标的数据类型允许是 c 。A)整型常量B)整型表达式 C)整型常量或整型表达式C)任何类型的表达式 2.以下对一维整型数组a的正确说明是D 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.若有定义: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元素的正确引用是。A A)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进行正确初始化的语句是。C A)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。

Java数组练习题(带答案)

一填空题【1】 1)数组的元素通过下标来访问,数组Array的长度为Array.length。 2)数组复制时,"="将一个数组的引用传递给另一个数组。 3)JVM将数组存储在栈(堆或栈)中。 4)数组的二分查找法运用的前提条件是数组已经排序。 5)Java中数组的下标的数据类型是整型。 6)数组最小的下标是0。 7)arraycopy()的最后一个参数指明复制元素的个数。 8)向方法传递数组参数时,传递的是数组的引用。 9)数组初始化包括数组的申明,创建和初始化。 10)数组下标访问超出索引范围时抛出数组越界异常 11)浮点型数组的默认值是0.0f。 12)数组创建后其大小不能改变。 二选择题 1.下面错误的初始化语句是_ABD__ A. char str[]="hello"; B. char str[100]="hello"; C. char str[]={'h','e','l','l','o'}; D. char str[]={'hello'}; 2.定义了一维int型数组a[10]后,下面错误的引用是 _B__A.a[0]=1;B.a[10]=2;C.a[0]=5*2;D.a[1]=a[2]*a[0]; 3.下面的二维数组初始化语句中,正确的是____A. float b[2][2]={0.1,0.2,0.3,0.4};B. int a[][]={{1,2},{3,4}};C. int a[2][]= {{1,2},{3,4}};D. float a[2][2]={0}; 4.引用数组元素时,数组下标可以是_D___A.整型常量B.整型变量C.整型表达式D.以上均 可 5.定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为____ A. 24 B.25 C. 18 D. 17 6.下列初始化字符数组的语句中,正确的是__B__A. char str[5]="hello";B. char str[]={'h','e','l','l','o','\0'};C. char str[5]={"hi"};D. char str[100]=""; 7.数组在Java中储存在C中A.栈B.队列C.堆D.链表 8.下面程序的运行结果是____ main(){int a[][]={{1,2,3},{4,5,6}}; System.out.printf("%d", a[1][1]); } A. 3 B.4 C.5 D. 6 9.下面程序的运行结果是_C___main(){ int x=30; int[] numbers=new int[x]; x=60; System.out.println(numbers.length);} A.60 B.20 C.30 D.50

c语言数组练习题

c语言数组练习题 C语言中的数组是一种用于存储多个相同类型数据的数据结构。通过练习数组的使用,可以更好地理解和掌握C语言编程的基本概念和技巧。本文将为您提供一些C语言数组练习题,帮助您巩固对数组的理解和运用。 1. 请编写一个程序,从键盘输入10个整数,并将它们存储到一个数组中。然后,计算数组中所有元素的和并输出结果。 解答: ```c #include int main() { int nums[10]; int sum = 0; for(int i=0; i<10; i++){ scanf("%d", &nums[i]); sum += nums[i]; } printf("数组元素的和为:%d\n", sum);

return 0; } ``` 2. 编写一个程序,从键盘输入一个整数n(n大于等于1),然后动态创建一个大小为n的整数数组,并将1到n的所有奇数存储到该数组中。最后,输出该数组的所有元素。 解答: ```c #include #include int main() { int n; printf("请输入一个整数n:"); scanf("%d", &n); int* nums = (int*)malloc(n * sizeof(int)); int count = 0; for(int i=1; i<=n; i++){ if(i % 2 != 0){

nums[count] = i; count++; } } printf("数组中的奇数为:"); for(int i=0; i

C程序设计(数组)习题与答案

一、单选题 1、若有定义 char s[10];则在下面表达式中不表示s[1]的地址的是()。 A.s++ B.&s[0]+1 C.&s[1] D.s+1 正确答案:A 2、若有定义int a[5],*p=a;则对a数组元素的正确引用是()。 A.a+2 B.*(a+2) C.*&a[5] D.*(p+5) 正确答案:B 3、若有定义int a[5],*p=a;则对a数组元素地址的正确引用是()。 A.p+5 B.&a+1 C.*a+1 D.&a[0] 正确答案:D 4、若要对a进行合法的自减运算,则之前应有下面()的说明。 A.int b[10]; int *a=b+1; B.int k; int *a=&k; C.int p[3]; int *a=p; D.char *a[3]; 正确答案:A

5、若有定义int x[10]={0,1,2,3,4,5,6,7,8,9},*p1;则数值不为3的表达式是()。 A.p1=x+3,*p1++ B.x[3] C.p1=x+2,*++p1 D.p1=x+2,*(p1++) 正确答案:D 6、设int x[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 0},*p=x,k;且0≤k<10, 则对数组元素x[k]的错误引用是()。 A.x[p-x+k] B.p+k C.*(&x[k]) D.*(x+k) 正确答案:B 7、设double *p[6];则()。 A.p是指针数组,其元素是指向double型变量的指针 B.p是指向double型变量的指针 C.p是double型数组 D.p是数组指针,指向double型数组 正确答案:A 8、若有定义int x[6]={2,4,6,8,5,7},*p=x,i;要求依次输出x数组6个元素中的值,不能完成此操作的语句是()。 A.for(i=0;i<6;i++) printf("%2d",*p++); B.for(i=0;i<6;i++) printf("%2d",*(p+i)); C.for(i=0;i<6;i++) printf("%2d",*(p++)); D.for(i=0;i<6;i++) printf("%2d",(*p)++); 正确答案:D 9、下面程序执行后的输出结果是()。

C语言数组选择题及答案

C语言数组选择题及答案 1、以下定义语句中,错误的是________。 A) int a[]={1,2}; B) char a[]={"test"}; C) char s[10]={"test"}; D) int n=5,a[n]; D 2、以下对一维数组a进行正确初始化的是__________。 A) int a[10]=(0,0,0,0,0); B) int a[10]={ }; C) int a[ ]={0}; D) int a[10]={ 10*2}; C 3、以下对二维数组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}}; B 4、在定义int a[5][4]; 之后,对a的引用正确的是________。 A) a[2][4] B) a[1,3] C) a[4][3] D) a[5][0] C 5、以下给字符数组str定义和赋值正确的是________。 A) char str[10]; str={"China!"}; B) char str[ ]={"China!"};

C) char str[10]; strcpy( str,"abcdefghijkl"); D) char str[10]={"abcdefghijkl"}; B 6、以下一维数组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]; D 7、在执行语句:int a[ ][3]={1,2,3,4,5,6}; 后, a[1][0]的值是________。 A) 4 B) 1 C) 2 D) 5 A 8、当接受用户输入的含有空格的字符串时,应使用________函数。 A) gets( ) B) getchar( ) C) scanf( ) D) printf( ) A 9、在定义int a[5][6]; 后,数组a中的第10个元素是________。(设a[0][0]为第一个元素)A) a[2][5] B) a[2][4]

Java数组练习题(带答案)

一填空题之欧侯瑞魂创作 1)数组的元素通过下标来访问,数组Array的长度为。 2)数组复制时,"="将一个数组的引用传递给另一个数组。 3)JVM将数组存储在栈(堆或栈)中。 4)数组的二分查找法运用的前提条件是数组已经排序。 5)Java中数组的下标的数据类型是整型。 6)数组最小的下标是0。 7)arraycopy()的最后一个参数指明复制元素的个数。 8)向方法传递数组参数时,传递的是数组的引用。 9)数组初始化包含数组的申明,创建和初始化。 10)数组下标访问超出索引范围时抛出数组越界异常 11)浮点型数组的默认值是。 12)数组创建后其大小不克不及改变。 二选择题 1.下面错误的初始化语句是_ABD__ A. char str[]="hello"; B. char str[100]="hello"; C. char str[]={'h','e','l','l','o'}; D. char str[]={'hello'}; 2.定义了一维int型数组a[10]后,下面错误的引用是 _B__A.a[0]=1;B.a[10]=2;C.a[0]=5*2;D.a[1]=a[2]*a[0]; 3.下面的二维数组初始化语句中,正确的是____A. float b[2][2]={0.1,0.2,0.3,0.4};B. int a[][]={{1,2},{3,4}};C. int a[2][]= {{1,2},{3,4}};D. float a[2][2]={0}; 4.引用数组元素时,数组下标可以是_D 5.定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数 组元素个数为____ A. 24 B.25 C. 18 D. 17 6.下列初始化字符数组的语句中,正确的是__B__A. char str[5]="hello";B. char str[]={'h','e','l','l','o','\0'};C. char str[5]={"hi"};D. char str[100]=""; 7.数组在Java中储存在C 8.下面程序的运行结果是____ main(){int a[][]={{1,2,3},{4,5,6}}; System.out.printf("%d", a[1][1]); } A. 3 B.4 C.5 D. 6

C语言数组编程题及解答

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 #include 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以内的所有完数。

Java数组练习题(带答案)

For personal use only in study and research; not for commercial use For personal use only in study and research; not for commercial use 一填空题 1)数组的元素通过下标来访问,数组Array的长度为Array.length 。 2)数组复制时,"="将一个数组的引用传递给另一个数组。 3)JVM将数组存储在栈(堆或栈)中。 4)数组的二分查找法运用的前提条件是数组已经排序。 5)Java中数组的下标的数据类型是整型。 6)数组最小的下标是0 。 7)arraycopy()的最后一个参数指明复制元素的个数。 8)向方法传递数组参数时,传递的是数组的引用。 9)数组初始化包括数组的申明,创建和初始化。 10)数组下标访问超出索引范围时抛出数组越界异常 11)浮点型数组的默认值是0.0f 。 12)数组创建后其大小不能改变。 二选择题 1.下面错误的初始化语句是_ABD__ A. char str[]="hello"; B. char str[100]="hello"; C. char str[]={'h','e','l','l','o'}; D. char str[]={'hello'}; 2.定义了一维int型数组a[10]后,下面错误的引用是_B__ A. a[0]=1; B. a[10]=2; C. a[0]=5*2; D. a[1]=a[2]*a[0]; 3.下面的二维数组初始化语句中,正确的是____ A. float b[2][2]={0.1,0.2,0.3,0.4}; B. int a[][]={{1,2},{3,4}}; C. int a[2][]= {{1,2},{3,4}}; D. float a[2][2]={0}; 4.引用数组元素时,数组下标可以是_D___ A. 整型常量 B. 整型变量 C. 整型表达式 D. 以上均可 5.定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为____ A. 24 B. 25 C. 18 D. 17 6.下列初始化字符数组的语句中,正确的是__B__ A. char str[5]="hello"; B. char str[]={'h','e','l','l','o','\0'}; C. char str[5]={"hi"}; D. char str[100]=""; 7.数组在Java中储存在 C 中 A. 栈 B. 队列 C. 堆 D. 链表 8.下面程序的运行结果是____ main() { int a[][]={{1,2,3},{4,5,6}}; System.out.printf("%d", a[1][1]);

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,",( )) ; } 则在程序中的两个园括号中分别应填入:C A) & 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) 32 3. 阅读程序: main() { int a[2]={0},i,j,k=2; for(i=0;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) 120 5. 以下定义语句中,错误的是( 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] B) a[1] C) a[9] D) a[10] 9. 若定义数组并初始化int a[10]={ 1,2,3,4}, A) a[8] 的值为0 B) a[1] 的值为 1 C) a[3] 的值为 4 D) a[9] 的值为0 以下语句哪一个不成立( B ) 指出

相关主题
文本预览
相关文档 最新文档