请参照本章例题,编写一个C程序,输出以下信息 本文关键词:例题,本章,参照,编写,输出
请参照本章例题,编写一个C程序,输出以下信息 本文简介:1.5请参照本章例题,编写一个C程序,输出以下信息:*************************VeryGood!*************************解:mian(){printf(“**************************”);printf(“/n”);printf
请参照本章例题,编写一个C程序,输出以下信息 本文内容:
1.5请参照本章例题,编写一个C程序,输出以下信息:*************************
Very
Good!*************************
解:
mian()
{printf(“**************************”);
printf(“/n”);
printf(“Very
Good!/n”);
printf(“/n”);
printf(“**************************”);
}
1.6
编写一个程序,输入a、b、c三个值,输出其中最大值。
解:
mian()
{int
a,b,c,max;
printf(“请输入三个数a,b,c:/n”);
scanf(“%d,%d,%d”,max=a;
if(max
main()
{
char
c1=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’;
c1+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
printf(“密码是%c%c%c%c%c/n“,c1,c2,c3,c4,c5);
}
运行结果:
密码是Glmre
3.9求下面算术表达式的值。
(1)x+a%3*(int)(x+y)%2/4
设x=2.5,a=7,y=4.7
(2)(float)(a+b)/2+(int)x%(int)y
设a=2,b=3,x=3.5,y=2.5
(1)2.5
(2)3.5
3.10写出程序运行的结果。
main()
{int
i,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf(“%d,%d,%d,%d”,i,j,m,n);
}
解:
9,11,9,10
3.12
写出下面表达式运算后a的值,设原来a=12。设a和n都已定义为整型变量。
(1)a+=a
(2)
a-=2
(3)
a*=2+3
(4)a/=a+a
(5)
a%=(n%=2),n的值等于5
(6)a+=a-=a*=a
解:
(1)
24
(2)
10
(3)
60
(4)
0
(5)
0
(6)
0
第四章
4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。
a=_3_
_b=_4_
_c=_5
x=1.200000,y=2.400000,z=-3.600000
x+y=_3.600_
_y+z=-1.20_
_z+x=-2.40
c1=ˊaˊ_or_97(ASCII)
c2=ˊbˊ_or_98(ASCII)
main()
{int
a=3,b=4,c=5;
long
int
u=51274,n=128765;
float
x=1.2,y=2.4,z=3.6;
char
c1=’a’,c2=’b’;
printf(“a=%2d
b=%2d
c=%2d/n“,a,b,c);
printf(“x=%f,y=%f,z=%f/n“,x,y,z);
printf(“x+y=%5.2f
y+z=%5.2f
z+x=%5.2f/n“,x+y,y+z,z+x);
printf(“u=%6ld
n=%9ld/n“,u,n);
printf(“%s
%s
%d%s/n“,“c1=’a’“,“or“,c1,“(ASCII)“);
printf(“%s
%s
%d%s/n“,“c2=’a’“,“or“,c2,“(ASCII)“);
}
4.7用scanf下面的函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=ˊAˊ,c2=ˊaˊ,问在键盘上如何输入?
main()
{
int
a,b;float
x,y;char
c1c2;
scanf(“a=%d_b=%d“,
scanf(“%f,%f“,C1=2*3.14*r;
Sa=3.14*r*r;
Sb=4*Sa;
Va=4*3.14*r*r*r/3;
Vb=Sa*h;
printf(“C1=%.2f/n“,C1);
printf(“Sa=%.2f/nSb=%.2f/nVa=%.2f/nVb=%.2f/n“,Sa,Sb,Va,Vb);
}
4.9输入一个华氏温度,要求输出摄氏温度。公式为
c=5(F-32)/9
输出要求有文字说明,取位2小数。
main()
{float
F,c;
scanf(“%f“,c=5*(F-32)/9;
printf(“c=%.2f“,c);
}
4.10编程序,用getchar函数读入两个字符给c1、c2,然后分别用函数和函数输出这两个字符。并思考以下问题:(1)变量c1、c2应定义为字符型或整形?抑二者皆可?(2)要求输出c1和c2值的ASCII码,应如何处理?用putchar函数还是printf函数?(3)整形变量与字符变量是否在任何情况下都可以互相代替?如:
char
c1,c2;
与
int
c1,c2;
是否无条件的等价?
#include“stdio.h“main()
{char
c1,c2;
c1=getchar();c2=getchar();
putchar(c1);putchar(’/n’);putchar(c2);putchar(’/n’);
}
#include“stdio.h“main()
{char
c1,c2;
c1=getchar();c2=getchar();
printf(“c1=%d
c2=%d/n“,c1,c2);
printf(“c1=%c
c2=%c/n“,c1,c2);
}
第五章
5.1
什么是算术运算?什么是关系运算?什么是逻辑运算?
解:略。
5.2
C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?
解:设有一个逻辑表达式,若其结果为“真”,则以1表示;若其结果为“假”,则以0表示。但是判断一个逻辑量的值时,以0代表“真”,以非0代表“假”。例如3
printf(“请输入3个整数:“);
scanf(“%d,%d,%d“,if(a
main()
{
int
a,b,c,temp,max;
printf(“请输入3个整数:“);
scanf(“%d,%d,%d“,temp=(a>b)?a:b;
/*
将a和b中的大者存人temp中/
max=(temp>c)?temp:c;
/*
将a和b中的大者与c比较,取最大者*/
printf(“3个整数的最大数是%d/n”,max);
}
5.5
有一函数:
写一程序,输入x值,输出y值。
解:
#include
main()
{int
x,y;
printf(“输入x:“);
scanf(“%d“,if(x
main()
{
float
score;
char
grade;
printf(“请输入学生成绩:“);
scanf(“%f“,while(score>100||(score
main()
{
long
int
num;
int
indiv,ten,hundred,thousand,ten_thousand,place;
/*分别代表个位、十位、百位、千位、万位和位数*/
printf(“请输入一个整数(0~99999):“);
scanf(“%ld“,if
(num>9999)
place=5;
else
if(num>999)
place=4;
else
if(num>99)
place=3;
else
if(num>9)
place=2;
else
place=1;
printf(“place
=%d/n“,place);
ten_thousand=num/10000;
thousand=num/1000%10;
hundred=num/100%10;
ten=num%100/10;
indiv=num%10;
switch(place)
{
case
5:
printf(“%d,%d,%d,%d,%d“,ten_thousand,thousand,hundred,ten,indiv);
printf(“/n反序数字为;“);
printf(“%d%d%d%d%d/n“,indiv,ten,hundred,thousand,ten_thousand);
break;
case
4:
printf(“%d,%d,%d,%d“,thousand,hundred,ten,indiv);
printf(“/n反序数字为:“);
printf(“%d%d%d%d/n“,indiv,ten,hundred,thousand);
break;
case
3:
printf(“%d,%d,%d“,hundred,ten,indiv);
printf(“/n反序数字为:“);
printf(“%d%d%d/n“,indiv,ten,hundred);
break;
case
2:
printf(“%d,%d“,ten,indiv);
printf(“/n反序数字为:“);
printf(“%d%d/n“,indiv,ten);
break;
case
1:
printf(“%d“,indiv);
printf(“/n反序数字为:“);
printf(“%d/n“,indiv);
break;
}
}
5.8
企业发放的奖金根据利润提成。利润I低于或等于10万元时,奖金可提成10%
;利润高于10万元,低于20万元(1000001000000时,超过100万元的部分按1%提成。从键盘输入当月利润I,求应发放奖金总数。要求:(1)用if语句编程序;(2)用switch语句编程序。
解:计算利润时,要特别注意不同利润的不同提成比例。例如,利润为15万元,其中有10万元按10%的比例提成,另外5万元则按7.5%提成。
(1)
用if语句编程序。
#include
main()
{
long
i;
float
bonus,bon1,bon2,bon4,bon6,bon10;
bon1=100000*0.1;
/*利润为10万元时的奖金*/
bon2=bon1+100000*0.075;
/*利润为20万元时的奖金*/
bon4=bon2+200000*0.05;
/*利润为40万元时的奖金*/
bon6=bon4+200000*0.03;
/*利润为60万元时的奖金*/
bon10=bon6+400000*0.015;
/*利润为100万元时的奖金*/
printf(“请输入利润i:“);
scanf(“%ld“,if(i
main()
{
long
i;
float
bonus,bon1,bon2,bon4,bon6,bon10;
int
c;
bon1=100000*0.1;
bon2=bon1+100000*0.075;
bon4=bon2+200000*0.05;
bon6=bon4+200000*0.03;
bon10=bon6+400000*0.015;
printf(“请输入利润i:“);
scanf(“%ld“,c=i/100000;
if(c>10)
c=10;
switch(c)
{
case
0:
bonus=1*0.1;break;
case
1:
bonus=bon1+(i-100000)*0.075;break;
case
2
:
case
3:
bonus=bon2+(i-200000)*0.05;
break;
case
4:
case
5:
bonus=bon4+(i-400000)*0.03;break;
case
6:
case
7:
case
8:
case
9:
bonus=bon6+(i-600000)*0.015;break;
case
10:
bonus=bon10+(i-1000000)*0.01;
}
printf(“奖金是%10.2f“,bonus);
}
5.9
输入4个整数,要求按由大到小的顺序输出。
解:此题采用依次比较的方法排出其大小顺序。在学习了循环和数组以后,可以有更多的排序方法。
#include
main()
{
int
t,a,b,c,d;
printf(“请输入4个整数:“);
scanf(“%d,%d,%d,%d“,printf(“/n
a=%d,b=%d,c=%d,d=%d/n“,a,b,c,d);
if(a>b)
{t=a;
a=b;
b=t;}
if(a>c)
{t=a;
a=c;
c=t;}
if(a>d)
{t=a;
a=d;
d=t;}
if(b>c)
{t=a;
b=c;
c=t;}
if(b>d)
{t=b;
b=d;
d=t;}
if(c>d)
{t=c;
c=d;
d=t;}
printf(“排序结果如下:/n“);
printf(“%d,%d,%d,%d/n“,a,b,c,d);
}
5.10
有4个圆塔,圆心分别为(2,2)、(-2,2)、(2,-2)、(-2,-2),圆半径为1。这4个塔的高度分别为10m。塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)。
程序如下:
#include
main()
{
int
h=10;
float
x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=-2,y4=-2,x,y,d1,d2,d3,d4;
printf(“请输入一个点(x,y):“);
scanf(“%f,%f“,d1=(x-x1)*(x-x1)+(y-y1)*(y-y1);
/*求该点到各中心点的距离*/
d2=(x-x2)*(x-x2)+(y+y2)*(y+y2);
d3=(x+x3)*(x+x3)+(y-y3)*(y-y3);
d4=(x+x4)*(x-x4)*(y+y4)*(y+y4);
if(d1>1
/*判断该点是否在塔外*/
printf(“该点高度为%d/n“,h);
}
第六章
第六章
循环控制
6.1输入两个正整数m和n,求其最大公约数和最小公倍数。
main()
{long
m,n,i=1,j,s;
scanf(“%ld,%ld“,for(;i=n)
j=m;
else
j=n;
for(;!(j%m==0j++);
printf(“s=%ld,j=%ld/n“,s,j);
}
6.2输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
#include“stdio.h“main()
{char
c;int
i=0,j=0,k=0,l=0;
while((c=getchar())!=’/n’)
{if(c>=65
printf(“%.3f/n“,x1);
}
6.12
用牛顿迭代法求方程在1.5附近的根。
main()
{double
x,y;x=1.5;
do{y=2*x*x*x-4*x*x+3*x-6;
x=x-y/(6*x*x-8*x+3);}
while(y!=0);
printf(“x=%.3f/n“,x);
}
6.13用二分法求方程在(-10,10)之间的根
main()
{double
x1,x2,y1,y2;x1=-10;x2=10;
do{y1=2*x1*x1*x1-4*x1*x1+3*x1-6;
x1=x1-y1/(6*x1*x1-8*x1+3);}
while(y1!=0);
do
{y2=2*x2*x2*x2-4*x2*x2+3*x2-6;
x2=x2-y2/(6*x2*x2-8*x2+3);}
while(y2!=0);
printf(“x1=%.3f,x2=%.3f/n“,x1,x2);
}
6.14打印以下图案
#include“math.h“main()
{int
i,j,k;
for(i=0;i=k+1)
printf(“%5d“,a[i]);
}
printf(“/n“);
}
7.2用选择法对10个整数从小到大排序。
main()
{
int
i,j,a[10],t;
for(i=0;ia[i+1])
{t=a[i+1];a[i+1]=a[i];a[i]=t;}
for(i=0;ia[i+1])
{t=a[i+1];a[i+1]=a[i];a[i]=t;}
for(i=1;i0;i--)
if(a[i]-1;i--)
printf(“%5d“,b[i]);
printf(“/n“);}
7.6打印出以下杨辉三角形(要求打印出10行)。
1
1
1
1
2
1
1
3
3
1
1
4
6
4
1
1
5
10
10
5
1
∶
∶
main()
{
static
int
m,n,k,b[15][15];
b[0][1]=1;
for(m=1;m
main()
{
int
a[16][16],i,i,k,p,m,n;
p=1;
while(p==1)
/*要求阶数为1~15的商数*/
{
printf(“Enter
n(n=1~15):“);
scanf(“%d“,if((n!=0)
j=j-1;
}
else
{
if(in)
j=1;
}
if(a[i][j]==0)
a[i][j]=k;
else
{
i=i+2;
j=j-1;
a[i][j]=k;
}
}
for(i=1;i=a[i][j+1])
b[k]=a[i][j+1]=a[i][j];
else
b[k]=a[i][j+1];
}
for(j=0,l=0;ja[7])
{if(a[i]-m==0)
{printf(“it
is
at
(%d)/n“,i+1);break;}i++;}
else
printf(“8/n“);
}
if(fabs(i-7)-8==0)
printf(“There
is
not/n“);
}
7.10有一篇文章,共有3行文字,每行有个80字符。要求分别统计出其中英文大写字母、小写字母、空格以及其它字符的个数。
main()
{int
i,j=0,k=0,l=0,m=0,n=0;char
str0[301],str1[100],str2[100],str3[100];
gets(str1);gets(str2);gets(str3);
strcat(str0,str1);strcat(str0,str2);strcat(str0,str3);
for(i=0;str0[i]!=’/0’;i++)
{if(str0[i]>=65&&str0[i]<=90