大学MOOC C语言程序设计(李文敬)(南宁师范大学)1452248176 最新慕课完整章节测试答案
第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;}
答案: 【
