C语言-第6章 利用数组处理批量数据

更新时间:2024-03-30 00:25:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第6章 利用数组处理批量数据

一、单项选择题

1. 以下对一维数组a的正确说明是:

A) char a(10); B) int a[]; C)int k=5,a[k]; D)char a[]={?a?,?b?,?c?}; 2. 以下能对一维数组a进行初始化的语句是: ( C )

A) int a[5]=(0,1,2,3,4,); B) int a(5)={}; C) int a[ ]={0,1,2}; D) int a{5}={10*1}; 3.在C语言中对一维整型数组的正确定义为 。

A)int a(10); B)int n=10,a[n];

C)int n;a[n]; D) #define N 10

int a[N];

4、已知:int a[10]; 则对a数组元素的正确引用是( )。 A、a[10] B、a[3.5] C、a(5) D、a[10-10] 5. 执行下面的程序段后,变量k中的值为

int k=3, s[2]; s[0]=k; k=s[0]*10;

A) 不定值 B) 33 C) 30 D) 10 6. 下列说法中错误的是 A 构成数组的所有元素的数据类型必须是相同的 B 用指针法引用数组元素允许数组元素的下标越界 C 一维数组元素的下标依次是1、2、3…… D 定义数组时的长度可以是整型常量表达式

7. 若有以下数组说明,则数值最小的和最大的元素下标分别是( )。

int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};

A)1,12 B)0,11 C)1,11 D)0,12 8. 若有以下数组说明,则i=10;a[a[i]]元素数值是( )。

int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};

A)10 B)9 C)6 D)5

9. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节

数是 A) 3

B) 6

C) 10 D) 20

10. 若有说明:int a[][3]={1,2,3,4,5,6,7}; 则数组a的第一维的大小为: ( ) A) 2 B) 3 C) 4 D)无确定值

11. 若有说明:int a[][3]={{1,2,3},{4,5},{6,7}}; 则数组a的第一维的大小为: ( ) A) 2 B) 3 C) 4 D)无确定值 12. 以下定义语句中,错误的是

A) int a[]={1,2}; B) char *a[3]; C) char s[10]=“test”; D) int n=5,a[n]; int i;

13.下面程序段的输出结果是:

int x[3][3]={1,2,3,4,5,6,7,8,9}; for (i=0;i<3;i++) printf(\d \

A) 1 5 9 B) 1 4 7 C) 3 5 7 D) 3 6 9 14. 对二维数组的正确定义是( )

A)int a[ ] [ ]={1,2,3,4,5,6}; B)int a[2] [ ]={1,2,3,4,5,6};

C)int a[ ] [3]={1,2,3,4,5,6}; D)int a[2,3]={1,2,3,4,5,6}; 15.已知int a[3][4];则对数组元素引用正确的是______. A)a[2][4] B)a[1,3] C)a[2][0] D)a(2)(1) 17.下面程序的输出结果是____。

main( ) {

int m[3][3]={ {1}, {2}, {3} }; int n[3][3]={ 1, 2, 3 };

printf(\d\ printf(\d\ }

A)30 B)34 C)56 D)11 (下面的题目是用字符数组处理字符串的相关内容) 18. 在C语言中,以 作为字符串结束标志

A)?\\n? B)? ? C) ?0? D)?\\0? 19.下列数据中属于“字符串常量”的是( )。

A)“a” B){ABC} C)?abc\\0? D)?a? 20.字符串 “ABCD”在内存占用的字节数是( )。

A.4 B.6 C.1 D.5 21. 下面不正确的字符串常量是:( )

A) ?PROGRAM? B “12?12” C “0” D “ ”

22. 设有数组定义: char array [ ]=\则数组array所占的空间为 A) 4个字节 B) 5个字节 C) 6个字节 D) 7个字节 23. 下述对C语言中字符数组的描述种错误的是 。

A)字符数组可以存放字符串

B)字符数组中的字符串可以整体输入和输出

C)可在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D)可在对字符数组定义时通过赋值运算符“=”对字符数组整体初始化

24. 已知char x[]=\则关于数组长度正确的是 . A)相同 B)x大于y C)x小于y D)以上答案都不对

25. 给出以下定义:

char x[ ]=\ char y[ ]={'a','b','c','d','e','f','g'}; 则正确的叙述为 A) 数组x和数组y等价 B) 数组x和数组y的长度相同 C) 数组x的长度大于数组y的长度 D) 数组x的长度小于数组y的长度 26. 若有以下语句,则正确的描述是( )。

static char x[ ]=”12345” ;

static char y[ ]={?1?, ?2?, ?3?, ?4?, ?5?} ;

A、x数组长度大于y数组长度 B、x数组和y数组的长度相同 C、x数组长度小于y数组长度 D、x数组等价于y数组

27. 已知:char s[20]= ”programming”, *ps=s; 则不能引用字母o的表达式是( )。 A、ps[2] B、s[2] C、ps+2 D、ps+=2, *ps 28.判断两字符串s1,s2是否相等,应使用( ).

A)if(s1==s2) B)if(s1=s2) C)if(strcpy(s1,s2)) D)if(strcmp(s1,s2)==0) 29.以下printf语句的输出结果为: printf(“%d\\n”,strlen(“school”));

A) 7 B) 6 C)存在语法错误 D)不定值 30. 对字符数组s赋值,不合法的一个是( )

A) char s[]=\ B)char s[20]={\C) char s[20];s=\ D) char s[20]={'B','e','i','j','i','n','g'}; 31. 对字符数组str赋初值,str不能作为字符串使用的一个是( )

A) char str[]=\ B) char str[9]={'s','h','a','n','g','h','a','i',?\\0?}; C) char str[]={\ D) char str[8]={ 's','h','a','n','g','h','a','i'}; 32. 合法的数组定义是

A)int a[]={“string”}; B) int a[5]={0,1,2,3,4,5}; C)char a={“string”}; D) char a[5]={0,1,2,3,4,5}; 33. 对字符数组s赋值,不合法的是:

A) char s[]=\ B) char s[20]={\C) char s[20];s=\ D) char s[20]={'c','h','i','n','a'}; 34. 下面初始化与此初始化charc[ ]=“I am happy”;等价的是( )

A) char c[ ]={?I?,? ?,?a?,?m?,? ?,?h?,?a?,?p?,?p?,?y?,?\\0?}; B) char c[ ]={?I?,?am?,?happy?}; C) char c[ ]={?I?, ??,?a?,?m?,??,?h?,?a?,?p?,?p?,?y?}; D)char c[ ]={?I?,?am?,?happy?,?\\0?}; 35. 下面各语句中,能正确进行赋字符串操作的语句是( )。

A) char s[5]={“ABCDE”}; B) char s[5]={?A?,?B?,?C?,?D?,?E?}; C) char *s;s=“ABCDE”; D) char *s;scanf(“%s”,&s); 36.下列字符串赋值方式不正确的是( )

A).char str[20]; B). char *str ; str=”I am a boy!”; str=”I am a boy!”;

C). char *str=”I am a boy!”; D). char str[20]=” I am a boy!”;

二、阅读程序,写出运行结果

1.

#include main()

{ int i, a[10]; for(i=9;i>=0;i--)

a[i]=10-i;

printf(“%d%d%d”,a[2],a[5],a[8]); }

运行结果为: 852 3.

#include main( )

{ int i,k,a[10],p[3]; k=5;

for(i=0;i<10;i++) a[i]=i;

for(i=0;i<3;i++) p[i]=a[i*(i+1)]; for(i=0;i<3;i++) k+=p[i]*2;

printf(\d\\n\}

运行结果为: 21

5.

#include int m[3][3]={{1},{2},{3}}; int n[3][3]={1,2 ,3}; main( )

{ printf(“%d,”, m[1][0]+n[0][0]); printf(“%d\\n”,m[0][1]+n[1][0]); }

运行结果为: 3,0

2.

#include main() { int i,a[6];

for (i=0; i<6; i++) a[i]=i; for (i=5; i>=0 ; i--) printf(\3d\}

运行结果为: 5 4 3 2 1 04.

#include main( )

{ int n[3][3], i, j; for(i=0;i<3;i++ ) {for(j=0;j<3;j++ ) {n[i][j]=i+j;

printf(“%d ”, n[i][j]); }

printf(“\\n”); } }

运行结果为: 1 2 2 3 3 4

6.

#include main() { int i;

int x[3][3]={1,2,3,4,5,6,7,8,9}; for (i=1; i<3; i++)

printf(\d \ }

运行结果为: 6 8

7.

#include

main() {int j;

char str[10]; scanf(“%s”, str);

printf(“%s\\n”,str); }

键盘输入:howare(空格) you(回车) 运行结果为: Howare

9.

#include main(){

8.

#include “stdio.h” func(int b[ ]) { int j;

for(j=0;j<4;j++) b[j]=j; }

main( ) { int a[4], i; func(a);

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

printf(“-”,a[i]); }

运行结果为:0 1 2 3

char diamond[][5]={{?_?,?_?,?*?},{?_?,?*?,?_?,?*?},{?*?,?_?,?_?,?_?,?*?},{?_?,?*?,?_?,?*?},{?_?,?_?,?*?}};

int i,j;

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

printf(“%c”,diamond[i][j]); printf(“\\n”);

}}

注:“_”代表一个空格。 运行结果为: __* _*_* *___* _*_* __*

10.

#include main( )

{ int i, f[10];

f[0]=f[1]=1;

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

f[i]=f[i-2]+f[i-1]; for(i=0;i<10;i++) { if(i%4==0) printf(“\\n”);

printf(“%d ”,f[i]); } }

运行结果为: 1 1 2 3 5 8 13 21 34 55 12.

#include main()

{int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2],i,j;

for(i=0;i<=1;i++) {for(j=0;j<=2;j++)

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

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

{for(j=0;j<=1;j++)

printf(\5d\ } }

运行结果为:

1 4 2 5 3 6

14.

#include\main() {int j,k;

static int x[4][4],y[4][4]; for(j=0;j<4;j++) for(k=j;k<4;k++) x[j][k]=j+k;

11.

#include

main()

{float fun(float x[]); float ave,a[3]={4.5,2,4};

ave=fun(a); printf(“ave=%7.2f”,ave); }

float fun(float x[]) {int j;

float aver=1; for (j=0;j<3;j++) aver=x[j]*aver; return(aver); }

运行结果为: ave= 36.00

13.

#include f(int b[],int n) {int i,r; r=1;

for (i=0;i<=n;i++) r=r*b[i]; return (r); } main()

{int x,a[]={1,2,3,4,5,6,7,8,9}; x=f(a,3);

printf(“%d\\n”,x); }

运行结果为: 24

for(j=0;j<4;j++) for(k=j;k<4;k++) y[k][j]=x[j][k];

for(j=0;j<4;j++) for(k=0;k<4;k++)

printf(\d,\}

运行结果为:

0,0,0,0,1,2,0,0,2,3,4,0,3,4,5,6

三、编程题

1.输入10个数,要求按逆序输出。

#include int main() {

int i,a[10];

printf(\for (i=0; i<=9;i++)

scanf(\d\

}

2.输入10个数,将其在数组中逆序存放。 #include

int main() {

int i,a[10],temp;

printf(\for (i=0; i<10;i++) for(i=0;i<5; i++) {

temp=a[i]; a[i]=a[9-i]; a[9-i]=temp; }

for(i=9;i>=0; i--)

printf(\d\\t\printf(\ return 0;

scanf(\d\

for (i=0; i<10;i++) printf(\d\\t\ }

3. 从键盘输入10个整数,统计其中正数、负数和零的个数,并在屏幕上输出。

#include int main( ) {

int a[10], i, p=0, n=0, z=0;

printf(“please input 10 numbers: ”); for(i=0;i<10;i++) scanf(“%d,”,&a[i]); for(i=0;i<10;i++){ if (a[i]>0) p++; printf(\return 0;

else if (a[i]<0) n++; else z++; }

printf(“正数:], 负数:],零:]\\n”,p,n,z); return 0; }

4. 从键盘上输入10个数,求其平均值。

#include int main( ) {

int a[10],i,s=0; float ave;

for(i=0;i<10;i++) scanf(“%d”,&a[i]);

for(i=0;i<10;i++) sum+=a[i]; ave=(float)sum/10;

printf(\f\\n\

return 0; }

5.从键盘输入30名学生的成绩数据,求其中的最高分、最低分和平均分。 (提示:用数组存放成绩数据) #include #define M 30 int main ( ) {

float score[M], max , min, sum,aver; int i ;

printf(“please input score: \\n”); for(i=0; i

scanf(“%f”, &score[i]); max=score[0]; min=score[0]; aver=score[0]; for(i=1; i

if (max < score[i]) max= score[i];

if (min>score[i]) min=score[i]; sum+=score[i]; }

aver=sum/M;

printf(“max=%f, min=%f,aver=%f”, max, min, aver); return 0;

}

6. 输入10个数存放在数组中,再输入一个数,查找其在数组中第一次出现的位置,若不存在也给出提示。

#include int main() {

int a[10],i,x;

printf(“Input 10 integers:”); for(i=0;i<10;i++)

scanf(“%d”,&a[i]);

printf(“Input the number you want to find:”);

scanf(“%d”,&x);

for (i=0;i<10;i++) if(a[i]==x) break;

if( i<10 )

printf(“The pos of x is:%d\\n”,i+1);

else

printf(“can not find x!\\n”);

return 0; }

7.输入一个字符串(少于80个字符),统计其中数字字符的个数。

#include int main(void){ int count=0, i=0; char str[80];

printf(\ scanf(\s\

for(i = 0; str[i] != '\\0'; i++) if(str[i] <= '9' && str[i] >= '0') count++;

printf(\d\\n\ return 0;

}

8.编程实现如下功能:从键盘输入一行字符(少于80个字符),统计其中大写英文字符,小写英

文字符和其他字符的个数。 #include #include int main() {

char str[80];

int len, i, letter = 0, digit = 0, space = 0, others = 0; printf(\ string:\gets(str);

len = strlen(str); for (i=0; i

if (str[i] >= 'a' && str[i] <= 'z' || str[i] >= 'A' && str[i] <= 'Z')

letter ++; /*统计英文字符*/ digit ++; /*统计数字字符*/ others ++; /*统计其它字符的个数*/ else if (str[i] >= '0' && str[i] <= '9' ) else

}

}

printf(\ %d\\n\printf(\ %d\\n\printf(\ %d\\n\return 0;

9.有10个地区的面积,要求对它们按由小到大的顺序排列。

#include void main(){ int a[10]; int i,j,t;

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

scanf(“%d”,&a[i]); for(i=0;i<9-j;i++)

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

{t=a[i];a[i]=a[i+1];a[i+1]=t;}

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

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

10.从键盘输入10名学生的成绩数据,按成绩从高到低的顺序排列并输出。

#include main(){ int a[10];

int i,j,temp;

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

scanf(\d\for(j=0;j<9;j++) for(i=1;i<10;i++)

printf(“%d\\t\

printf(\

if(a[j]

{temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; }

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

}

11. 从键盘上输入一个2*3的矩阵,将其转置后形成3*2的矩阵输出。 #include int main() {

int a[2][3], b[3][2],i,j; for(i=0;i<2;i++) for(j=0;j<3;j++) scanf(“%d”,&a[i][j]); for(i=0;i<3;i++) for(j=0;j<2;j++) b[i][j]=a[j][i]; for(i=0;i<3;i++) {

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

printf(\5d\ printf(\n”); } return 0; }

12. 从键盘输入一个5行5列的矩阵,计算并输出其主对角线元素之和。

#include int main( ){ int i, j ,a[5][5];

printf(“Enter data:\\n”); for(i=0;i<5;i++) for(j=0;j<5;j++) scanf(“%d”,&a[i][j]); for(i=0;i<5;i++) for(j=0;j<5;j++)

if(i==j)

sum=sum+a[i][j];

printf(“sum=]\\n”,sum); }

printf(\d,\

本文来源:https://www.bwwdw.com/article/hyqr.html

Top