练习41

二级C语言必过教程

共 1483字,需浏览 3分钟

 · 2021-07-29

点击蓝字

关注我们

DRAGON BOAT FESTIVAL




练习41


考试规则:点击你认为正确的选项

1.以下涉及字符串数组、字符指针的程序段,没有编译错误的是( )。

A.char* str, name[5]; str = "C/C++";

回答正确 √

试题解析

字符数组只能进行初始化,不能直接对字符数组赋值,B、C. D错误; A选项中定义-一个字符指针str,然后把一串字符的首地址赋给str,不会发生编译错误,答案为A选项。


B. char* str, name[6]; name = "Hello";

回答错误 ✕

C. char str1[7] = "prog.c", str2[8]; str2 = str1;

回答错误 ✕


D. char line[]; line =" ///"

回答错误 


点击答题丨点击选项查看对错丨展开动画



2. 有以下程序:

#include <stdio.h>int f(int m){    static int n=0;    n+=m;    return n;}main(){    int n=0;    pritf("%,"(++));    printf("%d\n",f(n++));}

程序运行后的输出结果是( )。

A.3,3

回答错误 ✕

B.1,1

回答错误 ✕

C.2.3

回答错误 ✕

D.1,2

回答正确 √

试题解析

该题目中首先区别++n和n++,第一次调用f函数时,将++n (n自增1后再参与运算)作为参数进行传递,此时变量m的值为1,执行n+=m;后,n=1,将1返回主函数,并输出。第二次调用f函数时,将n++ ( n参与运算后再自增1)作为参数进行传递,此时变量m的值为1,执行语句n+=m; ,由于n是静态存储变量,因此n=2,将2返回主函数并输出。因此D选项正确。



点击答题丨点击选项查看对错丨展开动画


3.有如下程序

#include <stdio.h>void change(int* array, int len){  for (; len>=0; len-)    arrayl[len] += 2;main({  int i, array[5]={1,2};  change(array, 4);  for (i=0; i<4; i++)    printf("%d,", rryi);  printf("\n");}

程序运行后的输出结果是( )。

A.2,3.4,5,

回答错误 ✕

B.3,4,5,6,

回答错误 ✕

C.3,4,2,2

回答正确 √


试题解析

在对一维数组初始化时,如果在说明数组时给出了长度,但没有给所有的元素赋予初始值,而只依次给前面的几个数组元素赋予初值,那么C语言将自动对余下的元素赋初值0。本题程序执行过程为:调用change函数,将数组array={1,2,0,0,0}首地址传入函数,函数实现将数组每个元素加2 , arry=(3,4.2,2.2}。依次输出数组前4个元素为3,4,2,2。C选项正确。



D.1,2,0,0,

回答错误 ✕

点击答题丨点击选项查看对错丨展开动画



球分享

球点赞

球在看


浏览 7
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报