问题 填空题

下列给定程序中,函数fun()的功能是:从N个字符串中找出最长的那个中,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include <string.h>
#include <stdio.h>
#define N 5
#define M 81
/*************found**************/
fun(char (*sq) [N])
int i; char *sp;
sp=sq[0];
fori=0;i<N;i++)
if(strlen(sp)<strlen(sq[i]))
sp=sq[i];
/*************found**************/
return sq;

main ()
char str[N][M], *longest; int i;
printf("Enter %d lines:\n ",N);
for(i=0;i<N;i++) gets(str[i]);
printf("\nThe %d string :\n ",N);
for(i=0;i<N;i++) puts(str[i]);
longest=fun(str);
printf("\nThe longest string :\n ");
puts(longest);

答案

参考答案:fun(char(*sq)[N] 正确:char*fun(char(*sq)[M])
(2)错误:return sq; 正确:return sp;

解析: 函数fun()的肜参为字符串指针数组,每个元素指向一个长度为M的字符串。从主函数中的语句可以看出,字符串指针数组的每个元素指向一个字符串,要求函数fun()找出其中最长的字符串。可先假设指针数组的第1个元素所指的字符串最长,之后对字符串指针数组进行遍历,若遇字符串长度大于待定最长字符期,则令该字符串为待定最长字符串,如此循环直至指针数组末尾,即可得到最氏字符中的地址。

综合题

(20分)阅读下列材料,回答问题:

材料一 1941 年哈里曼就罗斯福要求参加对日作战意图作证时说:“存在的巨大危险是苏联可能袖手旁观,而等我们牺牲了大批美国人的生命打败日本之后,红军长驱直入满洲和中国北部大片地区。那时苏联人就能轻而易举地以‘公众要求’为口实,建立满洲和蒙古人民共和国了。”罗斯福力图使斯大林先前所谈的一般保证化为俄国尽早参加太平洋战争的行动……

——《美国第82 届国会关于远东军事形势听证会》

材料二 1945 年2 月,莫洛托夫向哈里曼递交了一份“斯大林元帅关于苏联参加对日作战政治条件草案”, 经罗斯福和斯大林修改后,即成为邀请丘吉尔共同签字的协定文本。其条件为: 对蒙古(蒙古人民共和国) 现状予以维持;库页岛南部及邻近的一切岛屿须交还苏联;大连商港国际化,苏联在该港优越权益须予保证,苏联租用旅顺为海军基地须予恢复。

——《国际条约集》

材料三 苏联本身和中国政府签订了一项苏中友好同盟协定,俾其以武力协助中国达成自日本枷锁下解放中国之目的。

——《国际条约集》

材料四 我们在克里米亚的会晤,重申我们共同的决心,即在今后的和平时期中,一定要保持并加强在这次战争中使联合国成为可能和确定目的上和行动上的团结一致。

——《美国对外关系外文文件集》

请回答:

(1) 材料一中美国要求苏联尽早参加太平洋战争的目的是什么?(4分)材料二中苏联同意参加对日作战的条件说明了什么?(4分)

(2) 据材料一、三分析,美国政府在外交上取得了什么成功? (3分)其最终目的是什么?(3分)

(3) 据上述四则材料,评价美苏等国的外交活动对世界反法西斯战争的影响。(6分)

单项选择题 案例分析题