当前位置:文档之家› 学习情境四数组习题

学习情境四数组习题

学习情境四数组习题一、选择题1.以下为一维整型数组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];2.以下对二维数组a的正确说明是________.A.int a[3][];B.float a(3,4);C.double a[1][4]D.float a(3)(4);3.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为______.(假设a[0][0]位于数组的第一个位置上。

)A.i*m+jB.j*m+iC.i*m+j-1D.i*m+j+14.若二维数组a有m列,则在a[i][j]前的元素个数为________.A.j*m+iB.i*m+jC.i*m+j-1D.i*m+j+15.若有以下程序段:int a[]={4,0,2,3,1},i,j,t;for(i=1;i<5;i++){t=a[i];j=i-1;while(j>=0&&t>a[j]){a[j+1]=a[j];j--;}a[j+1]=t;}则该程序段的功能是_________.A.对数组a进行插入排序(升序)B.对数组a进行插入排序(降序)C.对数组a进行选择排序(升序)D.对数组a进行选择排序(降序)6.有两个字符数组a、b,则以下正确的输入语句是_______.A.gets(a,B.; B.scanf("%s%s",a,B.;C.scanf("%s%s",&a,&B.;D.gets("a"),gets("b");7.下面程序段的运行结果是_________.char a[7]="abcdef";char b[4]="ABC";strcpy(a,B.;printf("%c",a[5]);A.空格B.\0C.eD.f8.判断字符串s1是否大于字符串s2,应当使用_______.A.if(s1>s2)B.if(strcmp(s1,s2))C.if(strcmp(s2,s1)>0)D.if(strcmp(s1,s2)>0)9.下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔,请选择填空。

#include <stdio.h>main(){char s[80],c1,c2=' ';int i=0,num=0;gets(s);while(s[i]!= '\0'){c1=s[i];if(i==0)c2=' ';else c2=s[i-1];if(___)num++ i++;}printf("There are %d words.\n",num);}A.c1==''&&c2==''B.c1!= '' && c2==''C.c1=='' && c2!= ''D.c1!= ''&&c2!= ''10.下面程序的运行结果是________.#include <stdio.h>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('*');}}A.SSW*B.SW*C.SW*AD.SW11.下面程序段执行后,s的值是________ static char ch[ ]= ″600″;int a,s=0;for(a=0;ch[a]>= '0' && ch[a]<= '9' ;a++)s=10*s+ch[a]-'0′A.600B.6C.0D.出错12.有如下程序,其运行结果是_________。

main( ){int n[3], i,j,k;for(i=0;i<3;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.2B.1C.0D.3二、填空题1.若有定义:double x[3][5];则x数组中行下标的下限为_________,列下标的上限为_________。

2.数组在内存中占一片连续的存储区,由代表它的首地址。

3.若有以下程序段 char str[]="xy\n\012\\\n";printf("%d",strlen(str)),执行后的输出结果是。

4.下面程序以每行4个数据的形式输出a数组,请填空。

#define N 20main(){int a[N],i;for(i=0;i<N;i++) scanf("%d",&a[i]);for(i=0i<N;i++){if (_____________) printf("\n");printf("%3d",a[i]);}printf("\n");}5.下面程序可求出矩阵a的主对角线上的元素之和,请填空。

main(){int a[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;for(i=0;i<3;i++)for(j=0;j<3;j++)if(_____)sum=sum+_______;printf("sum=%d\n",sum);}6.当从键盘输入18并回车后,下面程序的运行结果是________。

main(){int x,y,i,a[8],j,u,v;scanf("%d",&x);y=x;i=0;do{u=y/2;a[i]=y%2; i++;y=u;}while(y>=1)for(j=i-1;j>=0;j--)printf("%d",a[j]);}7.下面程序用插入法对数组a进行降序排序,请填空。

main(){int a[5]={4,7,2,5,1},t i,j,m;for(i=1;i<5;i++){m=a[i];j=____;while(j>=0&&m>a[j]){ _______; j--; }_______=m;}for(i=0;i<5;i++)printf("%d",a[i]);printf("\n");}8.下面程序的功能是在三个字符串中找出最小的,请填空。

#include<stdio.h>#include<string.h>main(){char s[20],str[3][20];int i;for(i=0;i<3;i++)gets(str[i]);strcpy(s,_______);if(strcmp(str[1],s)<0)strcpy(s,str[1]);if(strcmp(str[2],s)<0)strcpy(s,str[2]);printf("%s\n",_______);}9.下面程序的运行结果是________。

(注意continue与break的作用)#include<stdio.h>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('#');}}10.下面函数的功能是将一个字符串str的内容颠倒过来。

#include<stdio.h>main( ){int str[80],i,j,__ _for(i=0;i<80;i++)scanf(″%c″,&str[i]);for(i=0, j=strlen(str) ; i<j; i++; j- -){ k=str[i];str[j]=str[i];str[i]=k;}}11.对输人中每一个数字出现的次数进行计数。

#include<stdio.h>main(){int i,ch,___ ;for(i=0;i<l0;++i) ndigit[i]=0;while((ch=getchar())!=EOF)if(ch>'0' && ch<='9' );for (j=0;j<10;j++)printf("数字%d的出现次数是:%d\n",n, ndigit[i]);}三、编程题1.将字符数组str2中的全部字符拷贝到字符数组strl中。

不采用strcpy函数。

拷贝时,'0'也要拷贝进去,'0'后面的字符不拷贝。

2.将输入的n个整数从小到大排序输出,再求出此n个整数中所有奇数和及所有素数的个数。

3.统计从键盘输入的字符中每个数字、字母、空格及换行符的个数。

4.编写一个程序,判断一个字符串是否是回文(回文是指正读与倒读都相同的字符串)。

5.设有 10 个学生的成绩分别为 89,90,84,78,84,67,88,92,79,73,存放在数组stu中,输出它们的平均成绩 aver(保留两位小数)和低于平均成绩的人数。

相关主题