C语言作业及参考答案
- 格式:docx
- 大小:88.87 KB
- 文档页数:54
C语言及实验作业参考做法
分支程序设计
上机作业:
标题 4.3三角形判断
描述 输入三条边的长,输出这三条边是否构成等边三角形、等腰三角形、直角三角形、普通三角形,还是不能构成三角形
输入数据 整数a,b,c的值
输出数据 等边三角形、等腰三角形、直角三角形、普通三角形,或不能构成三角形
输入示例 5 5 5
输出示例 等边三角形
#include
int main( ) {
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a==b&&b==c) printf("1");
else if(a+b>c&&a+c>b&&b+c>a)
if(a==b||b==c||a==c) printf("2");
else if(a*a+b*b==c*c||b*b+c*c==a*a||a*a+c*c==b*b)
printf("3");
else printf("4");
else printf("5");
return 0;
}
标题 4.5计算函数的值
描述 当x<1时,y=x
当1≤x<10时,y=2x-1
当x≥10时,y=3x-11
输入数据 整数x的值
输出数据 一个整数表示函数的值
输入示例 5
输出示例 y=9
#include
int main()
{ int x,y;
scanf("%d",&x);
if(x<1) y=x;
else if(x<10) y=2*x-1;
else y=3*x-11; printf("%d",y);
return 0;
}
标题 4.6 数的分离
描述 给一个不多于3位的正整数
(1)计算它是几位数
(2)分别打印出每一位数字
(3)逆序打印出各位数字
输入数据 一个不多于3位的正整数
输出数据 位数
从高位到低位的各位数字
从低位到高位的各位数字
输入示例 456
输出示例 3
4 5 6
6 5 4
提示 123/100=
23/10=
123%10=
测试数据1: 678 3 6 7 8 8 7 6
测试数据2: 45 2 4 5 5 4
测试数据3: 8 1 8 8
#include
int main( )
{int p,t,s; int i,bit;
//printf("input a number(0-999):");
scanf("%d",&p);
gewei=p%10; //个位
shiwei=p/10%10; //十位
baiwei=p/100; //百位
if(baiwei) //如果是3位数
{printf("%d\n",3); printf("%d %d %d\n",baiwei,shiwei,gewei);
printf("%d %d %d\n",gewei,shiwei,baiwei);
}
else if(shiwei) //如果是2位数
{printf("%d\n",2);printf("%d %d\n",shiwei,gewei);
printf("%d %d\n",gewei,shiwei);
}
else printf(" %d\n%d\n%d\n",1,gewei,gewei); //是1位数
return 0;
}
标题 4.7输出等级分(用if语言实现) 描述 输入一个百分制成绩,输出对应的等级分
90-100 为 A
80-89 为 B
70-79 为 C
60-69 为 D
0-59 为 E
输入数据 一个整数
输出数据 一个大写字符
输入示例 95
输出示例 A
标题 4.8 计算建筑高度
描述 有4个圆塔,圆心分别为(2,2),(-2,2),(-2,-2),(2,-2),圆半径为1。这4个塔的高度为10m,塔以外无建筑物。
输入任一点的坐标,求该点的建筑高度(塔外高度为0)。
输入数据 以(x,y)形式作为点的坐标输入
输出数据 输出高度
输入示例 (3,1)
输出示例 10
提示 注意输入坐标的格式,括号为半角符号
输入: (0.5,0.7) 输出:0
输入: (2.1,2.3) 输出:10
输入: (-2,-1) 输出:10
输入: (-3,2) 输出:10
#include
main( )
{int x1=2,y1=2;
float x,y;
printf("input the position x & y:"); scanf("(%f,%f)",&x,&y);
x=fabs(x); y=fabs(y);
if((x-x1)*(x-x1)+(y-y1)*(y-y1)<=1)
printf("%d\n",10);
else printf("0\n");
return 0;
}
标题 4.9输出等级分(用switch语言实现)
描述 输入一个百分制成绩,输出对应的等级分
90-100 为 A
80-89 为 B
70-79 为 C
60-69 为 D 0-59 为 E
输入数据 一个整数
输出数据 一个大写字符
输入示例 86
输出示例 B
#include
int main( )
{int score; char grade;
printf("input a score:"); scanf("%d",&score);
switch(score/10)
{case 10:
case 9: grade='A'; break;
case 8: grade='B'; break;
case 7: grade='C'; break;
case 6: grade='D'; break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0: grade='E'; break;
}
printf("his score class is %c\n",grade);
return 0;
}
笔头作业:
1.输入4个整数,按从小到大的顺序输出
2.根据月份判断季节。输入月份,输出春/夏/秋/冬。要求用switch语言实现
3.学生学习两门课:必修课成绩为course1,选修课成绩为course2,若两门都及格,打印pass,必修课不及格,打印fail
4.从键盘输入一个年份,判该年是否是闰年,是闰年就输出yes,否则输出no
5.从键盘输入一个字符,判断该字符是数字字符、大写字母、小写字母、空格还是其他字符。
6.商店卖西瓜,10斤以上每斤0.8元, 8斤以上每斤0.6元, 6斤以上每斤0.4元,4斤以上每斤0.3元, 4斤以下每斤0.15元,输入西瓜重量和所付的钱数,输出应付的货款和应找的钱数
循环程序设计
上机作业:
标题 5.2 统计一行字符中各类字符的个数
描述 输入一行字符,统计其中英文字母、空格、数字和其他字符的个数
输入数据 一行以回车结束的字符 输出数据 四个分别表示英文字母、空格、数字和其他字符的个数的整数
输入示例 123 abcd****ABCD
输出示例 8 2 3 4
#include "stdio.h"
main()
{int num0=0,numa=0,num=0,other=0;char ch;
//num0:0-9; numa:alpha; num:space;
scanf("%c",&ch);
while (ch!='\n')
{ if (ch>='0'&&ch<='9') num0++;
else if (ch>='a'&&ch<='z'||ch>='A'&&ch<='Z') numa++;
else if (ch==' ') num++;
else other++;
scanf("%c",&ch);
}
printf("%d %d %d %d",numa,num,num0,other);
return 0;
}
标题 5.3 计算aaaaa
描述 计算S(n)=a+aa+aaa+...... 其中a是一个数字
输入数据 两个分别表示a和n的整数
输出数据 一个表示S(n)的整数
输入示例 3 5
输出示例 37035
提示 2*10+2= 22*10+2=
#include
int main()
{int a,n,i; long all=0,t;
scanf("%d %d",&a,&n);
t=a;
for (i=1; i<=n; i++)
{all=all+t;
t=t*10+a;
}
printf("%d",all);
return 0;
}
标题 5.6 找出1000以内的所有完数
描述 一个数等于它的所有因子之和,这个数就称为"完数".找出1000以内的所有完数