k:
(c
c:
a)));
}
程序的运行结果:
模块2顺序结构
1.程序填空题
(1)要得到下列输出结果:
请按要求填空,补充以下程序:
#include
voidmain()
{
charc1,c2;
c1='a';
c2='b';
printf("%c,%c\n",c1,c2);
printf("%c,%c\n",c1-32,c2-32);
printf("%d,%d,%d,%d\n",c1,c2,c1-32,c2-32);
}
(2)要得到下列输出结果:
#include
voidmain()
{
inta=2,b=5;
printf("a=%%%d,b=%%%d\n",a,b);
}
2.分析下列程序的运行结果
(1)#include
voidmain()
{
intn=5,m=5;
printf("%d,%d\n",++m,n--);
}
程序的运行结果:
(2)执行下列程序时输入:
2468101
#include
voidmain()
{
intx,y;
scanf("%2d%*2d%2d",&x,&y);
printf("%ld\n",x+y);
}
程序的运行结果:
(3)执行下列程序时输入:
ABCD
#include
voidmain()
{
charx,y;
x=getchar();
y=getchar();
putchar(x);putchar('\n');putchar(y);
}
程序的运行结果:
(4)#include
#include
voidmain()
{
inta=1,b=2,c=2;
floatx=10.5,y=4.0,z;
z=(a+b)/c+sqrt((int)y)*1.2/c+x;
printf("z=%f\n",z);
}
程序的运行结果:
3.编程实现以下功能
(1)从键盘输入一个整数x,若x大于0,则显示“红”;若x等于0,则显示“黄”;若x小于0,则显示“绿”。
#include
voidmain()
{
intx;
printf("请输入一个整数:
");
scanf("%d",&x);
printf("%s\n",(x>0?
"红":
(x==0?
"黄":
"绿")));
}
(2)假设银行定期存款的年利率rate为2.25%,并已知存款期为n年,存款本金为capital元,试编程计算n年后可得到本利之和deposit(假设不计算复利)。
提示:
2.25%编写程序时应写为0.0225,本金和年数未知,从键盘输入。
#include
#include
voidmain()
{
intn;
floatcapital,rate=0.0225,deposit;
printf("请输入存款期和本金:
");
scanf("%d%f",&n,&capital);
deposit=capital*pow(1+rate,n);
printf("deposit=%f\n",deposit);
}
(3)编写程序,把700分钟换算成用小时和分钟表示。
#include
#include
voidmain()
{
intn=700,x,f;
x=n/60;
f=n%60;
printf("700分钟是%d小时,%d分钟。
\n",x,f);
}
模块3选择结构
1.分析下列程序的运行结果
(1)#include
voidmain()
{
intx=1,y=5,z=3;
if(z=x)printf("%d\n",z);
elseprintf("%d\n",y);
}
程序的运行结果:
(2)#include
voidmain()
{
intx=1,a=0,b=0;
switch(x)
{
case0:
b++;
case1:
a++;
case2:
b++,a++;
}
printf("a=%d,b=%d\n",a,b);
}
程序的运行结果:
(3)#include
voidmain()
{
intn=6;
if(n++>6)printf("%d\n",n);
elseprintf("%d\n",n--);
}
程序的运行结果:
(4)#include
voidmain()
{
inta=1,b=-1,c;
if(a*b>0)c=1;
elseif(a*b<0)
c=2;
else
c=3;
printf("c=%d\n",c);
}
程序的运行结果:
2.编程实现以下功能
(1)从键盘输入一个整数,如果是偶数,输出“IsEven”;如果是奇数,输出“IsOdd”。
#include
voidmain()
{
inti;
printf("请输入一个整数:
");
scanf("%d",&i);
if(i%2==0)printf("%d%s\n",i,"IsEven");
elseprintf("%d%s\n",i,"IsOdd");
}
(2)求解一元二次方程ax2+bx+c=0。
如果有实根,则输出;否则输出“无实根”(a、b、c由键盘输入)。
#include
#include
voidmain()
{
floata,b,c,d;
doublef,x1,x2;
printf("请输入三个系数:
");
scanf("%f%f%f",&a,&b,&c);
d=b*b-4*a*c;
if(d<0)printf("无实根!
\n");
else
{
f=sqrt(d);
x1=(-b+f)/(2*a);
x2=(-b-f)/(2*a);
if(f==0)printf("x1=x2=%lf\n",x1);
elseprintf("x1=%lf,x2=%lf\n",x1,x2);
}
}
(3)编写可以完成加、减、乘、除、求余运算的简易计算器程序。
#include
#include
#include
voidmain()
{
charch;
inta,b,c;
floatdiv;
printf("\t\t简易计算器\n\n");
printf("\t1.加法运算2.减法运算\n\n");
printf("\t3.乘法运算4.除法运算\n\n");
printf("\t5.求余运算0.减法运算\n\n");
printf("\t请选择(0-5):
");
ch=getche();
switch(ch)
{
case'0':
exit(0);
case'1':
printf("\n\n请输入两个整数:
");
scanf("%d%d",&a,&b);
c=a+b;
printf("%d+%d=%d\n",a,b,c);
break;
case'2':
printf("\n\n请输入两个整数:
");
scanf("%d%d",&a,&b);
c=a-b;
printf("%d-%d=%d\n",a,b,c);
break;
case'3':
printf("\n\n请输入两个整数:
");
scanf("%d%d",&a,&b);
c=a*b;
printf("%d*%d=%d\n",a,b,c);
break;
case'4':
printf("\n\n请输入两个整数:
");
scanf("%d%d",&a,&b);
div=(float)a/b;
printf("%d/%d=%f\n",a,b,div);
break;
case'5':
printf("\n\n请输入两个整数:
");
scanf("%d%d",&a,&b);
c=a%b;
printf("%d%%%d=%d\n",a,b,c);
break;
default:
printf("\n\n\t选择错误!
\n");
}
}
(4)某商场给顾客购物的折扣率如下:
购物金额<200元不打折
200元<=购物金额<500元9折
500元<=购物金额<1000元8折
购物金额>=1000元7.5折
输入一个购物金额,输出打折率、购物实际付款金额。
要求:
分别用if语句和switch语句两种方法完成编程。
方法一:
用if语句
#include
voidmain()
{
floatgwje;
printf("请输入购物金额:
");
scanf("%f",&gwje);
if(gwje<200)printf("折扣率为0,实际应付金额为:
%f\n",gwje);
elseif(gwje>=200&&gwje<500)
printf("折扣率为9折,实际应付金额为:
%f\n",gwje*0.9);
elseif(gwje>=500&&gwje<1000)
printf("折扣率为8折,实际应付金额为:
%f\n",gwje*0.8);
elseprintf("折扣率为7.5折,实际应付金额为:
%f\n",gwje*0.75);
}
方法二:
用进制switch语句
#include
voidmain()
{
floatgwje,zk,fkje;
intn;
printf("请输入购物金额:
");
scanf("%f",&gwje);
n=(int)gwje/100;
switch(n)
{
case0:
case1:
zk=1;
break;
case2:
case3:
case4:
zk=0.9;
break;
case5:
case6:
case7:
case8:
case9:
zk=0.8;
break;
default:
zk=0.75;
}
fkje=gwje*zk;
printf("折扣率为:
%f,应付购物金额为:
%f\n",zk,fkje);
}
(5)某市出租车计费,起步价8元,前3km不计费;超过3km但不足20km,按单程1.4元/km计费;从20km开始,一律按单程1.0元/km计费;实际行驶里程不足1km的按1km计费。
请为出租车写一个程序,当输入实际里程时,立即输出乘客应付的出租车费。
#include
voidmain()
{
intjl;
printf("请输入实际里程(公里):
");
scanf("%d",&jl);
if(jl<=3)printf("应付车费为:
%f元\n",8);
elseif(jl>3&&jl<20)
printf("应付车费为:
%f元\n",8+(jl-3)*1.4);
elseprintf("应付车费为:
%f元\n",8+17*1.4+(jl-20)*1);
}
模块4循环结构程序设计
1.分析下列程序的运行结果
(1)#include
voidmain()
{
intx,n=0;
floatsum=0,ave;
printf("inputscores:
");
scanf("%d",&x);
while(x!
=-1)
{
sum+=x;
n++;
scanf("%d",&x);
}
ave=sum/n;
printf("averagescore=%.2f\n",ave);
}
程序的运行结果:
(2)#include
voidmain()
{
intn=0,s=0;
do
{
n=n+1;
s=s+n;
}while(s<200);
printf("n=%d,sum=%d\n",n-1,s-n);
}
程序的运行结果:
(3)#include
voidmain()
{
floatx,min;
inti;
scanf("%f",&x);
min=x;
for(i=1;i<5;i++)
{
scanf("%f",&x);
if(x}
printf("min=%f\n",min);
}
程序的运行结果:
(4)#include
voidmain()
{
inti,j;
for(i=1;i<=5;i++)
{
for(j=1;j<=20-i;j++)
printf("");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
}
程序的运行结果:
2.编程实现以下功能
(1)编写程序,将1~100之间个位数是6的数据输出。
#include
voidmain()
{
inti,k=0;
for(i=1;i<=100;i++)
if(i%10==6)
{
printf("%3d",i);
k++;
if(k%10==0)printf("\n");
}
printf("\n");
}
(2)从键盘上连续输入字符,统计其中大写字母的个数,直到输入换行符结束。
#include
voidmain()
{
intn=0;
charc;
printf("请输入一串字符,以回车结束:
");
while((c=getchar())!
='\n')
{
if((c>='A')&&(c<='Z'))
n++;
}
printf("大写字母有%d个。
\n",n);
}
(3)输入5位同学3门课程成绩,分别计算并输出每位同学3门课程成绩的平均分。
#include
voidmain()
{
intn;
floatcj1,cj2,cj3,pjf=0;
for(n=1;n<=5;n++)
{
printf("请输入第%d位学生的三门课成绩:
",n);
scanf("%f%f%f",&cj1,&cj2,&cj3);
pjf=(cj1+cj2+cj3)/3;
printf("第%d位学生的平均成绩是%f分。
\n\n",n,pjf);
}
}
(4)100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马两匹驮1担,试编程计算大、中、小马的数目。
#include
voidmain()
{
inti,j;
for(i=0;i<34;i++)/*大马*/
for(j=0;j<(100-i*3)/2+1;j++)/*中马*/
if((100-i-j)%2==0&&3*i+2*j+(100-i-j)/2==100)
printf("大马%d匹,中马%d匹,小马%d匹\n\n",i,j,100-i-j);
}
(5)编写程序,判断从键盘输入的自然数是否为素数(质数)。
说明:
1)所谓素数就是只能被1和它自身整除的大于1的整数。
2)要判断n是否为素数,就要用2、3、…、n-1分别去除n,如果都不能被整除,则n就是素数,正常退出循环;如果其中某个数被n整除,则n不是素数,需要退出循环。
#include
voidmain()
{
inti,num;
printf("请输入一个自然数:
");
scanf("%d",&num);
if(num<=1)printf("%d为非素数",num);
else
{
for(i=2;i{
if(num%i==0)break;
}
if(i==num)
printf("%d为素数\n",num);
elseprintf("%d为非素数\n",num);
}
}
模块5数组
1.分析下列程序的运行结果
(1)#include
voidmain()
{
inta[]={1,2,3,4},i,s=0,j=1;
for(i=3;i>=0;i--)
{
s=s+a[i]*j;
j=j*10;
}
printf(“s=%d\n”,s);
}
程序的运行结果:
(2)#include
voidmain()
{
inti,j,s=0;
inta[3][3]={1,2,3,4,5,6,7,8,9};
s=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
s=s+a[i][i];
printf("s=%d\n",s);
}
程序的运行结果:
(3)#include
voidmain()
{
charch[7]={"65ab21"};
inti,s=0;
for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)
s=10*s+ch[i]-'0';
printf("%d\n",s);
}
程序的运行结果:
(4)运行时输入“Hello!
”
#include
voidmain()
{
charss[10]="1,2,3,4,5";
gets(ss);
strcat(ss,"6789");
printf("%s\n",ss);
}
程序的运行结