第1-2周 第 7.4-7.6 节 字符数组与字符串、数组作为函数的参数、程序举例

2.数组作为函数的参数

1、单选题:
​以下能对二维数组a进行正确说明的是(  )。‎
选项:
A: int a[ ][3]={{1,2,3},{4,5,6}};
B: int a[2][ ]={{1,2,3},{4,5,6}};
C: int a[2][4]={{1,2,3},{4,5},{6}};
D: int a[ ][3]={{1,2,3},{ },{4,5}};
答案: 【 int a[2][ ]={{1,2,3},{4,5,6}};

2、单选题:
‏以下一维整型数组a的正确说明是(  )。‎
选项:
A: int a(20);
B: int a;
C: int n=20,a[n];
D: #define N 10
int a[N];
答案: 【 #define N 10
int a[N];

3、单选题:
‏以下关于给字符数组a输入字符,正确的是(   )。‏
选项:
A: for(i=0;getchar(a[i])!='n';i++);
B: for(i=0;(a[i]=getchar())!='n';i++);
C: for(i=0;(a[i]=scanf("%c",&a))!='n';i++);
D: for(i=0;scanf("%c",a[i])!='n';i++);
答案: 【 for(i=0;(a[i]=getchar())!='n';i++);

4、单选题:
‏关于参数传递正确的代码段是( )。‍
选项:
A: main( )
{int a[10];......;fun(a,10);......}

int fun(char x[ ],10)
  {int i,s=0;for(i=0;i<10;i++) s+=x[i];....}
B: main( )
{int a[10];......;fun(a,10);......}

int fun(int x[ ],int n)
  {int i,s=0;for(i=0;i<n;i++) s+=x[i];....}
C: main( )
{int a[10];......;fun(a,10);......}

int fun(10,double x[ ])
  {int i,s=0;for(i=0;i<10;i++) s+=x[i];....}
D: main( )
{int a[10];......;fun(a,10);......}

int fun(int x[ ])
  {int i,s=0;for(i=0;i<10;i++) s+=x[i];....}
答案: 【 main( )
{int a[10];......;fun(a,10);......}

int fun(int x[ ],int n)
  {int i,s=0;for(i=0;i<n;i++) s+=x[i];....}】

5、单选题:
‍关于字符数组的参数传递正确的是(  )。​
选项:
A:   my(char x[ ],char y[ ])
 {int i;char t;for(i=0;x[i]=!'';i++) {t=x[i];x[i]=y[i];y[i]=t;}}
 
 main()
 { char a[80],b[80];gets(a);gets(b);my(&a,&b);puts(a);puts(b);}
B:  my(x[ ],y[ ])
 {int i;char t;for(i=0;x[i]=!'';i++) {t=x[i];x[i]=y[i];y[i]=t;}}
 
 main()
 { char a[80],b[80];gets(a);gets(b);my(a,b);puts(a);puts(b);}
C: my(char x[ ],char y[ ])
 {int i;char t;for(i=0;x[i]=!'';i++) {t=x[i];x[i]=y[i];y[i]=t;}}
 
 main()
 { char a[80],b[80];gets(a);gets(b);for(int i=0;i<80;i++) my(a[i],b[i]);puts(a);puts(b);}
D: my(char x[ ],char y[ ])
 {int i;char t;for(i=0;x[i]=!'';i++) {t=x[i];x[i]=y[i];y[i]=t;}}
 
 main()
 { char a[80],b[80];gets(a);gets(b);my(a,b);puts(a);puts(b);}
答案: 【 my(char x[ ],char y[ ])
 {int i;char t;for(i=0;x[i]=!'';i++) {t=x[i];x[i]=y[i];y[i]=t;}}
 
 main()
 { char a[80],b[80];gets(a);gets(b);my(a,b);puts(a);puts(b);}

字符串测试输入输出测试

1、单选题:
‍以下一维数组a的正确说明是()。‎
选项:
A: char a[10];
B: int a(10);
C: float a[n];
D: char a(10);
答案: 【 char a[10];

2、单选题:
​正确初始化的语句是()。‌
选项:
A: char a[10]="abcd";
B: char a(10)="abcd";
C: char a[10];a="abcd";
D: char a(10)="abcde";
答案: 【 char a[10]="abcd";

第1周 单元测试

1、单选题:
定义如下变量和数组:‎  int i;‎  int x[3][3]={1,2,3,4,5,6,7,8,9};‎则下面语句的输出结果是()‎  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 9
答案: 【 3 5 7

2、单选题:
有以下程序‎‍#include  <stdio.h>‎‍    int main( )‎‍{ int a[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,k,t;‎‍  for(i=0;i<3;i++)‎‍    for(k=i+1;k<4;k++)‎‍      if(a[i][i]<a[k][k])‎‍       {t=a[i][i];‎‍        a[i][i]=a[k][k];‎‍        a[k][k]=t;}‎‍  for(i=0;i<4;i++) ‎‍    printf("%d,",a[0][i]);‎‍   return 0;‎‍}‎‍程序运行后的输出结果是()‎‍ ‎
选项:
A:  6,2,1,1
B:  6,4,3,2
C:  1,1,2,6
D:  2,3,4,6
答案: 【  6,4,3,2

3、单选题:
设有数组定义: char array[ ]="China"; 则数组array所占的空间为()‎
选项:
A:  4个字节
B:  5个字节
C:  6个字节
D: 7个字节
答案: 【  6个字节

4、单选题:
下述对C语言字符数组的描述中错误的是()‍‍ ‍
选项:
A: 字符数组的下标从0开始
B: 字符数组中的字符串可以进行整体输入/输出
C: 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
D: 字符数组可以存放字符串
答案: 【 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值

5、单选题:
对两个数组a和b进行如下初始化​char a[]=”ABCDEF”;​char b[]={‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’}​则下述叙述正确是()​‍ ​
选项:
A: a和b数组完全相同 
B: a和b长度相同
C: a和b都存放字符串
D: a数组比b数组长度长
答案: 【 a数组比b数组长度长

6、单选题:
下面程序的功能是将字符串s中的字符c删除,请选择填空()‍#include  <stdio.h>‍int main( )‍{char s[80];‍ int i,j;‍ gets(s);‍ for(i=j=0;s[i]!='';i++)‍if(s[i]!='c') ‍     ;‍ s[j]='';‍ puts(s);‍return 0;‍}‍‍ ‍
选项:
A:  s[j++]=s[i]
B:  s[++j]=s[i]
C:  s[i]=s[j]
D:  s[j]=s[i]
答案: 【  s[j++]=s[i]

7、单选题:
下面程序的运行结果是   ‏#include "stdio.h"‏#include"string.h"‏int main( )‏{char a[80]="AB",b[80]="LMNP";‏int i=0;‏strcat(a,b);‏while(a[i++]!='')‏b[i]=a[i];‏puts(b);‏return 0;‏}‏‏ ‏
选项:
A: LB
B: ABLMNP
C: AB
D: LBLMNP
答案: 【 LBLMNP

8、单选题:
若二维数组a有m列,则在a[i][j]前的元素个数为‏
选项:
A: j*m+i
B: ‍i*m+j
C: i*m+j-1
D: i*m+j+1
答案: 【 ‍i*m+j

9、判断题:
​字符数组不要求它的最后一个字符为””,甚至可以不包含””。‏
选项:
A: 正确
B: 错误
答案: 【 正确

10、判断题:
​在程序中可以对数值数组中的数据进行整体使用。‌
选项:
A: 正确
B: 错误
答案: 【 错误

11、判断题:
‍如果strcmp(s1,s2)的返回值为一个负数,则表明字符串s1小于字符串s2。‍
选项:
A: 正确
B: 错误
答案: 【 正确

12、判断题:
‏用scanf函数输入的字符串不可以带空格。​
选项:
A: 正确
B: 错误
答案: 【 正确

13、判断题:
‍用gets函数输入的字符串可以带空格。‏
选项:
A: 正确
B: 错误
答案: 【 正确

14、判断题:
​实现两个字符串的复制可以使用str1=str2;语句。​
选项:
A: 正确
B: 错误
答案: 【 错误

15、判断题:
‏使用strcpy函数可以实现两个字符串的复制。​
选项:
A: 正确
B: 错误
答案: 【 正确

16、判断题:
​使用strcat函数可以实现两个字符串的连接。‏​ ‏
选项:
A: 正确
B: 错误
答案: 【 正确

17、判断题:
‎使用strlen函数可以求出一个字符串的存储长度(包含‘’字符)。‎
选项:
A: 正确
B: 错误
答案: 【 错误

18、判断题:
‍如有定义char a[20];则可以通过a=“I am a boy”;给a赋值。‎
选项:
A: 正确
B: 错误
答案: 【 错误

19、填空题:
‎下面程序的功能是将二维数组a中每个元素向右移一列,最右一列换到最左一列,移后的数组存到另一二维数组b中,并按矩阵形式输出a和b,请填空。例如:array a:                 array b:      4   5   6              6   4   5      1   2   3              3   1   2‏‎#include <stdio.h>int main(){ int a[2][3]={4,5,6,1,2,3},b[2][3]; int i,j; printf("array a:n"); for(i=0;i<=1;i++) {for(j=0;j<3;j++)   printf("%5d",a[i][j]);   printf("n");}‏‎ for(i=0;i<=1;i++)  for(j=0;j<2;j++)      ‍                              ;‏‎  for(i=0; i<2;i++)    b[i][0]=a[i][2];  printf("array b:n");  for(i=0;i<2;i++)  {for(j=0;j<3;j++)     printf("%5d",b[i][j]);  printf("n");} return 0;}‏
答案: 【 b[i][j+1]=a[i][j]

20、填空题:
‍下面程序的功能是检查一个二维数组是否对称(即:对所有ij都有a[i][j]=a[j][i]).请填空。#include <stdio.h>int main(){int a[4][4]={1,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4}; int i,j,found=0; for(j=0;j<4; j++)        for(i=j+1; i<4; i++)               if(           )               { found=1;                break;} if(found)        printf("No"); else         printf("Yes"); return 0;}‎
答案: 【

剩余75%内容付费后可查看

发表评论

电子邮件地址不会被公开。 必填项已用*标注