天津城建大学C语言程序改错.docx
- 文档编号:3744210
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:22
- 大小:25.18KB
天津城建大学C语言程序改错.docx
《天津城建大学C语言程序改错.docx》由会员分享,可在线阅读,更多相关《天津城建大学C语言程序改错.docx(22页珍藏版)》请在冰豆网上搜索。
天津城建大学C语言程序改错
程序改错
功能:
编制统计营业员一天的营业额的程序,设程序采用一个循环
实现,每次循环输入一笔交易金额并累计营业额。
由于营
业员一天完成的交易次数是不确定的,为此以最后附加输
入一笔0或负数交易额作为交易金额已全部输入结束的标志。
有以下统计营业员一天营业额的算法:
统计营业员一天营业额
{
营业额清0;
输入第一笔交易额;
while(交易额>0.0)
{
累计营业额;
输入下一笔交易额;
}
输出营业额;
}
记一笔交易额为变量sale,营业额为sigma。
/**********FOUND**********/
floatsale,sigma;
sigma=0.0;
printf("Entersaledata.\n");
/**********FOUND**********/
scanf("%f",&sale);
while(sale>0.0)
{
/**********FOUND**********/
sigma+=sale;
功能:
输入两个双精度数,函数返回它们的平方和的平方根值。
例如:
输入:
22.936和14.121,输出为:
y=26.934415。
/**********FOUND**********/
doublefun(double*a,double*b)
{
doublec;
/**********FOUND**********/
c=sqrt(*a**a+*b**b);
/**********FOUND**********/
returnc;
【程序改错】
--------------------------------------------------------
功能:
分别统计字符串中大写字母和小写字母的个数。
例如:
给字符串s输入:
AAaaBBb123CCccccd,
则应输出结果:
upper=6,lower=8。
voidfun(char*s,int*a,int*b)
{
while(*s)
{
/**********FOUND**********/
if(*s>='A'&&*s<='Z')
/**********FOUND**********/
(*a)++;
if(*s>='a'&&*s<='z')
/**********FOUND**********/
(*b)++;
s++;
}
}
功能:
输入一个字符串,过滤此串,滤掉字母字符,并统计新生
成串中包含的字符个数。
例如:
输入的字符串为ab234$df4,则输出为:
Thenewstringis234$4
Thereare5charinthenewstring.。
inti,j;
/**********FOUND**********/
for(i=0,j=0;*(ptr+i)!
=0;i++)
/**********FOUND**********/
if(*(ptr+i)>'z'||*(ptr+i)<'a'&&*(ptr+i)>'Z'||*(ptr+i)<'A')
{
/**********FOUND**********/
*(ptr+j)=*(ptr+i);
j++;
}
*(ptr+j)='\0';
return(j);
}
阿【程序改错】
功能:
求1到20的阶乘的和。
答案:
1).t=1;或t=1.0;
2).t=★t★*★j★;或t*=j;或t=j*t;
3).s=★s★+★t★;或s+=t;或s=t+s;
4).printf("jiecheng=%f\n",s);
【程序改错】
功能:
计算正整数num的各位上的数字之积。
例如:
输入252,则输出应该是20。
答案:
1).longk=1;
2).num/=10;或num=num/10;
3).scanf("%ld",&n);
4).printf("\n%ld\n",fun(n));
【程序改错】
功能:
求出两个非零正整数的最大公约数,并作为函数值返回。
例如:
若给num1和num2分别输入49和21,则输出的最大公约数为7。
答案:
1).a=b;
2).b=t;
3).r=a%b;
4).returnb;或return(b);或return(b);
【程序改错】
功能:
从键盘输入十个学生的成绩,统计最高分,最低分和平均分。
max代表最高分,min代表最低分,avg代表平均分。
答案:
1).floata[10],min,max,avg;
2).scanf("%f",&a[i]);或scanf("%f",a+i);
3).max=min=avg=a[0];
4).if(min>a[i])或if(a[i] 【程序改错】 功能: 输入10个数,要求输出这10个数的平均值 答案: 1).for(i=1;i<10;i++)或for(i=1;i<=9;i++) 2).floatscore[10],aver;或floataver,score[10]; 3).scanf("%f",&score[i]);或scanf("%f",score+i); 4).aver=average(score); 【程序改错】 功能: 判断整数x是否是同构数。 若是同购数,函数返回1;否则返回0。 说明: 所谓“同构数”是指这个数出现在它的平方数的右边。 例如: 输入整数25,25的平方数是625,25是625中右侧的数, 所以25是同构数。 注意: x的值由主函数从键盘读入,要求不大于1000。 答案: 1).intk; 2).k=x*x; 3).if((k%10==x)||(k%100==x)||(k%1000==x)) 【程序改错】 功能: 根据整型形参m,计算如下公式的值: y=1+1/3+1/5+1/7+...+1/(2m-1) 答案: 1).doubley=1; 2).for(i=1;i<=m;i++) 3).y+=1.0/(2*i-3); 【程序改错】 功能: 找出一个大于给定整数m且紧随m的素数,并作为函数值返回。 答案: 1).inti,k;或inti;intk;或intk,i;或intk;inti; 2).if(i%k==0)或if(! (i%k)) 3).if(k==i)或if(i==k) 【程序改错】 功能: 用选择法对数组中的n个元素按从小到大的顺序进行排序。 答案: 1).p=j; 2).if(a[i]a[i]) 3).p=i; 【程序改错】 功能: 用插入排序法将n个字符进行排序(降序)。 提示: 插入法排序的思路是: 先对数组的头两个元素进行排序, 然后根据前两个元素的情况插入第三个元素,再插入第 四个元素…)。 答案: 1).inta,b,t; 2).while((b>=0)&&(t>aa[b])) 3).aa[b+1]=t; 【程序改错】 功能: 读入一个整数k(2≤k≤10000),打印它的所有质因子(即 所有为素数的因子)。 例如: 若输入整数: 2310,则应输出: 2、3、5、7、11。 请改正程序中的语法错误,使程序能得出正确的结果。 答案: 1).IsPrime(intn) 2).if(! (n%i)) 3).return(m); 【程序改错】 功能: 根据整型形参m,计算某一数据项的值。 y=1/(100*100)+1/(200*200)+1/(300*300)+……+1/(m*m) 例如: 若m=2000,则应输出: 0.000160。 答案: 1).doublefun(intm) 2).for(i=100;i<=m;i+=100) 3).y+=1.0/d; 【程序改错】 功能: 根据整型形参n,计算某一数据项的值。 A[1]=1,A[2]=1/(1+A[1]),A[3]=1/(1+A[2]),…, A[n]=1/(1+A[n-1]) 例如: 若n=10,则应输出: a10=0.617977。 答案: 1).floatfun(intn) 2).for(i=2;i<=n;i++) 3).A=1.0/(1+A); 【程序改错】 功能: 求广义菲玻那契级数的第n项。 广义菲玻那契级数的前n 项为: 1,1,1,3,5,9,17,31,…… 项值通过函数值返回main()函数。 例如: 若n=15,则应输出: Thevalueis: 2209。 答案: 1).for(k=4;k<=n;k++) 2).a=b; 3).returnd; 【程序改错】 功能: 求二分之一的圆面积,函数通过形参得到圆的半径,函数 返回二分之一的圆面积。 例如: 输入圆的半径值: 19.527输出为: s=598.950017。 答案: 1).floatfun(floatr) 2).s=1.0/2*3.14159*r*r; 3).returns; 【程序改错】 功能: 求出数组中最大数和次最大数,并把最大数和a[0]中的数 对调、次最大数和a[1]中的数对调。 答案: 1).m=i; 2).for(k=i;k 3).if(a[k]>a[m])m=k; 【程序改错】 功能: 根据整型形参m,计算如下公式的值: y=1/2+1/8+1/18+...+1/2m*m 答案: 1).doubley=0; 2).for(i=1;i<=m;i++) 3).y+=1.0/(2*i*i); 【程序改错】 功能: 统计出若干个学生的平均成绩,最低分以及得最低分的人数。 例如: 输入10名学生的成绩分别为92,87,68,56,92,84,67, 75,92,66,则输出平均成绩为77.9,最低高分为56,得最 低分的人数为1人。 答案: 1).sum+=array[i];或sum=sum+array[i]; 2).ave=sum/n; 3).if(array[i]==Min)J++; 【程序改错】 功能: 将整型数组中所有小于0的元素放到所有大于0的元素的前 面(要求只能扫描数组一次)。 答案: 1).int★i=0★,★j=n-1★,★temp★; 2).j--; 3).if(i 【程序改错】 功能: 输入两个实数,按代数值由小到大输出它们,并在fun() 函数中输出。 (输出的数据都保留2位小数) 答案: 1).floatt; 2).if(a>b) 3).printf("%5.2f,%5.2f\n",a,b); 【程序改错】 功能: 编写函数fun求20以内所有5的倍数之积。 答案: 1).int★s=1★,★i★; 2).if(i%m==0) 3).s=s*i或s=i*s或s*=i 【程序改错】 功能: 编写函数fun求20以内所有5的倍数之积。 答案: 1).ints=1,i; 2).if(i%m==0) 3).s*=i; 【程序改错】 功能: 编写函数fun计算下列分段函数的值: x*x+xx<0且x≠-3 f(x)=x*x+5x0≤x<10且x≠2及x≠3 x*x+x-1其它 答案: 1).floaty; 2).if(x<0&&x! =-3.0) 3).returny; 【程序改错】 功能: 有1、2、3、4个数字,能组成多少个互不相同且无重复数 字的三位数? 都是多少? 答案: 1).printf("\n"); 2).for(i=1;i<5;i++)或for(i=1;i<=4;i++) 3).if(i! =k&&i! =j&&j! =k) 【程序改错】 功能: 某个公司采用公用电话传递数据,数据是四位的整数,在 传递过程中是加密的,加密规则如下: 每位数字都加上5, 然后除以10的余数代替该位数字。 再将新生成数据的第一 位和第四位交换,第二位和第三位交换。 例如: 输入一个四位整数1234,则结果为: 9876。 答案: 1).scanf("%d",&a); 2).aa[1]=a%100/10; 3).for(i=0;i<=3;i++)或for(i=0;i<4;i++) 【程序改错】 功能: 一球从100米高度自由落下,每次落地后反跳回原高度的 一半;再落下,求它在第10次落地时,共经过多少米? 第10次反弹多高? 答案: 1).floatsn=100.0,hn=sn/2; 2).for(n=2;n<=10;n++)或for(n=2;n<11;n++) 3).hn=hn/2; 【程序改错】 功能: 读取7个数(1-50)的整数值,每读取一个值,程序打印 出该值个数的*。 答案: 1).while(n<=7)或while(n<8) 2).while(a<1||a>50);或while(a>50||a<1); 3).for(i=1;i<=a;i++) 【程序改错】 功能: 给一个不多于5位的正整数,要求: 一、求它是几位数, 二、逆序打印出各位数字。 答案: 1).longa,b,c,d,e,x; 2).b=x%10000/1000; 3).if(a! =0)或if(! a) 【程序改错】 功能: 一个偶数总能表示为两个素数之和。 答案: 1).scanf("%d",&a); 2).d=a-b; 3).if(d%c==0) 【程序改错】 功能: 求0-7这8个数字所能组成的奇数个数。 答案: 1).longsum=4,s=4; 2).printf("\n%ld",sum); 3).if(j<=2)或if(j<3) 【程序改错】 功能: 809*? ? =800*? ? +9*? ? +1其中? ? 代表的两位数,8*? ? 的结果 为两位数,9*? ? 的结果为3位数。 求? ? 代表的两位数,及809*? ? 后的结果。 答案: 1).long★int★a★,★b★,★i★; 2).for(i=10;i<100;i++)或for(i=10;i<=99;i++) 3).b=★i*a★+★1★;或b=★a*i★+★1★; 【程序改错】 功能: 编写一个程序计算某年某月有几天。 (注意要区分闰年) 答案: 1).switch(mm) 2).break; 3).default: 【程序改错】 功能: 以下程序能求出1*1+2*2+......+n*n<=1000中满足条件的 最大的n。 答案: 1).s=n=0; 2).while(s<=1000) 3).printf("n=%d\n",n-1); 【程序改错】 功能: 输入n,计算s=1+1+2+1+2+3+1+2+3+4+...+1+2+3+4+...+n 答案: 1).inti,s,p,n; 2).scanf("%d",&n); 3).for(s=p=0,i=1;i<=n;i++) 【程序改错】 功能: 编制统计营业员一天的营业额的程序,设程序采用一个循环 实现,每次循环输入一笔交易金额并累计营业额。 由于营 业员一天完成的交易次数是不确定的,为此以最后附加输 入一笔0或负数交易额作为交易金额已全部输入结束的标志。 有以下统计营业员一天营业额的算法: 统计营业员一天营业额 { 营业额清0; 输入第一笔交易额; while(交易额>0.0) { 累计营业额; 输入下一笔交易额; } 输出营业额; } 记一笔交易额为变量sale,营业额为sigma。 答案: 1).floatsale,sigma; 2).scanf("%f",&sale); 3).sigma+=sale;或sigma=sigma+sale; 【程序改错】 功能: 编写函数fun,求两个整数的最小公倍数,然后用主 函数main()调用这个函数并输出结果,两个整数由 键盘输入。 答案: 1).q=fun(m,n); 2).if(m 3).if(i%n==0) 【程序改错】 功能: 求100以内(包括100)的偶数之和. 答案: 1).inti,sum=0; 2).for(i=2;i<=100;i+=2) 3).printf("Sum=%d\n",sum); 【程序改错】 功能: 企业发放的奖金根据利润提成。 利润(I)低于或等于10万元 时,奖金可提10%;利润高于10万元,低于20万元时,低于 10万元的部分按10%提成,高于10万元的部分,可可提成7.5%; 20万到40万之间时,高于20万元的部分,可提成5%;40万 到60万之间时高于40万元的部分,可提成3%;60万到100万 之间时,高于60万元的部分,可提成1.5%,高于100万元时, 超过100万元的部分按1%提成,从键盘输入当月利润I,求 应发放奖金总数? 答案: 1).scanf("%ld",&i); 2).if(i<=100000) 3).printf("bonus=%d",bonus); 【程序改错】 功能: 用起泡法对10个整数从小到大排序。 答案: 1).voidsort(int*x,intn)或voidsort(intx[],intn) 2).for(j=0;j<★n★-1★-i★;j++)或for(j=0;★n★-1★-i★>j;j++)或for(j=0;j 3).if(x[j]>x[★j★+★1★])或if(x[★j★+★1]★ 4).sort(a,n); 【程序改错】 功能: 求如下表达式: 111 S=1+——+———+......+——————— 1+21+2+31+2+3+......+n 答案: 1).scanf("%d",&n); 2).floatfun(intn) 3).for(i=1;i<=n;i++)或for(i=1;n>=i;i++)或for(i=1;i 4).s+=1.0/t;或s=★s★+★1.0★/(float)t;或s=★s★+★1.0★/t;或s+=1.0/(float)t; 【程序改错】 功能: 判断m是否为素数,若是返回1,否则返回0。 答案: 1).intfun(intm)或fun(intm) 2).for(i=2;i 3).if(★m%i★==★0★)k=0; 4).returnk; 【程序改错】 功能: 用下面的和式求圆周率的近似值。 直到最后一项的绝对值 小于等于0.0001。 π111 —=1-—+—-—+... 4357 答案: 1).#include"math.h"或#include 2).floats=0,t=1,p=1;或floats=0,p=1,t=1;或floatp=1,s=0,t=1;或floatp=1,t=1,s=0;或floatt=1,p=1,s=0;或floatt=1,s=0,p=1; 3).while(fabs(t)>1e-4)或while(0.0001 4).printf("pi=%f\n",★s★*★4★); 【程序改错】 功能: 求1到10的阶乘的和。 答案: 1).for(i=1;i<=10;i++)或for(i=1;10>=i;i++)或for(i=1;i<11;i++)或for(i=1;11>i;i++) 2).s=★s★+★fac(i)★;或s+=fac(i);或s=fac(i)+s; 3).floaty=1.0;或floaty=1; 4).returny;或return(y);或return(y); 【程序改错】 功能: 输出Fabonacci数列的前20项,要求变量类型定义成浮点型, 输出时只输出整数部分,输出项数不得多于或少于20。 答案: 1).printf("%8.0f",f1);或printf("%f",f1);或printf("%8f",f1); 2).for(i=1;i<20;i++)或for(i=1;20>i;i++)或for(i=2;i<=20;i++)或for(i=2;20>=i;i++)或for(i=1;i<=19;i++)或for(i=1;19>=i;i++) 3).f1=f2; 4).f2=f3; 【程序改错】 功能: 根据整型形参m的值,计算如下公式的值。 111 t=1-——-——-...-—— 2x23x3mxm 例如: 若m=5,则应输出: 0.536389 答案: 1).for(i=2;i<=m;i++)或for(i=2;m>=i;i++)或for(i=2;i 2).y-=1.0/(i*i);或y=y-1.0/(i*i);或y-=1.0/(float)(i*i);或y=y-1.0/(float)(i*i);或y=y-1.0/i/i;或y=y-1.0/(float)i/(float)i;或y=y-1/(double)(i*i);或y-=1/(doubl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 天津 城建 大学 语言 程序 改错