Example1.docx
《Example1.docx》由会员分享,可在线阅读,更多相关《Example1.docx(22页珍藏版)》请在冰豆网上搜索。
Example1
Example1.3
voidmain()
{
intmax(intx,inty);
inta,b,c;
scanf("%d,%d",&a,&b);
c=max(a,b);
printf("maxis%d\n",c);
}
intmax(intx,inty)
{
intt;
if(x>y)
t=x;
else
t=y;
return(t);
}
Example1(1.6)
#include
voidmain()
{
intmax(intx,inty,intz);
inta,b,c,sum;
scanf("%d,%d,%d",&a,&b,&c);
sum=max(a,b,c);
printf("max=%d\n",sum);
}
intmax(intx,inty,intz)
{
intnum;
if(x>y)
if(x>z)
num=x;
else
num=z;
else
if(y>z)
num=y;
else
num=z;
return(num);
}
练习2.4(5):
2.5(4)
2.6(4)
方法一:
开始
置i=1
置sum=0
当i不大于100时,执行下面的操作:
使sum=sum+i
使i=i+1
打印sum
结束
方法二:
Begin
1→i
0→sum
Whilei<=100
{
sum=sum+i;
i=i+1;
}
32个关键字:
(由系统定义,不能重作其它定义)
autobreakcasecharconst
continuedefaultdodoubleelse
enumexternfloatforgoto
ifintlongregisterreturn
shortsignedsizeofstaticstruct
switchtypedefunsignedunionvoid
volatilewhile
类型转换在赋初值和不同类型数据进行混合运算时都会遇到。
具体的转换规则参见课本P59页。
将在下一节讲赋值运算符时具体介绍。
P111练习5.4
方法一:
#include
voidmain()
{
inta,b,c;
printf(“请输入3个整数:
”);
scanf(“%d,%d,%d”,&a,&b,&c);
if(a
if(bprintf(“max=%d\n”,c);
else
printf(“max=%d\n”,b);
elseif(aprintf(“max=%d\n”,c);
else
printf(“max=%d\n”,a);
}
方法二:
使用条件表达式,可以使程序更加简明。
#include
voidmain()
{
inta,b,c,temp,max;
printf(“请输入3个整数:
”);
scanf(“%d,%d,%d”,&a,&b,&c);
temp=(a>b)?
a:
b;
max=(temp>c)?
temp:
c;
printf(“3个整数的最大数是%d\n”,max);
}
P111练习5.7
算法:
输入一个数num;place为位数;
indiv,ten,hundred,thousand,ten_thousand分别表示个、十、百、千、万;
/*判断是几位数*/
Ifnum>9999place=5;
Ifnum>999place=4;
Ifnum>99place=3;
Ifnum>9place=2;
否则place=1;
/*计算每位的数字*/
ten_thousand=num/10000;
thousand=(int)(num-ten_thousand*10000)/1000;
hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;
ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;
indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);
/*反序数字*/
switch(place)
{
case5:
输出indiv,ten,hundred,thousand,ten_thousand;
case4:
输出indiv,ten,hundred,thousand;
case3:
输出indiv,ten,hundred;
case2:
输出indiv,ten;
case1:
输出indiv;
}
P129T6.2
#include
voidmain()
{
intletters=0,space=0,digit=0,other=0;
chart;
printf(“inputastring:
\n”);
while(t=getchar()!
=’\n’)
{
if(t>=’a’&&t<=’z’||t>=’A’&&t<=’Z’)
letters++;
elseif(t>=’0’&&t<=’9’)
digit++;
elseif(t==’‘)
space++;
else
other++;
}
printf(“letternumber=%d\nspacenumber=%d\ndigitnumber=%d\nothernumber=%\n”,letters,space,digit,other);
}
求练习6.5中第二项的值
#include
voidmain()
{
intk=1;
floatsum=0;
do
{
sum=sum+k*k;
k++;
}while(k<=50);
printf("%f",sum);
}
用for语句求解练习6.5中的第三项值
#include
voidmain()
{
intk;
floatsum=0;
for(k=1;k<=10;k++)
sum=sum+1./k;
printf("%f",sum);
}
练习6.4
#include
voidmain()
{
floats=0,t=1;//s不能定义为int型,因为超出范围,-32768~32767
intn;
for(n=1;n<=20;n++)
{
t=t*n;
s=s+t;
}
printf("%e",s);
}
Charpter6思考1
#include
voidmain()
{
inti,j;
for(i=1;i<=4;i++)
{
for(j=1;j<=i;j++)
printf("%4d",i*j);
printf("\n");
}
}
思考2
#include
voidmain()
{
inti,j;
for(i=1;i<=4;i++)
{
for(j=1;j<=5-i;j++)
printf("%4d",i*j);
printf("\n");
}
}
思考3
#include
voidmain()
{
inti,j;
for(i=1;i<=4;i++)
{
for(j=5-i;j<=4;j++)
printf("%4d",i*j);
printf("\n");
}
}
思考4
#include
voidmain()
{
inti,j;
for(i=1;i<=4;i++)
{
for(j=1;j<=i-1;j++)
printf("%4c",'');
for(j=i;j<=4;j++)
printf("%4d",i*j);
printf("\n");
}
由小到大的顺序输出0~7的二进制数.
main()
{
inti,j,k;
printf("ijk\n");
for(i=0;i<2;i++)
for(j=0;j<2;j++)
for(k=0;k<2;k++)
printf("%d%d%d\n",i,j,k);
}
练习6.14
⏹#include"stdio.h"
⏹voidmain()
⏹{
⏹inti,j,k;
⏹for(i=1;i<=4;i++)
⏹{
⏹for(j=1;j<=4-i;j++)
⏹printf("");
⏹for(k=1;k<=2*i-1;k++)
⏹printf("*");
⏹printf("\n");
⏹}
⏹}
例6.6
#include
#include
voidmain()
{
ints,i;
floatn,t,pi;
t=1;pi=0;n=1.0;i=1;
while((fabs(t))>1e-6)
{pi=pi+t;
n=n+2;
if(i%2==0)
t=1/n;
else
t=-1/n;
i++;
}
pi=pi*4;
printf("pi=%10.6f\n",pi);
}
练习6.8
#include
voidmain()
{
inti,t,j,n=20;
floata=2,b=1,s=0;
for(i=1;i<=n;i++)
{
s=s+a/b;
t=a;
a=a+b;
b=t;
}
printf("sum=%f\n",s);
}
练习7.3
#include
Voidmain
{
inta[3][3],sum=0;
inti,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf(“%d”,&a[i][j]);
for(i=0;i<3;i++)
sum=sum+a[i][i];
printf(“sum=%d”,sum);
}
字符数组举例
#include
#include
main()
{
charstring[20];
charstr[5][20];
inti;
for(i=0;i<5;i++)
gets(str[i]);
strcpy(string,str[0]);
for(i=1;i<5;i++)
if(strlen(str[i])>strlen(string))
strcpy(string,str[i]);
printf("thelargeststringis:
%s\n",string);
}
练习7.5
#include"stdio.h"
#defineN4
voidmain()
{
inta[N]={8,6,5,1},t,i;
for(i=0;i{
t=a[i];
a[i]=a[N-1-i];
a[N-1-i]=t;
}
for(i=0;iprintf("%4d",a[i]);
}
练习7.6
#include"stdio.h"
#defineN10
voidmain()
{
inta[N][N];
inti,j;
for(i=0;i{
a[i][0]=1;
a[i][i]=1;
}
for(i=2;ifor(j=1;j
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i{
for(j=0;j<=i;j++)
printf("%6d",a[i][j]);
printf("\n");
}
}
练习7.15
#include"stdio.h"
#include"string.h"
voidmain()
{
chars1[80],s2[80];
inti;
scanf("%s",s2);
//gets(s2);wrong!
for(i=0;i<=strlen(s2);i++)
s1[i]=s2[i];
printf("%s",s1);
}
⏹练习:
求两个数的阶乘和。
⏹要求:
用三个函数:
主函数,求和函数,求阶乘函数。
#include"stdio.h"
voidmain()//求两数阶乘的和
{
intm,n,c;
intfac(intx);
intadd(inta,intb);//函数声明
printf("inputm,n:
");
scanf("%d%d",&m,&n);
c=add(fac(m),fac(n));
printf("Theresultis%8.1d",c);
}
intfac(intx)//求阶乘函数的定义
{inti,t=1;
for(i=1;i<=x;i++)
t=t*i;
return(t);
}
intadd(intx,inty)//求和函数的定义
{intsum;
sum=x+y;
return(sum);
}
用递归算法计算:
s=13+23+…+n3
#include"stdio.h“
intlifang(intn);
voidmain()
{
ints;
intn;
scanf("%d",&n);
s=lifang(n);
printf("%d",s);
}
intlifang(intn)
{ints1;
if(n==1)s1=1;
elses1=lifang(n-1)+n*n*n;
return(s1);
}
编写函数求学生成绩的及格率
#include
floatjigelv(intstu[10],intn);
voidmain()
{intscore[10],i;
floatlv;
printf("Input10scores:
\n");
for(i=0;i<10;i++)
scanf("%d",&score[i]);
lv=jigelv(score,10);
printf("jigelvis:
%.2f",lv);
}
floatjigelv(intstu[10],intn)
{inti;
floatt=0;
for(i=0;iif(stu[i]>=60)
t++;
t=t/10;
returnt;
}
练习1:
输出字符串中n个字符后的所有字符。
•main()
•{
•char*ps;
•intn,i;
•gets(ps);
•scanf("%d",&n);
•for(i=0;i•printf("%s\n",ps);
•}
练习2、在输入的字符串中查找有无‘k’字符。
•#include"stdio.h"
•voidmain()
•{
•char*p;
•inti;
•gets(p);
•for(i=0;*p!
='\0';i++,p++)
•if(*p=='k')
•{
•printf("thereisa'k'inthestring\n");
•break;
•}
•if(*p=='\0')printf("Thereisno'k'inthestring\n");
•}
输出数组中正数的个数
•#include"stdio.h"
•voidmain()
•{inti,m=0;
•int*p,n[3];
•p=n;
•for(i=0;i<3;i++)
•scanf("%d",p++);
•p=n;
•for(i=0;i<3;i++)
•{if(*p>0)
•m++;
•p++;}
•printf("%d",m);
读入一个数组,并判断数组的每个元素值,若大于0,元素值变为1,若小于0,元素值为-1;最后输出数组。
要求:
用指针作该题,并编写三个函数1、输入10个数,2、进行处理,3、输出10个数。
•#include"stdio.h"
•voidinput(int*p,intn)
•{inti;
•for(i=0;i•scanf("%d",p++);
•}
•voidchange(int*p,intn)
•{inti;
•for(i=0;i•{if(*p>0)*p=1;
•elseif(*p==0)*p=0;
•else*p=-1;
•p++;}
•}
•voidoutput(int*p,intn)
•{inti;
•for(i=0;i•printf("%d",*p++);
•}
•voidmain()
•{
•inta[3],*p;
•input(a,3);
•change(a,3);
•output(a,3);
•
•}
练习10.1
#include"stdio.h"
voidmain()
{
inta,b,*p;
a=3;b=10;
p=&a;
printf("%d\n",p);
p=&b;
printf("%d",p);
}