文本描述
一.阅读程序写结果(共4题,每题8分,共计32分)
1.
#include
int a,b;
int work(int a,int b){if (a%b)
return work(b,a%b);return b;
}
int main(){scanf("%d%d",&a,&b);printf("%d\n",work(a,b));return 0;
}
输入:20 12
输出:_______
2.
#include
int main()
{int a[3],b[3];int i,j,tmp;for (i=0;i<3;i++)
scanf("%d",&b[i]);for (i=0;i<3;i++){
a[i]=0;
for (j=0;j<=i;j++)
{a[i]+=b[j];b[a[i]%3]+=a[j];
}}tmp=1;for (i=0;i<3;i++){
a[i]%=10;
b[i]%=10;
tmp*=a[i]+b[i];}printf("%d\n",tmp);return 0;
}
输入:2 3 5
输出:_______
3.
#include
const int c=2009;
int main()
{int n,p,s,i,j,t;scanf("%d%d",&n,&p);s=0;t=1;for(i=1;i<=n;i++){
t=t*p%c;
for(j=1;j<=i;j++)s=(s+t)%c;}printf("%d\n",s);return 0;
}
输入:11 2
输出:
4.
#include
#include
#define maxn 50 void getnext(char str[])
{int l=strlen(str),i,j,k,temp;k=l-2;while(k>=0&&str[k]>str[k+1]) k--;i=k+1;while(istr[k]) i++;temp=str[k];str[k]=str[i-1];str[i-1]=temp;for(i=l-1;i>k;i--)
for(j=k+1;jstr[j+1]){
temp=str[j];
str[j]=str[j+1];
str[j+1]=temp;}return;
}
int main()
{char a[maxn];int n;scanf("%s %d",a,&n);while(n>0){
getnext(a);
n--;}printf("%s\n",a);return 0;
}
输入:NOIP 3
输出:
二.完善程序 (前8空,每空3分,后2空,每空2分,共28分)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;