#include<math.h>
int main()
{ double x
scanf("%lf",&x)
printf("%g\n",sqrt(x))
return 0
}
#include <stdio.h>#define MAX 20/* userCode(<100字符): 自定义函数之原型声明 */
void rotate( int (*arrA)[MAX], int (*arrB)[MAX], int m, int n)
int main(void)
{
int arrA[MAX][MAX], arrB[MAX][MAX], i, j, m, n
printf("请输入 m n: ")
scanf("%d %d", &m, &n)
printf("请输入 %d 行 %d 列矩阵:\n", m, n)
for (i=0i<mi++)
{
for (j=0j<nj++)
{
scanf("%d", &arrA[i][j])
}
}
rotate(arrA, arrB, m, n)
/* 调用函数进行转置 */
printf("\n转置后的矩阵为:\n")
for (i=0i<ni++)
{
for (j=0j<mj++)
{
printf("%5d ", arrB[i][j])
}
putchar('\n')
}
return 0
}
void rotate( int (*arrA)[MAX], int (*arrB)[MAX], int m, int n)
{
int i = 0
int j = 0
for( i=0i<mi++ )
{
for( j=0j<nj++ )
{
arrB[j][i] = arrA[i][j]
}
}
}
你写的这个程序错误略多,首先用到sqrt()函数需要调用math.h,然后x=0.5*(a+b+c)右边是一个double型,赋给一个整型变量x是不行的,下一行的s同理。解决办法:将x和s直接定义为double型变量。另外,三角形三条边不一定是整数吧,建议定义为float型变量,double型也一样。还有if的用法错误了,if语句后面的语句x=0.5*(a+b+c)后一个分号已经让if结束了。后面的else就变成了一个没有if对应的非法使用,所以这里需要把x=……到printf语句两侧加{ }。最后要指出一个相对低级的错误--! s=sqrt……后面的x(x-a)(x-b)(x-c)中间的乘号*是不能省的。下面是我给你改好的代码,祝你好运。#include<stdio.h>
#include <math.h>
void main()
{
float a,b,c
double x,s
scanf("%f %f %f",&a,&b,&c)
if (a+b>c&&a+c>b&&b+c>a)
{
x=0.5*(a+b+c)
s=sqrt(x*(x-a)*(x-b)*(x-c))
printf("%f\n",s)//'\n'应该知道吧,换行的意思
}
else printf("不能构成三角形\n")
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)