实验报告二、三、四

输入a,b,c,编程求方程 ax2 + bx + c = 0 的根。

 1#include<stdio.h>
 2#include<math.h>
 3int main()
 4{
 5	int d;  //  
 6	double a, b, c;
 7	scanf("%lf %lf %lf", &a, &b, &c);
 8	double data = b * b - 4 * a * c;
 9	if(data >= 0)
10	{
11		if(data == 0)
12		{
13			printf("该方程的根为: %lf",((-b + sqrt(data)) / -2 * a));	
14		}
15		else
16		{
17			printf("该方程有两个跟: %lf %lf",((-b + sqrt(data)) / -2 * a),((-b - sqrt(data))/ -2 * a));
18		}
19	}
20	else
21	{
22		printf("该方程无解!");
23	}
24	return 0;
25}

已知正方体的棱长为 3.2,求正方体的体积和表面积 (保留 2 位小数)。

1#include<stdio.h>
2#include<math.h>
3int main()
4{
5	double a = 3.2;
6	printf("该正方体的体积为:%.2lf\n", pow(a, 3));
7	printf("该正方体的表面积为:%.2lf\n", 6 * pow(a, 2));
8	return 0;
9}

输入3个整数a、b、c,编程交换他们的值,即把 a 的值给 b ,b 的值给 c , c 的值给 a 。

 1#include <stdio.h>
 2int main( )
 3{	
 4    int a, b, c, t;
 5    scanf("%d %d %d", &a, &b, &c);
 6    t=c;
 7    c=b;
 8    b=a;
 9    a=t;
10    printf("a=%d b=%d c=%d", a, b, c);
11    return 0;
12}

编程将任意输入的小写字母转化成大写字母并输入(要求使用 getchar 和 putchar 函数完成)。

1#include<stdio.h>
2#include<math.h>
3int main()
4{
5	int a;
6	a = getchar();
7	putchar(a - ('a' - 'A'));
8	return 0;
9}

输入三角形的三条边,编程求该三角形的面积。

 1#include <stdio.h>
 2#include <math.h>
 3int main( )
 4{	
 5    // 缺少判断三角形是否合理
 6    float a,b,c,p,s;
 7    scanf("%f %f %f", &a, &b, &c);
 8    p = (a + b + c) / 2;
 9    s=sqrt((p - c) * (p - a) * (p - b) * p);
10    printf("该三角形的面积是:%.2f", s);
11    return 0;
12}

设计一个简单的计算器程序,用户输入运算数和四则运算符,输出计算的结果(请注意处理当输入除数为 0 的错误提示)。示范如下: 输入:5.86 输出:5.86=34.8 输入:9/0 输出:error!除数不能为0!

 1#include<stdio.h>
 2#include<math.h>
 3int main()
 4{
 5	double a, b;
 6	char c;
 7	scanf("%lf%c%lf", &a, &c, &b);
 8	switch(c)
 9	{
10		case '+':
11			printf("%lg%c%lg=%lg\n", a, c, b, a + b);
12			break;				
13		case '-':
14			printf("%lg%c%lg=%lg\n", a, c, b, a - b);
15			break;
16		case '*':
17			printf("%lg%c%lg=%lg\n", a, c, b, a * b);
18			break;
19		case '/':
20			if(b == 0)
21			{
22				printf("error!");
23			}
24			else
25			{
26				printf("%lg%c%lg=%lg\n", a, c, b, a / b);
27			}
28			break;
29	}	
30	return 0;
31}

根据输入的 x 的值求 y 的值,当 x 大于 0 时,y =(x + 1)/(x - 2);当 x 等于 0 或 2 时,y = 0;当 x 小于 0 时,y =(x - 1)/(x - 2)。(注意测试 x 为 2 时程序能否正确执行)

 1#include <stdio.h>                                   
 2int  main()
 3{   
 4	float x;
 5	scanf("%f",&x);
 6	if (x == 0 || x == 2)printf("y=%d\n",0);
 7	else 
 8	{
 9		if(x > 0)printf("y=%.2f\n", (x + 1) / (x - 2));
10		if(x < 0)printf("y=%.2f\n",(x - 1) / (x - 2));
11	}
12	return 0;
13}

编写程序,输入一个不多于 4 位的正整数,完成下列要求: ○1 判断它是几位数,如输入 152,输出 3 ○2 输出每一位的数码,如输入 152,输出 1, 5, 2 ○3 逆序输出这个数,如输入 152,输出 251 输入示例: 152 输出: 152 是 3 位数, 数码是1、5、2,逆序数字是 251

 1#include <stdio.h>  
 2#include <math.h>                             
 3int  main()
 4{   
 5	int a, b, c, i = 0;
 6	scanf("%d",&a);
 7	b = a;
 8	for(i = 1; a >= 10; i++)
 9	{
10		a /= 10;
11		c = i + 1; 
12	}
13	printf("%d是%d位数,",b,i);
14		int sum=0;
15	for (; c >= 0; c--)
16	{	
17		sum += (b % 10) * pow(10 ,c - 1);
18		b /= 10;
19	
20	}
21	c = sum;
22	printf("数码是") ;
23	while(i > 0)
24	{	
25		if (sum > 10) printf("%d、", sum % 10);
26		else printf("%d,", sum % 10);
27		sum /= 10;
28		i--;
29	}
30	printf("逆序数是%d",c); 
31	return 0;
32}

选做题)用 switch 结构编程完成:输入月份数字,输出对应的季节,12 - 2 月是冬季,3 - 5 月是春季,6 - 8 月是夏季,9 - 11 月是秋季。(最好不写 12 个 case 语句,这题是可以用 4 个 case 解决的)

 1#include <stdio.h>  // 数据合理的情况下
 2int main()
 3{
 4	int a,b;
 5	scanf("%d",&a);
 6	b = a / 3;
 7	switch(b)
 8	{
 9		case 1:
10			printf("春季");
11			break;
12		case 2:
13			printf("夏季");
14			break;
15		case 3:
16			printf("秋季");
17			break;
18		default:
19			printf("冬季");
20	}
21	return 0; 
22}

鸡兔同笼:35 个头,94 只脚,问鸡、兔各多少只?(答案,鸡 23 兔 12)

 1#include<stdio.h>
 2int main()
 3{	int head, foot, chicken = 0, rabbit = 0;
 4	printf("请输入头和腿的数量,并用空格隔开:\n");
 5	scanf("%d %d", &head, &foot);
 6	for (chicken=0; chicken <= head; chicken++)
 7	{
 8		for (rabbit=0; rabbit <= head; rabbit++)
 9		{	
10			if(rabbit + chicken == head && rabbit * 4 + chicken * 2 == foot)
11			printf("鸡的数量为:%d只,兔的数量为:%d只\n", chicken, rabbit);
12		}
13		
14	}
15	return 0 ;
16}

计算 1 ~ 100 以内所有含 6 的数的和。

 1#include<stdio.h>
 2int main()
 3{	int sum = 0;
 4	for (int i = 0; i <= 100; i++)
 5	{
 6		if(i % 6 == 0 || i / 10 == 6 || i % 10 == 6)
 7		    sum += i;		
 8	}
 9	printf("%d", sum);
10	return 0 ;
11}

求数列 2 / 1,3 / 2,5 / 3,8 / 5,13 / 8 … 前 20 项之和。(答案,32.660259)

 1#include<stdio.h>
 2int main()
 3{	float sum=0, a, b, count = 1;
 4	for(float a = 2; count <= 20; count++)
 5	{
 6		for (float b = 1; count <= 20; count++)
 7		{
 8			sum += a / b;
 9			a += b;
10			b = a - b;
11		}
12		printf("%f", sum);	
13	}	
14	return 0 ;
15}

验证谷角猜想。日本数学家谷角静夫在研究自然数时发现了一个奇怪现象:对于任意一个自然数 n ,若 n 为偶数,则将其除以 2 ;若 n 为奇数,则将其乘以 3 ,然后再加 1。如此经过有限次运算后,总可以得到自然数 1。人们把谷角静夫的这一发现叫做“谷角猜想”。 要求:编写一个程序,由键盘输入一个自然数 n ,把 n 经过有限次运算后,最终变成自然数 1 的全过程打印出来。

 1#include<stdio.h>
 2int main()
 3{	int n;
 4	scanf("%d", &n);
 5	while(n != 1)
 6	{
 7		if(n % 2 == 1)
 8		{	
 9			n = n * 3 + 1;
10			printf("(n*3)");
11		}
12		else
13		{	
14			n /= 2;
15			printf("(n/2)");
16		}
17	}
18	printf("=%d",n);	
19	return 0 ;
20}

编程输出课本 P161 页编程题第 6 题的图形。

 1#include<stdio.h>
 2int main()
 3{
 4	int n = 7;
 5	for (int i = 1; i <= (n+1)/2; i++)
 6	{
 7			for (int b= 1; b <= n-(2*i-1); b++)
 8			{
 9				printf(" ");
10			}
11			for (int d = 0; d < 2 * i - 1; d++)
12			{
13				printf("* ");
14			}
15		printf("\n");
16	}
17	for (int i = (n - 1) / 2; i >=1; i--)
18	{
19		for (int b = 1; b <= n - (2 * i - 1); b++)
20		{
21			printf(" ");
22		}
23		for (int d = 0; d < 2 * i - 1; d++)
24		{
25			printf("* ");
26		}
27		printf("\n");
28	}
29	return 0;
30}

从键盘输入 6 名学生的 5 门课成绩,分别统计每个学生的平均成绩(不用数组处理)。

 1#include<stdio.h>
 2int main()
 3{	int count = 0;
 4	printf("请输入六名学生的五门成绩,分别用空格隔开:\n");
 5	while(count != 6)
 6	{	int sum = 0, grade = 0;
 7		float average = 0;
 8		for(int i = 1 ; i <= 5; i++)
 9		{
10			scanf("%d", &grade);
11			sum += grade;
12		}
13		average = sum / 5;
14		printf("该学生的平均成绩为:%.2f\n", average);
15		count ++;
16	}
17	return 0 ;
18}

打印乘法口诀表。

 1#include <stdio.h>
 2
 3int main(void)
 4{
 5    int i, j;
 6    for (i = 1; i <= 9; i++) {
 7        for (j = 1; j <= i; j++) {
 8            printf("%dx%d=%2d ", j, i, j * i);
 9        }
10        printf("\n");
11    }
12}