程序编写.docx
《程序编写.docx》由会员分享,可在线阅读,更多相关《程序编写.docx(41页珍藏版)》请在冰豆网上搜索。
程序编写
C语言(典型例子和课后习题)
第二章C语言程序基础
输入两个数,并互换。
#include
voidmain()
{inta,b,c;
printf("inputa,b\n");
scanf("%d%d",&a,&b);
c=a;a=b;b=c;
printf("a=%d,b=%d\n",a,b);
}
输入一个三位数,并反向输出各位数字。
{intm,a,b,c;/*a表示百位数字,b表示十位数字,c表示个位数字*/
printf("inputm\n");
scanf("%d",&m);
a=m/100;b=(m-a*100)/10;c=m-a*100-b*10;/*c=m%10;b=m/10%10;a=m/100;*/
printf("%d,%d,%d\n",c,b,a);
输入两个圆的半径,分别求出它们的周长和面积。
#definePI3.1415926
main()
{floatr1,r2,len1,len2,s1,s2;
r1=10;r2=20;
len1=2*PI*r1;s1=PI*r1*r1;
printf("len1=%fs1=%f\n",len1,s1);
len2=2*PI*r2;s2=PI*r2*r2;
printf("len2=%fs2=%f\n",len2,s2);
第三章选择结构
P531.编写一个程序,从键盘输入三角形三条边的边长,求三角形的面积。
voidmain(void)
{floata,b,c,s,area;
printf("请输入三角形的三边:
\n");
scanf("%f%f%f",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)/*括号里的内容可写为a+b>c&&fabs(a-b){s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));/*fabs(x)表示x的绝对值*/printf("area=%f\n",area);}elseprintf("输入数据错误!\n");}2.输入圆的半径r和一个整型数k,当k=1时,计算圆的面积;当k=2时,计算圆的周长;当k=3时,既要求出圆的周长也要求出圆的面积。编程实现以上功能。#includevoidmain(){intk;floatr,len,area;scanf("%d%f",&k,&r);if(k==1){area=3.14*r*r;printf("area=%f\n",area);}elseif(k==2){len=2*3.14*r;printf("len=%f\n",len);}elseif(k==3){len=2*3.14*r;area=3.14*r*r;printf("len=%f,area=%f\n",len,area);}elseprintf("无结果!\n");}3.从键盘上输入一个年份,判断该年是否为闰年。闰年的条件是:年份能被4整除但不能被100整除,或者能被400整除。#includevoidmain(){intk;printf("输入一个年份:\n");scanf("%d",&k);if(k%4==0&&k%100!=0||k%400==0)printf("该年是闰年!\n");elseprintf("该年不是闰年!\n");}4.有一个函数,其函数关系如下,试编程求对应于每个自变量的函数值。#include#includevoidmain(void){floatx,y;printf("inputx\n");scanf("%f",&x);if(x<0)y=x*x;elseif(x>=0&&x<10)y=-0.5*x+10;elsey=x-sqrt(x);printf("y=%f\n",y);}5.编一个程序,对于给定的一个百分制成绩,输出相应的等级。方法一:#includevoidmain(void){intscore;printf("请输入学生成绩:");scanf("%d",&score);if(score>=0&&score<=100)switch(score/10){case10:case9:printf("优秀\n");break;case8:printf("良好\n");break;case7:printf("中等\n");break;case6:printf("及格\n");break;default:printf("不及格\n");break;}elseprintf("输入数据错误!\n");}方法二:#includevoidmain(void){intscore;printf("请输入学生成绩:");scanf("%d",&score);if(score>=90&&score<=100)printf("优秀\n");elseif(score>=80&&score<90)printf("良好\n");elseif(score>=70&&score<80)printf("中等\n");elseif(score>=60&&score<70)printf("及格\n");elseif(score>=0&&score<60)printf("不及格\n");elseprintf("输入数据错误!\n");}7.从键盘上随机输入三个英文字母,要求从小到大的顺序输出这三个字母。#includevoidmain(void){chara,b,c,t;printf("从键盘上随机输入三个英文字母:\n");scanf("%c%c%c",&a,&b,&c);if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}if(a>b){t=a;a=b;b=t;}printf("%c,%c,%c\n",a,b,c);/*程序结束后,a中存的最小的数,c中存的最大的数*/}8.计算一元二次方程ax*x+bx+c=0的根。设方程为:ax*x+bx+c=0,要求从键盘上输入a、b、c的值求出方程的根。求解规则如下:1)若a和b的值为0,方程无解。2)若a=0,则方程只有一个实根。3)若b*b-4ac>=0,则方程有两个实根。4)若b*b-4ac<0,则方程有两个复根。#include#includevoidmain(void){floata,b,c,dt,x1,x2,realpart,imagpart;scanf("%f%f%f",&a,&b,&c);dt=b*b-4*a*c;if(fabs(a)<=1e-6&&fabs(b)<=1e-6)printf("方程无解!\n");elseif(fabs(a)<=1e-6)printf("%f\n",-c/b);elseif(fabs(dt)<=1e-6)printf("%f\n",-b/(2*a));elseif(fabs(dt)>=1e-6){if(dt>=1e-6){x1=(-b+sqrt(dt))/(2*a);x2=(-b-sqrt(dt))/(2*a);printf("%f,%f\n",x1,x2);}else{realpart=-b/(2*a);imagpart=fabs(sqrt(dt)/(2*a));printf("%f+%fi\n",realpart,imagpart);printf("%f-%fi\n",realpart,imagpart);}}}输入三角形的三边长,判断能不能构成三角形。然后进一步判断它是等边,等腰,还是普通三角形。#includevoidmain(void){floata,b,c;printf("输入三角形的三边:\n");scanf("%f%f%f",&a,&b,&c);if(a+b>c&&b+c>a&&a+c>b){if(a==b&&b==c)printf("这是一个等边三角形!\n");elseif(a==b||b==c||c==a)printf("这是一个等腰三角形!\n");elseprintf("这是一个普通三角形!\n");}elseprintf("不能构成三角形!\n");}从键盘上输入一个字符,判断该字符是数字、大写字母、小写字母还是其他字符。#includevoidmain(void){charc;printf("请输入一个字符:");c=getchar();if(c>='0'&&c<='9')printf("是数字\n");elseif(c>='A'&&c<='Z')printf("是大写字母\n");elseif(c>='a'&&c<='z')printf("是小写字母\n");elseprintf("是其他字符\n");}从键盘输入一串字符,以’\n’结束,分别统计出英文字母,空格,数字和其他字符的个数。#includevoidmain(){intletter=0,space=0,digital=0,other=0;charch;printf("输入一串字符:");ch=getchar();while(ch!='\n'){if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')letter++;elseif(ch=='')space++;elseif(ch>='0'&&ch<='9')digital++;elseother++;ch=getchar();}printf("letter=%d,space=%d,digital=%d,other=%d\n",letter,space,digital,other);}输入年份year和月份month,求该月的天数。#includevoidmain(){intyear,month,days=0;printf("输入年份year和月份month:");scanf("%d%d",&year,&month);switch(month){case1:case3:case5:case7:case8:case10:case12:days=31;break;case4:case6:case9:case11:days=30;break;case2:if(year%4==0&&year%100!=0||year%400==0)days=29;elsedays=28;break;default:printf("Inputerror!\n");}if(days!=0)printf("year=%d,month=%d,days=%d\n",year,month,days);}计算器程序。输入两个运算数和一个四则运算符,输出计算结果。#include#includevoidmain(){floata,b;charc;printf("输入表达式:运算数<运算符>运算数\n");scanf("%f%c%f",&a,&c,&b);switch(c){case'+':printf("%f\n",a+b);break;case'-':printf("%f\n",a-b);break;case'*':printf("%f\n",a*b);break;case'/':if(fabs(b)<=1e-6)printf("数据错误,除数不能为0!\n");elseprintf("%f\n",a/b);default:printf("运算符只能是+-*/!\n");}}第四章循环结构程序设计猴子吃桃子问题:猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早晨想再吃时,只剩下一个桃子了。求第1天共摘了多少个桃子。#includevoidmain(){intx1,x2=1,day=9;while(day>0){x1=2*(x2+1);x2=x1;day--;}printf("Thetotalis%d\n",x1);}P88习题1.有1、2、3、4这4个数字,能组成多少个互不相同且无重复数字的三位数?它们都是多少?方法一:#includevoidmain(){intx=100,x1,x2,x3,i=0;while(x<=999){x1=x/100;x2=x/10%10;x3=x%10;if(x1>=1&&x1<=4&&x2>=1&&x2<=4&&x3>=1&&x3<=4&&x1!=x2&&x2!=x3&&x3!=x1){printf("%-5d",x);i++;/*i计数*/if(i%4==0)printf("\n");}x++;}printf("i=%-d\n",i);}方法二:#includevoidmain(){intx,i,x1,x2,x3,x4;for(x1=1;x1<=4;x1++)for(x2=1;x2<=4;x2++)if(x1!=x2)for(x3=1;x3<=4;x3++)if(x1!=x3&&x2!=x3){x=x1*100+x2*10+x3;i++;printf("%d",x);if(i%5==0)printf("\n");}}2.编写程序,求两个整数的最大公约数和最小公倍数。#includevoidmain(){intk,g,m,n;printf("输入两个整数:\n");scanf("%d%d",&m,&n);k=mm:n;while(m%k!=0||n%k!=0)k--;printf("最大公约数:%d\n",k);g=(m*n)/k;printf("最小公倍数:%d\n",g);}3.把输入的整数(最多不超过5位)按输入顺序的相反顺序输出,例如,输入数是12345,要求输出结果是54321,编程实现此功能。#includevoidmain(){longnumber;intcount=0;printf("输入一个整数(最多不超过5位):");scanf("%ld",&number);if(number<0)number=-number;do{printf("%d",number%10);number=number/10;count++;}while(number!=0);printf("count=%d\n",count);}4.求s=a+aa+aaa+aaaa+a……a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共5个数相加),几个数相加又键盘控制。#includevoidmain(){ints=0,x,n,a,i=0;printf("分别输入a和n:");scanf("%d%d",&a,&n);x=a;while(i{s=s+x;x=x*10+a;i++;}printf("s=%d\n",s);}5.一个数如果恰好等于它的因子之和,这个数就成为“完数”,例如6=1+2+3。编程找出1000以内的所有完数。#includevoidmain(){intn,i,s;for(n=1;n<=1000;n++){s=0;/*注意s=0的位置*/for(i=1;i{if(n%i==0)s=s+i;}if(n==s)printf("%d\n",n);}}7.求1+2!+3!+…+20!的和。#includevoidmain(){inti,n;floatjc,s;for(n=1;n<=20;n++){for(jc=1,i=1;i<=n;i++)jc=jc*i;s=s+jc;}printf("s=%f\n",s);}8.输出100~200之间的全部素数。#include#includevoidmain(){intn,i;for(n=100;n<=200;n++){for(i=2;i<=sqrt(n);i++)if(n%i==0)break;if(i>sqrt(n))printf("%-5d",n);}}9.编写程序,找出1~999之间的全部同构数。同构数是这样一组数,它出现在平方数的右边,例如:5是25的右边的数,25是625的右边的数,5和25都是同构数。#includevoidmain(){intk,m,n;for(m=4;m<999;m++){n=m*m;if(m>=1&&m<=9)k=n%10;if(m>=10&&m<=99)k=n%100;if(m>=100&&m<999)k=n%1000;if(k==m)printf("%d",m);}}10.输入所有大于1000小于10000的四位偶数,且该偶数的各位数字两两不同。#includevoidmain(){inti,x1,x2,x3,x4;for(i=1002;i<10000;i+=2){x1=i/1000;x2=i/100%10;x3=i/10%10;x4=i%10;if(x1!=x2&&x1!=x3&&x1!=x4&&x2!=x3&&x2!=x4&&x3!=x4)printf("%-5d",i);}}13.编写程序,用牛顿迭代法求x*x-a=0的近似根。要求前后两次求出的x的差的绝对值小于0.00001。#include#includevoidmain(){floata,x0,x1,f0,f1;printf("inputa,x1:");scanf("%f%f",&a,&x1);do{x0=x1;f0=x0*x0-a;f1=2*x0;x1=x0-f0/f1;}while(fabs(x0-x1)>1e-5);printf("x=%f\n",x1);}6.打印出如下图案#includevoidmain(){inth=4,k,j,m;for(j=1;j<=2*h-1;j++){if(j<=h)m=2*j-1;elsem=4*h-2*j-1;for(k=1;k<=m;k++)printf("*");printf("\n");}}从键盘输入h的值,输出如下三角形,例号h=4#includevoidmain(){inth,k,j;scanf("%d",&h);for(k=1;k<=h;k++){for(j=1;j<=h-k;j++)printf("");for(j=1;j<=2*k-1;j++)printf("*");printf("\n");}}从键盘输入h的值,输出h行用*号组成的菱形,例输入h=4,输出#includevoidmain(){inth,k,j,m,n;printf("inputh:");scanf("%d",&h);for(j=1;j<=2*h-1;j++){if(j<=h){m=h-j;n=2*j-1;}else{m=j-h;n=4*h-2*j-1;}for(k=1;k<=m;k++)printf("");for(k=1;k<=n;k++)printf("*");printf("\n");}}打印出所有的“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1×1×1+5×5×5+3×3×3。#includevoidmain(){intn,x1,x2,x3;printf("waterflowernumberis:");for(n=100;n<=999;n++){x1=n/100;x2=n/10%10;x3=n%10;if(n==x1*x1*x1+x2*x2*x2+x3*x3*x3)printf("%-4d",n);}printf("\n");}输出100—200之间不能被3整除的数。#includevoidmain(){inti.n;for(n=100;n<=200;n++){if(n%3==0)continue;printf(“%5d”,n);}}第六章数组输出最大值#includevoidmain(void){inta,b,c,max;printf("输入三个数:");scanf("%d%d%d",&a,&b,&c);max=a;if(b>max)max=b;if(c>max)max=c;printf("%d是最大数\n",max);}#includevo
{s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));/*fabs(x)表示x的绝对值*/
printf("area=%f\n",area);}
else
printf("输入数据错误!
2.输入圆的半径r和一个整型数k,当k=1时,计算圆的面积;当k=2时,计算圆的周长;当k=3时,既要求出圆的周长也要求出圆的面积。
编程实现以上功能。
{intk;
floatr,len,area;
scanf("%d%f",&k,&r);
if(k==1)
{area=3.14*r*r;printf("area=%f\n",area);}
elseif(k==2)
{len=2*3.14*r;printf("len=%f\n",len);}
elseif(k==3)
{len=2*3.14*r;area=3.14*r*r;
printf("len=%f,area=%f\n",len,area);}
elseprintf("无结果!
3.从键盘上输入一个年份,判断该年是否为闰年。
闰年的条件是:
年份能被4整除但不能被100整除,或者能被400整除。
printf("输入一个年份:
scanf("%d",&k);
if(k%4==0&&k%100!
=0||k%400==0)
printf("该年是闰年!
printf("该年不是闰年!
4.有一个函数,其函数关系如下,试编程求对应于每个自变量的函数值。
{floatx,y;
printf("inputx\n");
scanf("%f",&x);
if(x<0)y=x*x;
elseif(x>=0&&x<10)y=-0.5*x+10;
elsey=x-sqrt(x);
printf("y=%f\n",y);
5.编一个程序,对于给定的一个百分制成绩,输出相应的等级。
方法一:
{intscore;
printf("请输入学生成绩:
");
scanf("%d",&score);
if(score>=0&&score<=100)
switch(score/10)
{case10:
case9:
printf("优秀\n");break;
case8:
printf("良好\n");break;
case7:
printf("中等\n");break;
case6:
printf("及格\n");break;
default:
printf("不及格\n");break;
printf("输入数据错误!
方法二:
if(score>=90&&score<=100)printf("优秀\n");
elseif(score>=80&&score<90)printf("良好\n");
elseif(score>=70&&score<80)printf("中等\n");
elseif(score>=60&&score<70)printf("及格\n");
elseif(score>=0&&score<60)printf("不及格\n");
elseprintf("输入数据错误!
7.从键盘上随机输入三个英文字母,要求从小到大的顺序输出这三个字母。
{chara,b,c,t;
printf("从键盘上随机输入三个英文字母:
scanf("%c%c%c",&a,&b,&c);
if(a>c)
{t=a;a=c;c=t;}
if(b>c)
{t=b;b=c;c=t;}
if(a>b)
{t=a;a=b;b=t;}
printf("%c,%c,%c\n",a,b,c);/*程序结束后,a中存的最小的数,c中存的最大的数*/
8.计算一元二次方程ax*x+bx+c=0的根。
设方程为:
ax*x+bx+c=0,要求从键盘上输入a、b、c的值求出方程的根。
求解规则如下:
1)若a和b的值为0,方程无解。
2)若a=0,则方程只有一个实根。
3)若b*b-4ac>=0,则方程有两个实根。
4)若b*b-4ac<0,则方程有两个复根。
{floata,b,c,dt,x1,x2,realpart,imagpart;
dt=b*b-4*a*c;
if(fabs(a)<=1e-6&&fabs(b)<=1e-6)
printf("方程无解!
elseif(fabs(a)<=1e-6)
printf("%f\n",-c/b);
elseif(fabs(dt)<=1e-6)
printf("%f\n",-b/(2*a));
elseif(fabs(dt)>=1e-6)
{if(dt>=1e-6)
{x1=(-b+sqrt(dt))/(2*a);x2=(-b-sqrt(dt))/(2*a);
printf("%f,%f\n",x1,x2);}
{realpart=-b/(2*a);imagpart=fabs(sqrt(dt)/(2*a));
printf("%f+%fi\n",realpart,imagpart);
printf("%f-%fi\n",realpart,imagpart);}
输入三角形的三边长,判断能不能构成三角形。
然后进一步判断它是等边,等腰,还是普通三角形。
{floata,b,c;
printf("输入三角形的三边:
if(a+b>c&&b+c>a&&a+c>b)
{if(a==b&&b==c)
printf("这是一个等边三角形!
elseif(a==b||b==c||c==a)
printf("这是一个等腰三角形!
printf("这是一个普通三角形!
printf("不能构成三角形!
从键盘上输入一个字符,判断该字符是数字、大写字母、小写字母还是其他字符。
{charc;
printf("请输入一个字符:
c=getchar();
if(c>='0'&&c<='9')printf("是数字\n");
elseif(c>='A'&&c<='Z')printf("是大写字母\n");
elseif(c>='a'&&c<='z')printf("是小写字母\n");
elseprintf("是其他字符\n");
从键盘输入一串字符,以’\n’结束,分别统计出英文字母,空格,数字和其他字符的个数。
{intletter=0,space=0,digital=0,other=0;
charch;
printf("输入一串字符:
ch=getchar();
while(ch!
='\n')
{if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')letter++;
elseif(ch=='')space++;
elseif(ch>='0'&&ch<='9')digital++;
elseother++;
ch=getchar();}
printf("letter=%d,space=%d,digital=%d,other=%d\n",letter,space,digital,other);
输入年份year和月份month,求该月的天数。
{intyear,month,days=0;
printf("输入年份year和月份month:
scanf("%d%d",&year,&month);
switch(month)
{case1:
case3:
case5:
case10:
case12:
days=31;break;
case4:
case11:
days=30;break;
case2:
if(year%4==0&&year%100!
=0||year%400==0)days=29;
elsedays=28;break;
printf("Inputerror!
if(days!
=0)printf("year=%d,month=%d,days=%d\n",year,month,days);
计算器程序。
输入两个运算数和一个四则运算符,输出计算结果。
{floata,b;
charc;
printf("输入表达式:
运算数<运算符>运算数\n");
scanf("%f%c%f",&a,&c,&b);
switch(c)
{case'+':
printf("%f\n",a+b);break;
case'-':
printf("%f\n",a-b);break;
case'*':
printf("%f\n",a*b);break;
case'/':
if(fabs(b)<=1e-6)
printf("数据错误,除数不能为0!
printf("%f\n",a/b);
printf("运算符只能是+-*/!
第四章循环结构程序设计
猴子吃桃子问题:
猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第2天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早晨想再吃时,只剩下一个桃子了。
求第1天共摘了多少个桃子。
{intx1,x2=1,day=9;
while(day>0)
{x1=2*(x2+1);x2=x1;day--;}
printf("Thetotalis%d\n",x1);
P88习题1.有1、2、3、4这4个数字,能组成多少个互不相同且无重复数字的三位数?
它们都是多少?
{intx=100,x1,x2,x3,i=0;
while(x<=999)
{x1=x/100;x2=x/10%10;x3=x%10;
if(x1>=1&&x1<=4&&x2>=1&&x2<=4&&x3>=1&&x3<=4&&x1!
=x2&&x2!
=x3&&x3!
=x1)
{printf("%-5d",x);i++;/*i计数*/
if(i%4==0)printf("\n");}
x++;}
printf("i=%-d\n",i);
{intx,i,x1,x2,x3,x4;
for(x1=1;x1<=4;x1++)
for(x2=1;x2<=4;x2++)
if(x1!
=x2)
for(x3=1;x3<=4;x3++)
=x3&&x2!
=x3)
{x=x1*100+x2*10+x3;i++;
printf("%d",x);
if(i%5==0)printf("\n");}
2.编写程序,求两个整数的最大公约数和最小公倍数。
{intk,g,m,n;
printf("输入两个整数:
scanf("%d%d",&m,&n);
k=mm:n;while(m%k!=0||n%k!=0)k--;printf("最大公约数:%d\n",k);g=(m*n)/k;printf("最小公倍数:%d\n",g);}3.把输入的整数(最多不超过5位)按输入顺序的相反顺序输出,例如,输入数是12345,要求输出结果是54321,编程实现此功能。#includevoidmain(){longnumber;intcount=0;printf("输入一个整数(最多不超过5位):");scanf("%ld",&number);if(number<0)number=-number;do{printf("%d",number%10);number=number/10;count++;}while(number!=0);printf("count=%d\n",count);}4.求s=a+aa+aaa+aaaa+a……a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共5个数相加),几个数相加又键盘控制。#includevoidmain(){ints=0,x,n,a,i=0;printf("分别输入a和n:");scanf("%d%d",&a,&n);x=a;while(i{s=s+x;x=x*10+a;i++;}printf("s=%d\n",s);}5.一个数如果恰好等于它的因子之和,这个数就成为“完数”,例如6=1+2+3。编程找出1000以内的所有完数。#includevoidmain(){intn,i,s;for(n=1;n<=1000;n++){s=0;/*注意s=0的位置*/for(i=1;i{if(n%i==0)s=s+i;}if(n==s)printf("%d\n",n);}}7.求1+2!+3!+…+20!的和。#includevoidmain(){inti,n;floatjc,s;for(n=1;n<=20;n++){for(jc=1,i=1;i<=n;i++)jc=jc*i;s=s+jc;}printf("s=%f\n",s);}8.输出100~200之间的全部素数。#include#includevoidmain(){intn,i;for(n=100;n<=200;n++){for(i=2;i<=sqrt(n);i++)if(n%i==0)break;if(i>sqrt(n))printf("%-5d",n);}}9.编写程序,找出1~999之间的全部同构数。同构数是这样一组数,它出现在平方数的右边,例如:5是25的右边的数,25是625的右边的数,5和25都是同构数。#includevoidmain(){intk,m,n;for(m=4;m<999;m++){n=m*m;if(m>=1&&m<=9)k=n%10;if(m>=10&&m<=99)k=n%100;if(m>=100&&m<999)k=n%1000;if(k==m)printf("%d",m);}}10.输入所有大于1000小于10000的四位偶数,且该偶数的各位数字两两不同。#includevoidmain(){inti,x1,x2,x3,x4;for(i=1002;i<10000;i+=2){x1=i/1000;x2=i/100%10;x3=i/10%10;x4=i%10;if(x1!=x2&&x1!=x3&&x1!=x4&&x2!=x3&&x2!=x4&&x3!=x4)printf("%-5d",i);}}13.编写程序,用牛顿迭代法求x*x-a=0的近似根。要求前后两次求出的x的差的绝对值小于0.00001。#include#includevoidmain(){floata,x0,x1,f0,f1;printf("inputa,x1:");scanf("%f%f",&a,&x1);do{x0=x1;f0=x0*x0-a;f1=2*x0;x1=x0-f0/f1;}while(fabs(x0-x1)>1e-5);printf("x=%f\n",x1);}6.打印出如下图案#includevoidmain(){inth=4,k,j,m;for(j=1;j<=2*h-1;j++){if(j<=h)m=2*j-1;elsem=4*h-2*j-1;for(k=1;k<=m;k++)printf("*");printf("\n");}}从键盘输入h的值,输出如下三角形,例号h=4#includevoidmain(){inth,k,j;scanf("%d",&h);for(k=1;k<=h;k++){for(j=1;j<=h-k;j++)printf("");for(j=1;j<=2*k-1;j++)printf("*");printf("\n");}}从键盘输入h的值,输出h行用*号组成的菱形,例输入h=4,输出#includevoidmain(){inth,k,j,m,n;printf("inputh:");scanf("%d",&h);for(j=1;j<=2*h-1;j++){if(j<=h){m=h-j;n=2*j-1;}else{m=j-h;n=4*h-2*j-1;}for(k=1;k<=m;k++)printf("");for(k=1;k<=n;k++)printf("*");printf("\n");}}打印出所有的“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1×1×1+5×5×5+3×3×3。#includevoidmain(){intn,x1,x2,x3;printf("waterflowernumberis:");for(n=100;n<=999;n++){x1=n/100;x2=n/10%10;x3=n%10;if(n==x1*x1*x1+x2*x2*x2+x3*x3*x3)printf("%-4d",n);}printf("\n");}输出100—200之间不能被3整除的数。#includevoidmain(){inti.n;for(n=100;n<=200;n++){if(n%3==0)continue;printf(“%5d”,n);}}第六章数组输出最大值#includevoidmain(void){inta,b,c,max;printf("输入三个数:");scanf("%d%d%d",&a,&b,&c);max=a;if(b>max)max=b;if(c>max)max=c;printf("%d是最大数\n",max);}#includevo
m:
n;
while(m%k!
=0||n%k!
=0)
k--;
printf("最大公约数:
%d\n",k);
g=(m*n)/k;
printf("最小公倍数:
%d\n",g);
3.把输入的整数(最多不超过5位)按输入顺序的相反顺序输出,例如,输入数是12345,要求输出结果是54321,编程实现此功能。
{longnumber;intcount=0;
printf("输入一个整数(最多不超过5位):
scanf("%ld",&number);
if(number<0)number=-number;
do
{printf("%d",number%10);
number=number/10;count++;}
while(number!
=0);
printf("count=%d\n",count);
4.求s=a+aa+aaa+aaaa+a……a的值,其中a是一个数字。
例如2+22+222+2222+22222(此时共5个数相加),几个数相加又键盘控制。
{ints=0,x,n,a,i=0;
printf("分别输入a和n:
scanf("%d%d",&a,&n);
x=a;
while(i{s=s+x;x=x*10+a;i++;}printf("s=%d\n",s);}5.一个数如果恰好等于它的因子之和,这个数就成为“完数”,例如6=1+2+3。编程找出1000以内的所有完数。#includevoidmain(){intn,i,s;for(n=1;n<=1000;n++){s=0;/*注意s=0的位置*/for(i=1;i{if(n%i==0)s=s+i;}if(n==s)printf("%d\n",n);}}7.求1+2!+3!+…+20!的和。#includevoidmain(){inti,n;floatjc,s;for(n=1;n<=20;n++){for(jc=1,i=1;i<=n;i++)jc=jc*i;s=s+jc;}printf("s=%f\n",s);}8.输出100~200之间的全部素数。#include#includevoidmain(){intn,i;for(n=100;n<=200;n++){for(i=2;i<=sqrt(n);i++)if(n%i==0)break;if(i>sqrt(n))printf("%-5d",n);}}9.编写程序,找出1~999之间的全部同构数。同构数是这样一组数,它出现在平方数的右边,例如:5是25的右边的数,25是625的右边的数,5和25都是同构数。#includevoidmain(){intk,m,n;for(m=4;m<999;m++){n=m*m;if(m>=1&&m<=9)k=n%10;if(m>=10&&m<=99)k=n%100;if(m>=100&&m<999)k=n%1000;if(k==m)printf("%d",m);}}10.输入所有大于1000小于10000的四位偶数,且该偶数的各位数字两两不同。#includevoidmain(){inti,x1,x2,x3,x4;for(i=1002;i<10000;i+=2){x1=i/1000;x2=i/100%10;x3=i/10%10;x4=i%10;if(x1!=x2&&x1!=x3&&x1!=x4&&x2!=x3&&x2!=x4&&x3!=x4)printf("%-5d",i);}}13.编写程序,用牛顿迭代法求x*x-a=0的近似根。要求前后两次求出的x的差的绝对值小于0.00001。#include#includevoidmain(){floata,x0,x1,f0,f1;printf("inputa,x1:");scanf("%f%f",&a,&x1);do{x0=x1;f0=x0*x0-a;f1=2*x0;x1=x0-f0/f1;}while(fabs(x0-x1)>1e-5);printf("x=%f\n",x1);}6.打印出如下图案#includevoidmain(){inth=4,k,j,m;for(j=1;j<=2*h-1;j++){if(j<=h)m=2*j-1;elsem=4*h-2*j-1;for(k=1;k<=m;k++)printf("*");printf("\n");}}从键盘输入h的值,输出如下三角形,例号h=4#includevoidmain(){inth,k,j;scanf("%d",&h);for(k=1;k<=h;k++){for(j=1;j<=h-k;j++)printf("");for(j=1;j<=2*k-1;j++)printf("*");printf("\n");}}从键盘输入h的值,输出h行用*号组成的菱形,例输入h=4,输出#includevoidmain(){inth,k,j,m,n;printf("inputh:");scanf("%d",&h);for(j=1;j<=2*h-1;j++){if(j<=h){m=h-j;n=2*j-1;}else{m=j-h;n=4*h-2*j-1;}for(k=1;k<=m;k++)printf("");for(k=1;k<=n;k++)printf("*");printf("\n");}}打印出所有的“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1×1×1+5×5×5+3×3×3。#includevoidmain(){intn,x1,x2,x3;printf("waterflowernumberis:");for(n=100;n<=999;n++){x1=n/100;x2=n/10%10;x3=n%10;if(n==x1*x1*x1+x2*x2*x2+x3*x3*x3)printf("%-4d",n);}printf("\n");}输出100—200之间不能被3整除的数。#includevoidmain(){inti.n;for(n=100;n<=200;n++){if(n%3==0)continue;printf(“%5d”,n);}}第六章数组输出最大值#includevoidmain(void){inta,b,c,max;printf("输入三个数:");scanf("%d%d%d",&a,&b,&c);max=a;if(b>max)max=b;if(c>max)max=c;printf("%d是最大数\n",max);}#includevo
{s=s+x;x=x*10+a;i++;}
printf("s=%d\n",s);
5.一个数如果恰好等于它的因子之和,这个数就成为“完数”,例如6=1+2+3。
编程找出1000以内的所有完数。
{intn,i,s;
for(n=1;n<=1000;n++)
{s=0;/*注意s=0的位置*/
for(i=1;i{if(n%i==0)s=s+i;}if(n==s)printf("%d\n",n);}}7.求1+2!+3!+…+20!的和。#includevoidmain(){inti,n;floatjc,s;for(n=1;n<=20;n++){for(jc=1,i=1;i<=n;i++)jc=jc*i;s=s+jc;}printf("s=%f\n",s);}8.输出100~200之间的全部素数。#include#includevoidmain(){intn,i;for(n=100;n<=200;n++){for(i=2;i<=sqrt(n);i++)if(n%i==0)break;if(i>sqrt(n))printf("%-5d",n);}}9.编写程序,找出1~999之间的全部同构数。同构数是这样一组数,它出现在平方数的右边,例如:5是25的右边的数,25是625的右边的数,5和25都是同构数。#includevoidmain(){intk,m,n;for(m=4;m<999;m++){n=m*m;if(m>=1&&m<=9)k=n%10;if(m>=10&&m<=99)k=n%100;if(m>=100&&m<999)k=n%1000;if(k==m)printf("%d",m);}}10.输入所有大于1000小于10000的四位偶数,且该偶数的各位数字两两不同。#includevoidmain(){inti,x1,x2,x3,x4;for(i=1002;i<10000;i+=2){x1=i/1000;x2=i/100%10;x3=i/10%10;x4=i%10;if(x1!=x2&&x1!=x3&&x1!=x4&&x2!=x3&&x2!=x4&&x3!=x4)printf("%-5d",i);}}13.编写程序,用牛顿迭代法求x*x-a=0的近似根。要求前后两次求出的x的差的绝对值小于0.00001。#include#includevoidmain(){floata,x0,x1,f0,f1;printf("inputa,x1:");scanf("%f%f",&a,&x1);do{x0=x1;f0=x0*x0-a;f1=2*x0;x1=x0-f0/f1;}while(fabs(x0-x1)>1e-5);printf("x=%f\n",x1);}6.打印出如下图案#includevoidmain(){inth=4,k,j,m;for(j=1;j<=2*h-1;j++){if(j<=h)m=2*j-1;elsem=4*h-2*j-1;for(k=1;k<=m;k++)printf("*");printf("\n");}}从键盘输入h的值,输出如下三角形,例号h=4#includevoidmain(){inth,k,j;scanf("%d",&h);for(k=1;k<=h;k++){for(j=1;j<=h-k;j++)printf("");for(j=1;j<=2*k-1;j++)printf("*");printf("\n");}}从键盘输入h的值,输出h行用*号组成的菱形,例输入h=4,输出#includevoidmain(){inth,k,j,m,n;printf("inputh:");scanf("%d",&h);for(j=1;j<=2*h-1;j++){if(j<=h){m=h-j;n=2*j-1;}else{m=j-h;n=4*h-2*j-1;}for(k=1;k<=m;k++)printf("");for(k=1;k<=n;k++)printf("*");printf("\n");}}打印出所有的“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1×1×1+5×5×5+3×3×3。#includevoidmain(){intn,x1,x2,x3;printf("waterflowernumberis:");for(n=100;n<=999;n++){x1=n/100;x2=n/10%10;x3=n%10;if(n==x1*x1*x1+x2*x2*x2+x3*x3*x3)printf("%-4d",n);}printf("\n");}输出100—200之间不能被3整除的数。#includevoidmain(){inti.n;for(n=100;n<=200;n++){if(n%3==0)continue;printf(“%5d”,n);}}第六章数组输出最大值#includevoidmain(void){inta,b,c,max;printf("输入三个数:");scanf("%d%d%d",&a,&b,&c);max=a;if(b>max)max=b;if(c>max)max=c;printf("%d是最大数\n",max);}#includevo
{if(n%i==0)s=s+i;}
if(n==s)printf("%d\n",n);}
7.求1+2!
+3!
+…+20!
的和。
{inti,n;
floatjc,s;
for(n=1;n<=20;n++)
{for(jc=1,i=1;i<=n;i++)
jc=jc*i;
s=s+jc;}
printf("s=%f\n",s);
8.输出100~200之间的全部素数。
{intn,i;
for(n=100;n<=200;n++)
{for(i=2;i<=sqrt(n);i++)
if(n%i==0)break;
if(i>sqrt(n))printf("%-5d",n);
9.编写程序,找出1~999之间的全部同构数。
同构数是这样一组数,它出现在平方数的右边,例如:
5是25的右边的数,25是625的右边的数,5和25都是同构数。
{intk,m,n;
for(m=4;m<999;m++)
{n=m*m;
if(m>=1&&m<=9)k=n%10;
if(m>=10&&m<=99)k=n%100;
if(m>=100&&m<999)k=n%1000;
if(k==m)printf("%d",m);
10.输入所有大于1000小于10000的四位偶数,且该偶数的各位数字两两不同。
{inti,x1,x2,x3,x4;
for(i=1002;i<10000;i+=2)
{x1=i/1000;x2=i/100%10;
x3=i/10%10;x4=i%10;
=x2&&x1!
=x3&&x1!
=x4&&x2!
=x4&&x3!
=x4)
printf("%-5d",i);
13.编写程序,用牛顿迭代法求x*x-a=0的近似根。
要求前后两次求出的x的差的绝对值小于0.00001。
{floata,x0,x1,f0,f1;
printf("inputa,x1:
scanf("%f%f",&a,&x1);
{x0=x1;
f0=x0*x0-a;
f1=2*x0;
x1=x0-f0/f1;
while(fabs(x0-x1)>1e-5);
printf("x=%f\n",x1);
6.打印出如下图案
{inth=4,k,j,m;
for(j=1;j<=2*h-1;j++)
{if(j<=h)m=2*j-1;elsem=4*h-2*j-1;
for(k=1;k<=m;k++)
printf("*");
printf("\n");
从键盘输入h的值,输出如下三角形,例号h=4
{inth,k,j;
scanf("%d",&h);
for(k=1;k<=h;k++)
{for(j=1;j<=h-k;j++)
printf("");
for(j=1;j<=2*k-1;j++)
从键盘输入h的值,输出h行用*号组成的菱形,例输入h=4,输出
{inth,k,j,m,n;
printf("inputh:
{if(j<=h){m=h-j;n=2*j-1;}
else{m=j-h;n=4*h-2*j-1;}
for(k=1;k<=n;k++)
打印出所有的“水仙花数”。
所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。
例如:
153是一个“水仙花数”,因为153=1×1×1+5×5×5+3×3×3。
{intn,x1,x2,x3;
printf("waterflowernumberis:
for(n=100;n<=999;n++)
{x1=n/100;x2=n/10%10;x3=n%10;
if(n==x1*x1*x1+x2*x2*x2+x3*x3*x3)printf("%-4d",n);
输出100—200之间不能被3整除的数。
{inti.n;
{if(n%3==0)continue;
printf(“%5d”,n);}
第六章数组
输出最大值
{inta,b,c,max;
printf("输入三个数:
scanf("%d%d%d",&a,&b,&c);
max=a;
if(b>max)max=b;
if(c>max)max=c;
printf("%d是最大数\n",max);
vo
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1