7)修改程序cmody621.c,实现求满足
的最小正整数n。
#include
voidmain()
{
inti=1,sum=0;
while(/**/sum>3000/**/)
{
/**/sum=i;/**/
i++;
}
printf("1+2+3+4+...+%d=%d\n",/**/i/**/,sum);
getch();
}
cmody621.c
/**/sum<=3000/**/
/**/sum+=i;/**/
/**/i-1/**/
8)修改程序cmody622.c,使函数fun(char*p,char*q)完成如下功能:
将p所指字符串中的字符逐个复制到q所指字符串中,在每4个字符之后插入1个空格(注:
若遇空格字符则重新累计字符个数)。
例如,
输入:
ABCDEFGHIJKLMNOPQRS
输出:
ABCDEFGHIJKLMNOPQRS
#include
#include
voidfun(char*p,char*q)
{intn,i;
/**/i=1;/**/
while(*p)
{n=1;
while(n<=4&&*p)
{q[i++]=*p;
if(*p=='')/**/n=1;/**/
p++;
n++;
}
if(*p)
{if(*p!
='')q[i++]='';
else
{q[i++]=*p;
p++;
}
}
}
/**/q[i]='0'/**/;
}
voidmain()
{
charstr_a[80],str_b[80];
printf("Enterastring:
");
gets(str_a);
printf("Theoriginalstringis:
\n");
puts(str_a);
fun(str_a,str_b);
printf("Thestringafterinsertspaceis:
\n");
puts(str_b);
getch();
}
cmody622.c
/**/i=0;/**/
/**/n=0;/**/
/**/q[i]='\0'/**/
9)改错题cmody631.c,实现任意输入一个年份和月份,输出该月有多少天。
提示:
(1)二维数组day的第1行存放非闰年每个月的天数,第二行存放闰年每个月的天数;
(2)判断输入年份是否为闰年,若是则从day的第2行获取对应的月份天数,否则从day的第一行获取对应的月份天数。
#include
#include
voidmain()
{
int/**/day/**/={{31,28,31,30,31,
30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,
31}};
intyear,month,/**/flag=1/**/;
printf("Pleaseinputyear:
");
scanf("%d",&year);
printf("Pleaseinputmonth:
");
scanf("%d",&month);
if(year%400==0||year%4==0&&year%100!
=0)
flag=1;
printf("Daysofthemonthis%d.",/**/day[flag][month]/**/);
printf("\n");
getch();
}
cmody631.c
/**/day[2][12]/**/
/**/flag=0/**/
/**/day[flag][month-1]/**/
(10)修改程序cmody632.c,使函数pattern(intn)根据参数n(1例如,
当n=5时:
*
*#*
*#*#*
*#*#*#*
*#*#*#*#*
当n=4时:
*
*#*
*#*#*
*#*#*#*
#include
#include
voidpattern(/**/int/**/)
{inti,j,space;
for(i=1;/**/i{for(space=1;space<=20-i;space++)
printf("");
for(j=1;j<=2*i-1;j++)
{if(/**/j%2==0/**/)
printf("*");
else
printf("#");
}
printf("\n");
}
}
voidmain()
{intn;
do
{printf("Pleaseinputn(1");
scanf("%d",&n);
}while(n<=1||n>=10);
pattern(n);
getch();
}
cmody632.c
/**/intn/**/
/**/i<=n/**/
/**/j%2!
=0/**/
11)修改程序cmody491.c,计算满足以下条件的整数n的最大值。
#include
#include
voidmain()
{
intn=1,sum=0;
/**/if(sum<1000)/**/
{
sum+=n*(n+1);
n++;
}
printf("n=%d\n",/**/n/**/);
getch();
}
cmody491.c
/**/while(sum<1000)/**/
/**/n-1/**/
12)修改程序cmody492.c,实现从键盘输入一串字符和整数n,若n小于字符串长度则从字符串右侧开始截取n个字符,否则显示无法运行。
例如:
输入的字符串为”Professor”,n=3,则截取的子串为”sor”。
#include
#include
#include
voidmain()
{
charstr[100],sub[100];
intn,len,i;
printf("Enterstring:
");
gets(str);
printf("\nEntern:
");
scanf("%d",&n);
len=strlen(str);
if(n>len)
printf("Can'trunwith%d!
\n",n);
else
{/**/i=1;/**/
while(i{
/**/sub[i]=str[n+i];/**/
i++;
}
/**/sub[i]='\n';/**/
printf("\nsubstringis:
%s\n",sub);
}
getch();
}
cmody492.c
/**/i=0;/**/
/**/sub[i]=str[len-n+i];/**/
/**/sub[i]='\0';/**/
13)修改程序cmody501.c,输出总分最高学生的姓名和总分(8位学生的姓名和两科成绩已存储在结构体数组中)。
#include
#include
structstudent
{charname[10];
floatscore[2];
};
voidmain()
{
/**/studentstu[8]/**/={{"Mary",76,85},
{"John",85,90},{"Tom",81,78},{"Susa",87,67},{"Wilu",79,98},{"Yili",65,63},{"Sonmu",73,82},{"Lichar",70,71}};
inti=0,p;
floattotal,max=0;
while(i<8)
{total=/**/stu[i].score[1]+stu[i].score[2];/**/
if(total>max)
{max=total;
p=i;
}
i++;
}
printf("\nBestis%s,",stu[p].name);
printf("Total=%.1f\n",/**/total/**/);
getch();
}
cmody501.c
/**/structstudentstu[8]/**/
/**/stu[i].score[0]+stu[i].score[1];/**/
/**/max/**/
14)修改程序cmody502.c,使函数find(inta[])计算数组a各元素的平均值,以及每个元素与该平均值的差,并返回差的绝对值的最大值。
#include
#include
#include
#defineN10
doublefind(inta[])
{inti;
doublemax,/**/aver=1/**/;
for(i=0;iaver+=a[i];
/**/aver=N/**/;
max=fabs(a[0]-aver);
for(i=1;iif(fabs(a[i]-aver)>max)
max=fabs(a[i]-aver);
return(/**/aver/**/);
}
voidmain()
{intarr[N]={11,23,15,27,9,20,18,16,24,22};
printf("Resultis%lf.\n",find(arr));
getch();
}
cmody502.c
/**/aver=0/**/
/**/aver/=N/**/;
/**/max/**/
15)修改程序cmody511.c,实现从键盘输入10个100以内互不相同的正整数,输出其中第二大的数
#include
#include
voidmain()
{
inti,/**/max1=max2=0/**/;
ints[10];
printf("Pleaseinput10numbers:
\n");
for(i=0;i<10;i++)
{scanf("%d",&s[i]);
if(s[i]>max1)
{/**/max2=s[i];/**/
max1=s[i];
}
elseif(s[i]>max2)
{max2=s[i];
}
}
printf("\n%d\n",/**/s[i]/**/);
getch();
}
cmody511.c
/**/max1=0,max2=0/**/;
/**/max2=max1;/**/
/**/max2/**/
16)修改程序cmody512.c,实现将升序排列数组a与b的元素按升序存入数组c中。
#include
#include
voidmain()
{inta[5]={3,7,8,15,18};
intb[6]={-3,0,5,9,19,36};
intc[11];
/**/inti,j;/**/
i=j=k=0;
while(i<5&&j<6)
{if(a[i]<=b[j])
{c[k]=a[i];
/**/k--;/**/
i++;
}
else
c[k++]=b[j++];
}
while(i<5)
c[k++]=a[i++];
while(j<6)
c[k++]=/**/b[j--]/**/;
printf("\nArraya:
\n");
for(i=0;i<5;i++)
printf("%3d",a[i]);
printf("\nArrayb:
\n");
for(j=0;j<6;j++)
printf("%3d",b[j]);
printf("\nArrayc:
\n");
for(k=0;k<11;k++)
printf("%3d",c[k]);
printf("\n");
getch();
}
cmody512.c
/**/inti,j,k;/**/
/**/k++;/**/
/**/b[j++]/**/;
17)修改程序cmody521.c,实现从键盘输入一个仅包含‘0’、‘1’的字符串,输出其中仅含‘0’的最长子串的长度和这种子串第一次出现的起始位置(第几个字符)。
例如:
输入:
0011101000010100001
输出:
48
#include
#include
#include
voidmain()
{charc;
inti,len,p,maxlen=0;
i=0;
/**/len=10;/**/
printf("\nPleaseinputthestring:
");
while((c=getchar())!
='\n')
{i++;
if/**/(c='1')/**/
len++;
else
{if