信息学竞赛(C语言)程序填空
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
·程序填空题·
1.(最大连续子段和)给出一个数列(元素个数不多于100),数列元素均为负整数、正整数、0。请找出数列中的一个连续子数列,使得这个子数列中包含的所有元素之和最大,在和最大的前提下还要求该子数列包含的元素个数最多,并输出这个最大和以及该连续子数列中元素的个数。例如数列为4,-5,3,2,4时,输出9和3;数列为1 2 3 -5 0 7 8时,输出16和7。
#include
int a[101];
int n,i,ans,len,tmp,beg;
int main(){
scanf("%d",&n);
for (i=1;i<=n;i++)
scanf("%d",&a[i]);
tmp=0;
ans=0;
len=0;
beg= ①;
for (i=1;i<=n;i++){
if (tmp+a[i]>ans){
ans=tmp+a[i];
len=i-beg;
}
else if ( ②&&i-beg>len)
len=i-beg;
if (tmp+a[i] ③){
beg= ④;
tmp=0;
}
else
⑤;
}
printf("%d %d\n",ans,len);
return 0;
}
①_______________________ ②_______________________
③_______________________ ④_______________________
⑤_______________________
2、读入一个字符串,如果出现了减号' - ' ,减号两侧又同时为小写字母、大写字母或数字,就需要按照ASCII码的顺序把' - ' 所代表的省略部分不全。
例如:' a – d ' 实际是' abcd ',' E – H ' 实际是' EFGH ' ,' A – A ' 实际上是' A ' ,' 0 - 7 ' 实际上是' 01234567 ' 。请编程输出转化后的字符串。
#include
#include
int main(void){
long length i,j;
char s[100];
scanf("%s",s);
length = strlen(s);
s[length] = ①;
i = ②;
while(i if( ③) { printf("%c",s[i]); ④ } else { if( ((s[i-1]>='a') && (s[i+1]<='z')) || ((s[i-1]>='A') && (s[i+1]<='Z')) || ((s[i-1]>='0') && (s[i+1]<='9')) ) { for( ⑤;j<=s[i+1];j++) ⑥ ⑦ } else { printf("%c",s[i]); i++; } } return 0; } ①_______________________ ②_______________________ ③_______________________ ④_______________________ ⑤_______________________ ⑥_______________________ ⑦_______________________