C例题2.docx
《C例题2.docx》由会员分享,可在线阅读,更多相关《C例题2.docx(18页珍藏版)》请在冰豆网上搜索。
C例题2
例5.2用while语句实现:
从键盘输入n个数,求其和。
#include
voidmain()
{
inti,n;
floatk,s;
s=0;
i=1;
printf(“inputn:
”);
scanf(“%d”,n);
while(i<=n)
{
scanf(“%f”,&k);
s=s+k;
i++;
}
printf(“\ntheansweris%f\n”,s);
}
例5.2从键盘连续输入字符,直到输入“回车”符为止,统计输入的字符个数。
#include
#include
voidmain()
{
charch;
inti=0;
puts(“inputasentence,thenpress\n”);
while((ch=getch())!
=’\r’)
{
putchar(ch);
i++;
}
printf(“\nthelengthis%d\n”,i);
}
例5.3用do-while语句重做例5.1
#include
voidmain()
{
inti=1,n;
floatk,s=0;
printf(“inputn:
”);
scanf(“%d”,&n);
do
{
scanf(“%f”,&k);
i++;
s=s+k;
}
while(i<=n);
printf(“\nsumis%f\n”,s);
}
例5.4用for语句重写例5.1。
#include
voidmain()
{
inti,n;
floatk,s=0;
printf(“inputn:
”);
scanf(“%d”,&n);
for(i=1;i<=n;i++)
{
scanf(“%f”,&k);
s=s+k;
}
printf(“sumis%f\n”,s);
}
例5.5计算1至50中是7的倍数的数值之和。
#include
voidmain()
{
ints=0,i;
for(i=1;i<=50;i++)
{
if(i%7==0)
s=s+i;
}
printf(“sumis:
%d”,s);
}
例5.6输出九九乘法表。
#include
voidmain()
{
inti,j,k,s;
for(k=1;k<=9;k++)
printf(“%d”,k);
printf(“\n-------------------------------------------\n“);
for(i=1;i<=9;i++)
for(j=1;j<=9;j++)
printf(j%9==0?
”%4d\n”:
”%d”,i*j);
}
例5.7计算r=1到r=10时的圆面积。
直到面积大于100为止。
#include
#definePI3.1415926
voidmain()
{
intr;
floats;
for(r=1;r<=10;r++)
{
s=PI*r*r;
if(s>100)
break;
printf(“r:
%dtheareais%.2f\n”,r,s);
}
}
例5.8把100到150之间不能被3整除的数输出,要求一行输出10个数。
#include
voidmain()
{
inti,j=0;
for(i=100;i<=150;i++)
{
if(i%3!
=0)
{
printf(“%4d”,i);
j++;
}
if(j%10==0)
printf(“\n”);
}
}
OR:
#include
voidmain()
{
intn,i=0;
for(n=100;n<=150;n++)
{
if(n%3==0)
continue;
printf(“%4d”,n);
i++;
if(i%10==0)
printf(“\n”);
}
}
例5.9用goto语句和if语句构成循环,求∑1~100
#include
voidmain()
{
inti=1,s=0;
loop:
if(i<=100)
{
s+=i;
i++;
gotoloop;
}
printf(“s=%d”,s);
}
例5.10用PI/4≈1-1/3+1/5-1/7+…公式求π的近似值,直到最后一项的绝对值小于e-6为止。
#include
#include
voidmain()
{
intn=1,i=1;
floats=0;
while(fabs(n)>=1e-6)
{
s=s+i/n;
i=-i;
n=n+2;
}
printf(“π=%f\n”,4*s);
}
例5.11从键盘输入一个大于二的整数,判断其是不是素数。
#include
#include
voidmain()
{
intn,i,k;
printf(“输入一个大于二的整数:
”);
scanf(“%d”,&n);
k=sqrt((double)n);
for(i=2;i<=k;i++)
{
if(n%i==0)
printf(“\n不是素数\n);
break;
if(i==k)
printf(“\n是素数\n”);
}
}
OR:
#include
#include
voidmain()
{
intn,i,k,flag;
do
{
printf(“键入一个整数:
”);
scanf(“%d”,&n);
}
while(n<=2);
flag=1;
k=sqrt((double)n);
for(i=2;i<=k;i++)
{
if(n%i==0)
flag=0;
break;
}
if(flag)
printf(“是素数\n”);
elseprintf(“不是素数\n”);
}
例5.12用牛顿迭代法求方程2x³-4x²+3x-6=0的根,要求误差小于e-5
#include
#include
voidmain()
{
floatx,x1,f,f1;
printf(“inputtheapproach:
”);
scanf(“%f”,&x);
do
{
x1=x;
f=2*x1*x1*x1-4x1*x1+3*x1-6;
f1=6*x1*x1-8*x1+3;
x=x1-f/f1;
}
while(fabs(x1-x)>=1e-5);
printf(“root=%f”,x);
}
例5.13从键盘输入四个九以内的数字字符,将其转化为四位十进制数后显示出来。
#include
voidmain()
{
charch;
ints=0,i;
printf(“inputchar:
”);
for(i=0;i<4;i++)
{
getch(ch);
if(‘ch’>’9’||’ch’<’0’)
break;
s=s+ch-‘0’;
}
printf(“%d”,s);
}
例5.14Fibonacci数列,前几个数为0,1,1,2,3,5,~,其规律是F1=0,F2=1,Fn=Fn-1+Fn-2,编程求此数列的前四十个数。
#include
voidmain()
{
inti;
longinta,b;
a=0;b=1;
for(i=1;i<21;i++)
{
printf(“%9ld%9ld”,a,b);
a=a+b;
b=b+a;
if(i%2==0)
printf(“\n”);
}
}
例6.1输入某个同学的五门成绩,要求按与输入顺序相反的顺序输出。
#include
voidmain()
{
floats1,s2,s3,s4,s5;
printf(“enterfivescores:
”);
scanf(“%f,%f,%f,%f,%f”,&s1,&s2,&s3,&s4,&s5);
printf(“%f”,s1);
~
~
OR:
#include
voidmain()
{
inti;
floats[5];
printf(“enterfivescores:
”);
for(i=1;i<=5;i++)
scanf(“%f”,&s[i]);
printf(“thescoresinreverse
for(i=5;i>=1;i--)
printf(“%f”,s[i]);
}
例6.2用数组来处理Fibonacci数列问题。
#include
voidmain()
{
inti;
longints[20];
s[0]=0;
s[1]=1;
printf(“%9ld%9ld”,s[0],s[1]);
for(i=2;i<=19;i++)
{
s[i]=s[i-1]+s[i-2];
printf(“%9ld”,s[i]);
if((i+1)%4==0)
printf(“\n”);
}
}
例6.3用冒泡法对给定的15个整数进行递增排序。
#defineN15
#include
voidmain()
{
inti,j,t,s[15];
printf(“input15numbers:
”);
for(i=0;i<=14;i++)
scanf(“%d”,&s[i]);
for(j=1;j<=14;j++)
for(i=0;i{
if(s[i]>s[i+1])
t=s[i];
s[i]=s[i+1];
s[i+1]=t;
}
printf(“排序后:
”);
for(i=0;i<15;i++)
printf(“%d”,s[i]);
}
例6.4从键盘为一个N×N的整型数组输入数据,并将每一行的最小值显示出来。
#defineN6
#include
voidmain()
{
ints[N][N],a[N],i,j;
printf(“inputthenumbers:
\n”);
for(i=0;ifor(j=0;jscanf(“%d”,&s[i][j]);
for(i=0;i{a[i]=s[i][0];
for(j=1;jif(a[i]>s[i][j])
a[i]=s[i][j];
}
printf(“Minis:
”);
for(i=0;iprintf(“%d”,a[i]);
}
例6.5统计某一字符串中的字符数,不包括结束符‘\0’.
#include
voidmain()
{
chara[]=(“string”);
inti;
for(i=0;;i++)
{if(a[i]==’\0’)
printf(“length=%d\n”,i);
break;
}
}
例6.6有三个字符串,要求找出其中最大者。
#include
#include
voidmain()
{
charstring[20];
charstr[3][20];
inti;
for(i=0;i<3;i++)
gets(str[i]);
if(strcmp(str[0],str[1])>0)
strcpy(string[30],str[0]);
elsestrcpy(string[30],str[1]);
if(strmp(strng[30],str[2])<0)
strcpy(string[30],str[2]);
puts(string[30]);OR:
printf(“\nthelongestis%s\n”,string);
}
例6.7用选择排序法对数组中的N个整数排序,按从小到大的顺序输出。
#defineN10
#include
voidmain()
{
inta[N],i,j,t;
printf(“inputthenumbers:
”);
for(i=0;iscanf(“%d”,&a[i]);
for(i=1;ifor(j=0;jif(a[j]>a[j+1])
{t=a[j];
a[j]=a[j+1];
a[j+1]=t;}
printf(“\nthenumbersinreserveorder:
\n”);
for(i=0;iprintf(“%d”,a[i]);
}
选择排序法:
#defineN10
#include
voidmain()
{
inta[N],t,i,j,k;
printf(“input%dnumber:
\n”,N);
for(i=0;iscanf(“%d”,&a[i]);
for(i=0;i{k=i;
for(j=i+1;jif(a[j]k=j;
t=a[k];
a[k]=a[i];
a[i]=t;
}
printf(“\nthesortednumbers:
”);
for(i=0;iprintf(“%d”,a[i]);
}
例6.8将数组a的内容逆置重放,要求不得另外开辟数组,只能借助于一个临时存储单元。
#defineN8
#include
voidmain()
{
inta[N],i,t;
printf(“input%dnumber:
\n”,N);
for(i=0;iscanf(“%d”,&a[i]);
for(i=0;i<=N/2-1;i++)
{t=a[i];a[i]=a[N-i-1];a[N-i-1]=t;}
printf(“\nthesortednumbersis:
\n”);
for(i=0;iprintf(“%d”,a[i]);
}
例6.9将字符串s转换成相应的双精度浮点数。
#include
voidmain()
{
chars[8];
doubleval,power,number;
inti,sign;
printf(“inputastringofnumber:
\n”);
gets(s);
i=0;
sign=s[i++]==’-‘?
-1:
1;
for(val=0;’0’
val=val+s[i]*10;val=val*10+s[i]-‘0’;
i++;
for(power=1;’0’<=s[i]&&s[i]<=’9’;i++)
{
val=val+s[i]*10;
power*=10;
}
number=val*sign/power;
printf(“\nnumber=%f\n”,number);
}
例6.10输入一个由若干单词组成的文本行(最多80个字符),每个单词之间用若干个空格隔开,统计此文本中单词的个数。
#include
#include
voidmain()
{
inti=0,k=0;
chara[80],prec,nowc;
printf(“inputatextline:
”);
gets(a[80]);
prec=’‘;
while(a[i]!
=’\0’)
{
nowc=a[i];
if(nowc!
=’\0’&&prec==’\0’)k++;
i++;
}
printf(“\nthenumberofwords:
%d”,k);
}