习题2
任务一:
1、以下程序功能为输入圆锥的底面积和半径和高,求表面积和体积。请通过调试方法或编译方法去把错误代码修改正确。
#include <stdio.h>
#define PI 3.1415926
#include <math.h>
void main()
{ double r,h,s,v;
printf("Please input the radius:\n");
scanf("%63lf",&r);
printf("Please input the height:\n");
scanf("%63lf",&h);
s=PI*r*(r+pow(r*r+h*h,0.5));
v=PI*r*r*h;
printf("The area is %lf\nThe volumn is %lf\n",s,v);
}
任务二
2、分析左边程序,第几行输出的数据不正确,总结整型和实型能正确输出的格式符是哪些?
#include <stdio.h>
void main()
{ int x1=2;
long x2=-8;
float y1=8.9;
double y2=9.9;
printf("1:x1=%d,x2=%d\n",x1,x2);
printf("2:x1=%ld,x2=%ld\n",x1,x2);
printf("3:x1=%d,x2=%ld\n",x1,x2);//有问题已改
printf("4:x1=%u,x2=%ld\n",x1,x2);//有问题已改
printf("5:y1=%f,y2=%lf\n",y1,y2);//有问题已改
printf("6:y1=%f,y2=%f\n",y1,y2);
printf("7:y1=%lf,y2=%lf\n",y1,y2);
printf("8:y1=%lf,y2=%lf\n",y1,y2);//有问题已改
}
任务三:
3、以下程序中若输入9876543210则输出x1=98,x2=765,c1=4,c2=1;若输入98 76 543210则输出x1=98,x2=76,c1= ,c2=3;若输入987654 3210则输出x1=98,x2=765,c1=4,c2=2。请根据输入输出写出正确的scanf函数调用语句把程序补充完整。
#include <stdio.h>
void main()
{
int x1,x2;
char c1,c2;
scanf("%2d%3d%3c%c",&x1,&x2,&c1,&c2);
printf("x1=%d,x2=%d,c1=%c,c2=%c\n",x1,x2,c1,c2);
}
任务四:
4.1、编程实现任意输入一个无符号的整数,分别以十进制、八进制、十六进制形式输出,且每个数字输出时都从各个制表区的第一个位置开始输出。
#include <stdio.h>
void main()
{
unsigned int x1;
scanf("%u",&x1);
printf("%u %o %x\n",x1,x1,x1);
}
4.2、编程实现任意输入一个小数,分别输出此小数的整数部分、小数部分以及保留2位小数的结果,并且这三个数用%隔开。
若输入的是56.889,则输出56%0.889000%56.89。
#include <stdio.h>
void main()
{
double x,b;
int a;
scanf("%lf",&x);
a=(int)x;
b=x-a;
printf("%d%%%f%%%.2f\n",a,b,x);
}
4.3、编程输入两个字符分别给变量c1和c2,要求不借助于其他变量的条件下,将变量c1和c2的值互换。
#include <stdio.h>
void main()
{
int c1,c2;
printf("请输入c1和c2的值:");
scanf("%d%d",&c1,&c2);
c1=c1+c2;
c2=c1-c2;
c1=c1-c2;
printf("c1=%d,c2=%d\n",c1,c2);
}
4.4、编程实现鸡兔同笼,已知笼中有头h个,有脚f条,问笼中鸡兔各有多少只?若头10,脚32,则鸡4只,兔6只。
#include <stdio.h>
void main()
{
int h,f,j,t;
printf("请输入头和腿的值:");
scanf("%d %d",&h,&f);
t=(f-(h*2))/2;
j=h-t;
printf("鸡=%d 兔=%d\n",j,t);
}