百家拳C语言测试中心

相关链接

    C语言数组与字符串测试题(2)

  1. 以下程序代码在编译时出现了错误,请指出程序代码错误的地方并改正,使其能编译成功。
    01 #include
    02 int main(void)
    03 {
    04 int i;
    05 char str[30]=”this is my first program.”;
    06 char strl[20]=”my company is ZCT.”
    07 printf(“原始字符串联str = %s\n”, str);
    08 printf(“字符串 srtl = %s\n”,strl);
    09 strl=str;
    10 printf(“复制后字符串 strl = %s\n”, str);
    11 return 0;
    12 }

  2. 第9行有错误,因为无法利用字符串名称直接指定给另一个字符串,如果需要指定字符串,必须从字符数组中一个一个地取出元素内容进行复制。第9行矩阵,strl、str可改为用循环方式指定数组元素相等。
    for(i=0; strl[i]!=’\0’;i++)
    {
    strl[i]=strl[I];
    }
  3. 下面这个程序想要显示字符串内容,但是结果不如预期,请问出了什么问题?
    01 #include
    02 int main(void){
    03 char str[ ]={‘J’,‘u’ ,‘s’,‘t’};
    04 printf(“%s”,str);
    05 return 0;
    06 };

  4. 第三行改为 03 char str[ ]={‘J’,’u’,’s’,’t’,’\0’};
  5. 假设这声明了一个整数数组a[30],而a的内存位置为240ff40,请问a[10]与a[15] 的内存位置是什么?

  6. 如果整数的长度为4个字节,则a[10]表示从a的位置移动10×4个字节位置,结果是240ff68同理可推出a[15]的内存位置应为240ff88。
  7. 如果声明一个50个元素的字符数组,如下所示; char address[50]; 假设这个数组的起始位置指向1200,试求出address[23] 的内存的起始位置。

  8. 1222
  9. 为了要显示数组中所有元素的值,使用for循环语句,但结果并不正确,请问下面这个程序代码哪里出了问题?
    01 #include
    02
    03 int main(void)
    04 {
    05 int arr[5] = {1, 2, 3, 4, 5};
    06 int i;
    07 for (i = 1; i <= 5; i++)
    08 printf(“a[%d] = %d\n”, i, arr[i]);
    09 return 0;
    10 }

  10. 第07行错误,数组索引值是由0开始,最后一个元素索引应该是元素个数减1,所以应修正为 for(i=0;i<5;i++)
  11. 下面这个程序代码片段要设置并显示数组初始值,但隐含了不易发现的错误,请找出这个程序代码片段的错误所在。
    01 int a[2, 3] = {{1, 2, 3},{4, 5, 6,} };
    02 int i,j;
    03 for(i=0; i<2; i++)
    04 for(j = 0; j<3; j++)
    05 printf(“a[%d, %d] = %\n”, a[I, j])

  12. 第01行与05行出错了,因为二维数组的声明与指定是a[ ][ ]的形式,而不是a[,],修改为 01 int a[2][3]={{1,2,3},{4,5,6 } }; 05printf(“a[%d][%d]=%d\n, a[i][j]);
  13. 下面这个程序片段哪里出了错误?
    01 chqr str[80];
    02 printf(“请输入字符串:”);
    03 scanf(“%c”,&str);
    04 printf(“您输入的字符串为:%s”,str);

  14. 第03行不需要使用&运算符,因为str名称本身就表示内存地址。
  15. 中文字是由两个字节所组成的中文字的第一个编码为0xA440,在Big5中将中文字分为高低两个字节,使用for循环语句来显示所有的中文字。

  16. #include
    int maina()
    {
    int i, j;
    for(i=164; i<256; i++)
    for(j=64; j<256 ;j++){
    {
    printf(“%c%c”,i, j);
    if(!(j %30) )
    getch();
    }
    putchar(‘\n’);
    return 0;
    }
  17. 两个矩阵,对A与B的相乘,是有某些限制的。首先必须符合A为一个m*n的矩阵,B为一个n*p的矩阵,对A*B之后的结果为一个m*p的矩阵C设计一个程序,让用户输入A、B矩阵内容,计算两者乘积。

  18. 提示,C语言中的元素有以下关系
    C11=a11*b11+a12*b21+…+a1n*bn1
    C1p=a11*b1p+a12*b2p+…+a1n*bnp
    Cmp=am1*b1p+am2*b2p+…amn*bnp
  19. 下列程序代码的输出结果是什么?
    int n1[5],i;
    for (i=0;i<5;i++)
    n1[i]=i+6;
    printf(“%d”,n1[3]);



  20. 9
  21. 什么是二维数组?请简单叙述。

  22. 二维数组可以视为一维数组的线性方式延伸处理,也可以视为是平面上列与行的组合。

自我评价 答对0--2题 答对3--4题 答对5--6题 答对7--8题 答对9--10题

上一篇    下一篇