10
设
有
下
列
数
据
定
义
语
句
:
char
str[2][10]={"abc"
,
"ABC"}
;
则 printf(" % d" , strcmp ( str[1] , str[0 ] ) ) 的 输 出 结 果 是 __________ ;
printf("%d",strcmp(strlwr(str[1],str[0])),str[0]))的输出结果是_______。
【分析】字符型数组 str 中,从 str[0]开始存放的字符串是"abc"、从 str[l]开始存放的字符
串是"ABC"。strcmp(str[l],str[0])是比较 str[l]和 str【0」处的两个字符串的大小,由
于"ABC"是小于"abc"的,按照 srrcmp 函数的功能可知,返回值是一个小于 0 的整数,
这是第 1 个空的答案。再来分析第 2 个空的答案,strlwr(str[l])函数的功能是将 str[l]
处 的 字 符 串 中 大 写 字 母 改 为 小 写 字 母 , 其 返 回 值 是 修 改 后 字 符 串 的 地 址 。
strcmp(stlwr(sir[1]),str[0]))函数的功能是比较 str[l]和 str[0]处的字符串,由
于 str[l]
处的字符串已经改为小写字母了,所以和 str[0]处的字符串完全相同,返回值是
0
,
这
就
是
第
2
个
空
的
答
案
。
[
答
案
]
某
个
小
于
0
的
任
意
整
数
0
11 下列程序的功能是读取 10 个实数,然后依次输出前 l 个实数和、前 2
…
个实数和、 、前
9 个 实 数 和 、 前 10 个 实 数 和 。 请 填 写 程 序 中 缺 少 的 语 句 。
main
(
)
{float
f[10]
,
X
=
0
.
0
;
int
i
;
for
(
i=0
;
i
<
10
;
i++
)
scanf
(
"
%
f"
,
&
f
)
;
for
(
i=1;i
<
=10
;
i++
)
{_______________________
printf ( "sum of NO % 2d - - - - % f \ n" , i , x ) ;
}
}
【分析】浏览程序清单后,可以发现前一个次数型循环是输入 10
个实数存入数组 f 中。后
一个次数型循环是计算前 i 个实数和并存入变量 X 中,然后再输出这个 x 的值。程序中所
缺少的语句就是实现"计算前 i 个实数和并存入变量 X 中"的。当 i 等于 1 时,x 要等于
f[0]的值,即 f[i-l]的值;当 i 等于 2 时,x 要等于 f[0] +f[l]的值,即 f[0]+f[i-1」
的值,此时 f[0]的值已经计算并存入变量 x 中;当 i 等于 3 时,x 要等于 f[0]+f[1]+
f[2]的值,即 f[0]+f[1]+f[i-l]的值,此时 f[0]+f[1]的值已经计算并存入变量 x 中;
由此可以推出:前 i 个值的计算公式为:x=x+f[i-1],将这个表达式组成语句就是需
要
填
写
的
内
容
。
【 答 案 】
x=x + f[i - l
] ;
或 x + = f[i - l] ;
12
运
行
下
列
程
序
的
输
出
结
果
是
(
)
111ll
①
llll
②
lll
③
222
④
main
(
)
{int a[]={1
,
2
,
3
,
4
,
5 }
,
i;
for
(
i=1;i
<
5
;
i
+
+
)
printf
(
"
%
1d"
,
a
-
a[i
一
1]
)
;
}
【分析】首先分析数组 a 各元素的值,由于是赋初值,很容易看出:a[0]
= 1、a[1]=
2…、a[4]=5。再分析次数型循环共计执行 4 次(i=1、i=2、i=3、i=4),每次输出 1 位
整数;-a[i-1],当 i=1 时,输出的是 2-1=1;当 i=2 时,输出的是 3-2=l;当