程序改错 好好好Word下载.docx
《程序改错 好好好Word下载.docx》由会员分享,可在线阅读,更多相关《程序改错 好好好Word下载.docx(214页珍藏版)》请在冰点文库上搜索。
scanf("
%d"
&
n);
\nTheresultis%1f\n"
fun(n));
getch();
}
答案:
1).doubley=1;
2).for(i=3;
=m;
i++)或for(i=3;
m+1;
3).y+=1.0/(2*i-3);
第2题(10.0分)
用选择法对数组中的n个元素按从小到大的顺序进行排序。
#include<
stdio.h>
#defineN20
voidfun(inta[],intn)
inti,j,t,p;
for(j=0;
j<
n-1;
j++)
{
p=j
for(i=j;
i<
n;
if(a[i]>
a[p])
p=j;
t=a[p];
a[p]=a[j];
a[j]=t;
}
main()
inta[N]={9,6,8,3,-1},i,m=5;
排序前的数据:
"
);
for(i=0;
m;
i++)
%d"
a[i]);
\n"
fun(a,m);
排序后的数据:
1).p=j;
2).if(a[i]<
a[p])或if(a[p]>
a[i])
3).p=i;
第3题(10.0分)
编写一个程序,从键盘接收一个字符串,然后按照字符顺
序从小到大进行排序,并删除重复的字符。
string.h>
voidmain()
charstr[100],*p,*q,*r,c;
输入字符串:
gets(str);
for(p=str;
p;
p++)
for(q=r=p;
*q;
q++)
if(*r>
*q)
r=q;
if(r==p)
c=r;
*r=*p;
*p=c;
*p;
for(q=p;
*p==*q;
q++);
strcpy(p+1,q);
结果字符串:
%s\n\n"
str);
1).for(p=str;
2).if(r!
=p)
3).c=*r;
第4题(10.0分)
编写程序,求矩阵(3行3列)与5的乘积
例如:
输入下面的矩阵:
100200300
400500600
700800900
程序输出:
50010001500
200025003000
350040004500
intfun(intarray[3][3])
/**********FOUND**********/
j;
for(i=1;
i<
3;
for(j=0;
j<
j++)
array[i][j]=array[i][j]/5;
{
inti,j;
intarray[3][3]={{100,200,300},
{400,500,600},
{700,800,900}};
clrscr();
for(i=0;
i++)
for(j=0;
j++)
%7d"
array[i][j]);
}
fun(array);
Convertedarray:
{
1).inti,j;
2).for(i=0;
3).array[i][j]=array[i][j]*5;
第5题(10.0分)
用"
起泡法"
对连续输入的十个字符排序后按从小到大的次序
输出.
#defineN10
main()
charstr[N];
/***********FOUND***********/
for(i=0;
i<
N;
i++)scanf("
%c"
str[i]);
sort(str[N]);
sort(charstr[N])
chart;
for(j=1;
j<
j++)
N-j;
i--)
if(str[i]<
str[i+1])
t=str[i];
str[i]=str[i+1];
str[i+1]=t;
1).for(i=0;
&
str[i]);
2).sort(str);
3).for(i=0;
i++)
4).if(str[i]>
str[i+1])或if(str[i+1]<
str[i])
第6题(10.0分)
读入一行英文文本,将其中每个单词的最后一个字母改成
大写,然后输出此文本行(这里的“单词”是指由空格
隔开的字符串)。
若输入“Iamastudenttotaketheexamination.”,
则应输出“IaMAstudenTtOtakEthEexamination.”。
conio.h"
ctype.h"
string.h"
up1st(char*p)
integerk=0;
for(;
*p;
p++)
if(k)
if(*p='
'
)
k=0;
*(p-1)=toupper(*(p-1);
elseif(*p!
='
)k=1;
*(p-1)=toupper(*(p-1));
charchrstr[81];
printf("
\nPleaseenterastring:
);
gets(chrstr);
\n\nBeforechanging:
\n%s"
chrstr);
up1st(chrstr);
\nAfterchanging:
1).intk=0;
2).if(*p=='
3).*(p-1)=toupper(*(p-1));
第7题(10.0分)
在一个一维整型数组中找出其中最大的数及其下标。
/**********FOUND**********/
floatfun(int*a,int*b,intn)
int*c,max=*a;
for(c=a+1;
c<
a+n;
c++)
if(*c>
max)
max=*c;
b=c-a;
returnmax;
voidmain(void)
inta[N],i,max,p=0;
pleaseenter10integers:
get("
m=fun(a,p,N);
max=%d,position=%d"
max,p);
1).intfun(int*a,int*b,intn)
2).*b=c-a;
3).scanf("
a[i]);
或scanf("
a+i);
4).max=fun(a,&
p,N);
第8题(10.0分)
为一维数组输入10个整数;
将其中最小的数与第一个数
对换,将最大的数与最后一个数对换,输出数组元素。
inta[10];
voidinput();
voidoutput();
voidmax_min();
input(a,10);
max_min(a,10);
output(a,10);
voidinput(int*arr,intn)
int*p,i;
p=arr;
n;
p);
voidmax_min(int*arr,intn)
int*min,*max,*p,t;
min=max=arr;
for(p=arr+1;
p<
arr+n;
if(*p<
*max)
max=p;
elseif(*p<
*min)min=p;
t=*arr;
*arr=*min;
*min=t;
if(max=arr)max=min;
t=*(arr+n-1);
*(arr+n-1)=*max;
*max=t;
voidoutput(int*arr,intn)
Thechangedarrayis:
while(i=0;
%3d"
*p++);
1).scanf("
p++);
arr[i]);
p+i);
arr+i);
2).if(*p>
*max)或if(*max<
*p)
3).if(max==arr)
4).for(i=0;
i++)或for(i=0;
n>
i;
i++)或for(p=arr;
)或for(i=0;
=n-1;
n-1>
=i;
=arr+n-1;
)或for(p=arr;
arr+n-1>
=p;
)
第9题(10.0分)
求两个形参的乘积和商数,并通过形参返回调用程序。
输入:
61.82和12.65,输出为:
c=782.023000
d=4.886957
conio.h>
voidfun(doublea,b,double*x,double*y)
x=a*b;
y=a/b;
main()
doublea,b,c,d;
clrscr();
printf("
Entera,b:
scanf("
%lf%lf"
a,&
b);
fun(a,b,&
c,&
d);
printf("
c=%fd=%f\n"
c,d);
1).voidfun(doublea,doubleb,double*x,double*y)
2).*x=a*b;
3).*y=a/b;
第10题(10.0分)
写计算级数ex=1+x+x2/2!
+x3/3!
+...+xn/n!
的值。
#include"
intm,n;
floatx,term,ex1,ex2;
x,m="
%f%d"
x,&
m);
ex1==ex2=1;
term=1;
for(n=1;
n<
n++)
term*=x%n;
ex1+=term;
ex2=term;
for(n=m;
1;
n--)
term*=n/x;
ex2+=term;
exforward=%fexbackrard=%f\n"
ex1,ex2);
1).ex1=ex2=1;
2).term*=x/n;
3).for(n=m;
=1;
第11题(10.0分)
编制统计营业员一天的营业额的程序,设程序采用一个循环
实现,每次循环输入一笔交易金额并累计营业额。
由于营
业员一天完成的交易次数是不确定的,为此以最后附加输
入一笔0或负数交易额作为交易金额已全部输入结束的标志。
有以下统计营业员一天营业额的算法:
统计营业员一天营业额
营业额清0;
输入第一笔交易额;
while(交易额>
0.0)
累计营业额;
输入下一笔交易额;
输出营业额;
记一笔交易额为变量sale,营业额为sigma。
#include<
floatsale,sigma
sigma=0.0;
Entersaledata.\n"
%f"
sale);
while(sale>
sigma+==sale;
Enternextsaledata(<
=0tofinish).\n"
sale);
Sigmaofsaleis%.2f\n"
sigma);
1).floatsale,sigma;
2).scanf("
3).sigma+=sale;
或sigma=sigma+sale;
第12题(10.0分)
【程序改