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以内的所有完数