云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > C语言基本题解答

C语言基本题解答

  • 62 次阅读
  • 3 次下载
  • 2025/5/30 18:16:01

则执行语句 printf(“%d”, strlen(strcpy(str1, str2))); 后的输出结果是

① 9 ② 8 ③ 5 ④ 3

【解】上述代码是输出表达式strlen(strcpy(str1, str2))的值,该表达式的求值 顺序是先执行函数调用strcpy(str1, str2),该函数调用将str2 所指字符串内容复制到str1所指的字符数组中,并返回存放于str1中的字符串的首字符的指针。经函数调用strcpy(str1, str2)后,str1中的内容变成字符串“xyz”。接着求更新成字符串“xyz”的str1中的字符串的长度,并输出。这样,代码将输出整数3。所以解答为④。

35.设int x[ ] = {1, 3, 5, 7, 9, 11, 13}, *p = x; 则不能正确引用数组元素的表达式是

① *(p--) ② *(--p) ③ *(p++) ④ *(++p)

【解】根据C语言关于数组变量名表达式就是数组首元素的指针的约定,上述指针变量p的初值是指向数组x的首元素x[0]。表达式*(p--)的求值顺序是先求p--,它的值是p 的原先值,即x[0]的指针&x[0]。这样,表达式*(p--)引用的是数组x的首元素x[0],是对数组x的一个有意义元素的引用。但这里要指出的是在该表达式求值后,变量p 的值将要减去一个单位,使p 指向x[0]的前一个位置,这是一个在程序中没有确定意义的位置。表达式*(--p)的求值顺序是先求--p,它首先让变量p 的值减去一个单位,使p 指向x[0]的前一个位置,这是一个在程序中没有确定意义的位置。表达式*(--p)引用

的不再是数组x的一个有意义的元素。表达式*(p++)的求值顺序是先求p++,它的值是p 的原先值&x[0]。这样,表达式*(p++)引用的是数组x的首元素x[0],是对数组x的一个有意义元素的引用。在该表达式求值后,变量p 的值将要增加一个单位,使p 是x[0]的后一个元素的指针,即&x[1]。表达式*(++p)的求值顺序是先求++p,它首先让变量p 的值增加一个单位,使p的值是x[0]的后一个元素的指针,即&x[1]。这样,表达式*(++p)引用的是数组x的元素x[1],也是一个有意义的引用。所以解答为②。

36.设 int x[ ] = {1, 2, 3, 4}, y, *p = &x[1]; 则执行语句 y = (*--p)++; 后变量y的值为 ① 1 ② 2 ③ 3 ④ 4

【解】上述指针变量p的初值是指向数组x的元素x[1]。表达式y = (*--p)++的求值顺序是先求--p,它首先让变量p 的值减去一个单位,使p 指向x[0]。接着求表达式*--p,这是对x[0]的引用。表达式(*--p)++也就是x[0]++,它的值是 x[0]的原来值1。最后,表达式y = (*--p)++将1赋给变量y,使y的值为1。经上述表达式求值后,x[0]的值变成2。所以解答为①。

37.在C语言中,下列说法中,错误的叙述是

① 函数定义可以分为两个部分:函数说明部分和函数体 ② 主函数可以调用任何非主函数

③ 任何非主函数可以调用其它任何非主函数 ④ 程序可以从任何函数开始执行

【解】每个C函数的定义分两部分,函数说明部分和函数体,所以叙述①是正确的叙述。在C语言中,函数可以递归调用,主函数可以调用程序中的任何函数,当然可以调用任何非主函数的其它函数,所以叙述②是一个正确的叙述。同样理由,叙述③也是正确的。C语言规定,C程序只有一个主函数,并总是从主函数开始执行,不能从非主函数开始执行。所以,说程序可以从任何函数开始执行是错误的。所以解答是④。 38.执行下列程序

int fun(int x1, int x2)

{ int x; x1 > x2 ? (x = 3) : (x = 4); return x + x1; } main()

{ printf(“%d\\n”, fun(7, 8)); } 后输出结果是

① 9 ② 10 ③ 11 ④ 12

【解】上述程序中,主函数以实际参数7和8调用函数fun,并输出函数的返回值。函数fun被调用时,形式参数x1的初值是7,x2的初值是8。函数执行表达式语句 x1 > x2 ? (x = 3) : (x = 4)

这是一个条件表达式,因条件x1 > x2不成立,条件表达式求(x = 4),该表达式的求值使函数的局部变量x的值为4。最后,函数返回x + x1的值11。所以解答为③。

39.函数调用语句“f((e1, e2), (e3, e4, e5));”中参数的个数

是○。

① 1 ② 2 ③ 4 ④ 5

【解】上述函数调用中,(e1, e2)和(e3, e4, e5)是两个带括号的表达式,所以函数调用只提供两个实参,其中第一个实参先计算e1的值,然后计算e2,并以e2的值为实参。第二个实参顺序计算e3,e4,e5,并以e5的值为实参。所以解答是②。 40.以下程序中的for循环执行的次数是 #include #define N 2 #define M N+1 #define NUM (M+1)*M/2 main()

{ int i, n = 0;

for(i = 1; i <=NUM;i++) { n++; printf(“%d”, n); } printf(“\\n”); } ① 5 ② 6 ③ 8 ④ 9

【解】代码NUM被替换成(2+1+1)* 2+1/2,所以其值是8。所以程序中的for循环执行的次数是8次。正确解答是③。

二、填充题

1.用高级语言编写的程序称为▁▁▁▁程序,它可以通过▁▁▁▁

搜索更多关于: C语言基本题解答 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

则执行语句 printf(“%d”, strlen(strcpy(str1, str2))); 后的输出结果是 ① 9 ② 8 ③ 5 ④ 3 【解】上述代码是输出表达式strlen(strcpy(str1, str2))的值,该表达式的求值 顺序是先执行函数调用strcpy(str1, str2),该函数调用将str2 所指字符串内容复制到str1所指的字符数组中,并返回存放于str1中的字符串的首字符的指针。经函数调用strcpy(str1, str2)后,str1中的内容变成字符串“xyz”。接着求更新成字符串“xyz”的str1中的字符串的长度,并输出。这样,代码将输出整数3。所以解答为④。 35.设int x[ ] = {1, 3, 5, 7, 9, 11, 13}, *p = x; 则不能正确引用数组元素

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com