您好,欢迎访问三七文档
一、选择题:1.若有以下数组说明,则数值最小的和最大的元素下标分别是(b)。inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};A.1,12B.0,11C.1,11D.0,122.若有以下数组说明,则i=10;a[a[i]]元素数值是(c)。inta[12]={1,4,7,10,2,5,8,11,3,6,9,12};A.10B.9C.6D.53.若有以下说明,则数值为4的表达式是(d)。inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};charc='a’,d,g;A.a[g-c]B.a[4]C.a[‘d’-‘c’]D.a[‘d’-c]4.下列语句中,正确的是(d)。A.chara[3][]={‘abc’,‘l’};B.chara[][3]={‘abc’,‘l’};C.chara[3][]={‘a’,“l”};D.chara[][3]={“a”,“l”};5.下列定义的字符数组中,“printf(“%s\n”,str[2]);”的是输出是(c)。staticstr[3][20]={“basic”,“foxpro”,“windows”};A.basicB.foxproC.windowsD.输出语句出错6.合法的数组定义是(d)。A.inta[]={“string”};B.inta[5]={0,1,2,3,4,5};C.chara={“string”};D.chara[]={0,1,2,3,4,5};7.语句“printf((“%d\n”,strlen(“ats\no12\1\\”));”的输出结果是(c)。A.11B.10C.9D.88.设有如下字符数组定义,则合法的函数调用是(a)。chara[]={“Iamastudent”},b[]={“techer”};A.strcmp(a,b);B.strcpy(a,b[0]);C.strcpy(a[7],b);D.strcat(a[7],b);9.设有如下定义,则正确的叙述为(c)。charx[]={“abcdefg”};chary[]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’};A.数组x和数组y等价B.数组x和数组y长度相同C.数组x的长度大于数组y的长度D.数组x的长度小于数组y的长度10.设有如下二维数组定义,则不正确的元素引用是(c)。inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};A.a[2][3]B.a[a[0][0]][1]C.a[7]D.a[2][‘c’-‘a’]二、填空题1.在C语言中,数组的各元素必须具有相同的数据类型,元素的下标下限为0,但在执行过程中,不检查元素下标是否越界。下标必须是正整数、0或者整形表达式。2.在C语言中,数组在内存中各占一片连续的存储区,由数组名代表它的首地址。数组名是一个地址常量,不能对它进行赋值运算。3.执行“staticintb[5],a[][3]={1,2,3,4,5,6};”后,b[4]=0,a[1][2]=6。4.设有定义语句“staticinta[3][4]={{1},{2},{3}};”,则a[1][1]的值为0,a[2][1]的值为0。5.若在程序中用到“putchar()”函数,则应在程序开头写上包含命令#includestdio.h,若在程序中用到“strlen()”函数,则应在程序开头写上包含命令#includestring,h。6.下面程序的功能是输出数组s中最大元素的下标,请填空。voidmain(){intk,p;ints[]={1,-9,7,2,-10,3};for(p=0,k=p;p6;p++)if(s[p]s[k])k=p;printf(“%d\n”,k);}7.下面程序的功能是在a数组中查找与x值相同的元素所在位置。数据从a[1]元素开始存放,请填空。#includestdio.hvoidmain(){inta[11],i,x;printf(“输入10个整数:”);for(i=1;i=10;i++)scanf(“%d”,&a[i]);printf(“输入要找的数x:”);scanf(“%d”,);a[0]=x;i=10;while(x!=a[i])i--;if(i!=0)printf(“与x值相同的元素位置是:%d\n”,i);elseprintf(“找不到与x值相同的元素!\n”);}8.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。#include“string.h”voidmain(){inti,j,k,;charstr[]={“1234567”};for(i=0,j=strlen(str);ij;i++,j--){k=str[i];str[i]=str[j];str[j]=k;}}9.以下程序的功能是给偶数行的方阵中所有边上的元素和两对角线上的元素置1,其它元素置0(要求对每个元素只置一次值)。最后按矩阵形式输出。请填空。voidmain(){inta[10][10],i,j;for(i=0;i10;i++){a[i][i]=1;a[i][9-i]=1;}for(i=1;i9;i++)a[0][i]=1;for(i=1;i9;i++)a[9][i]=1;for(i=1;i9;i++)a[i][0]=1;for(i=1;i9;i++)a[i][9]=1;for(i=1;i9;i++)for(j=1;j9;j++)if(i!=j&i+j!=9)a[i][j]=0;for(i=0;i10;i++)5{for(j=0;j10;j++)printf(“%2d”,a[i][j]);Printf(“\n”);}}10.用键盘输入一串字符,下面程序能统计输入字符中大写字母的个数,用‘#’号结束输入,请填空。#includestdio.hvoidmain(){intc[26],i;charca;for(i=0;i26;i++)c[i]=0;scanf(“%c”,&ca);while(ca!=’#’){if((ca=’A’)&&(ca=’Z’))c[ca-65]+=1;scanf(“%c”,&ca);}for(i=0;i26;i++)if(c[i])printf(“%c:%d个\n”,i+‘A’,c[i]);}11.以下程序可把输入的十进制长整型数以十六进制数的形式输出,请填空。voidmain(){charb[17]={“0123456789ABCDEF”};intc[64],d,i=0,base=16;longn;printf(“Enteranumber:\n”);scanf(“%d”,&n);do{c[i]=n%base;i++;n=n/base;}while(n!=0);printf(“Transmitnewbase:\n”);for(i=i-1;i=0;i--)printf(“%c”,b[c[i]]);printf(“\n”);}三、阅读程序,写出程序运行结果。1.说明下列程序的功能。键入10行字符,然后在屏幕上输出最长的一行字符及字符长度#includestdio.h#includestring.hmain(){charstr[10][80],c[80];inti;for(i=0;i10;i++)gets(str[i]);strcpy(c,str[0]);for(i=1;i10;i++)if((strlen(c)strlen(str[i]))strcpy(c,str[i]);printf(“%s\n”,c);printf(“%d\n”,strlen(c));}2.说明下列的程序的功能。使用简单排序法对键入的10行字串进行从小到大的排序#includestdio.h#includestring.hmain(){chara[10][80],c[80];inti,j,k;for(i=0;i10;i++)gets(a[i]);for(i=0;i9;i++){k=i;for(j=i+1;j10;j++)if(strcmp(a[j],a[k])0)k=j;if(k!=i){stcpy(c,a[i]);strcpy(a[i],a[k]);strcpy(a[k],c);}}for(i=0;i10;i++)puts(a[i]);}3.说明下列程序的功能。两矩阵求和#includestdio.hmain(){inti,j;floata[3][3],b[3][3],c[3][3],x;for(i=0i3;i++)for(j=0;j3;j++){scanf(“%f”,&x);a[i][j]=x;}for(i=0i3;i++)for(j=0;j3;j++){scanf(“%f”,&x);b[i][j]=x;}for(i=0i3;i++)for(j=0;j3;j++)c[i][j]=a[i][j]+b[i][j];for(i=0i3;i++){printf(“\n”);for(j=0;j3;j++)prinf(“%f”,c[i][i]);}}4.阅读程序,写出运行结果。求转置矩阵#includestdio.hmain(){charstr[]=”SSSWILTECHl\l\llW\lWALLMPl”;intk;charc;for(k=2;(c=str[k])!=’\n’;k++){switch(c){case‘A’:putchar(‘a’);continue;case‘l’:break;casel:while((c=str[++k]!=’\l’&&c!=’\0’);case9:putchar(‘#’);case‘E’:case‘L’:continue;default:putchar(c);continue;}putchar(‘*’);}printf(“\n”);}5.说明下列程序的功能。把a数组中第i行第j列元素值赋给b数组中第j行第i列元素#includestdio.hmain(){inti,j;floata[3][3],b[3][3],x;for(i=0;i3;i+)for(j=0;j3;j++){scanf(“%f”,&x);a[i][j]=x;}for(i=0;i3;i++)for(j=0;j3;j++)b[j][i]=a[i][j];//a的第i行第j列放到b的第j行第i列for(i=0;i3;i++){printf(“\n”);for(j=0;j3;j++)printf(“%f”,b[i][j]);}四.编程题输入一个3*5的整数矩阵,输出其中最大值、最小值和它们的下标。
本文标题:C数组习题
链接地址:https://www.777doc.com/doc-4078197 .html