1
字节 二进制
0
1
无表达式,不能解,如有则按C语言运算规则来计算,整型与双精度的一起运算要先换算成双精度的
x(x(x(x(x(x(5x+3)-4)+2)+1)-6)+1)+10
二进制 ASCII
1,-2
没有定义j,无法运行
================================================
分都没有还想让人给你答,就想不劳而获,学习诗歌循序渐进的过程,你现在不学,将来会后悔的
首先,你要先明白,这个程序有两部分组成:函数fun(..)和主函数main();main()调用fun(..)函数实现算法运算。
首先介绍主函数main():主要负责打印输出结果,for循环由k控制,连着调用fun(..)函数两次,并打印。
fun(..)函数:实现算法运算。
第一次调用:x == 1(参数a的值), z == 4(在z++后), y==1(在y++后),所以此时返回值(x + y + z) = 6
第二次调用:x == 1(参数a的值), z == 5(在第一次z++后,本次有执行了一次z++), y==2(在第一次y++后,本次有执行了一次y++),所以此时返回值(x + y + z) = 8
直接运行了一次你的代码,输出结果如下:
注意事项以及建议:
1、这个道题目我觉得是对static的考察。
2、static 修改的变量在整个程序生命周期内只会被定义一次,并且在程序生命周期结束前,其上次的运行结果会被保存,供下次使用。
3、在fun(..)函数中, y,z是static类型。
如果以上问题对你有帮助,请采纳一下,谢谢。
#include<stdio.h>
void
input_data(int
*l,int
*r,int
data[100][100])
{
int
i,j,k
printf("输入矩阵行数:")
scanf("%d",l)
printf("输入矩阵列数:")
scanf("%d",r)
printf("按行输入数据,数据间用空格间隔:\n")
for(i=0i<*li++)
for(j=0j<*rj++)
scanf("%d",&data[i][j])
}
int
add_subtra(int
m1[100][100],int
l1,int
r1,
int
m2[100][100],int
l2,int
r2,char
m,int
rm[100][100])
{
int
i,j
if(l1!=l2
||
r1!=r2)
{
printf("矩阵数据错误1.\n")
return
}
if(m=='+')
for(i=0i<l1i++)
for(j=0j<r1j++)
rm[i][j]=m1[i][j]+m2[i][j]
else
for(i=0i<l1i++)
for(j=0j<r1j++)
rm[i][j]=m1[i][j]-m2[i][j]
}
int
mul(int
m1[100][100],int
l1,int
r1,
int
m2[100][100],int
l2,int
r2,int
m[100][100])
{
int
i,j,k
if(l1!=r2
)
{
printf("矩阵数据错误2.\n")
return
}
for(i=0i<l1i++)
for(j=0j<r2j++)
{
m[i][j]=0
for(k=0k<r1k++)
m[i][j]+=m1[i][k]*m2[k][j]
}
}
int
output(int
m[100][100],int
l,int
r)
{
int
i,j
for(i=0i<li++)
{
for(j=0j<rj++)
printf("%3d
",m[i][j])
printf("\n")
}
}
int
main()
{
int
d1[100][100],d2[100][100],d[100][100]
int
l1,r1,l2,r2
int
i,j,k
char
mark[2]
printf("输入第一个矩阵数据:\n")
input_data(&l1,&r1,d1)
printf("输入的第一个矩阵:\n")
output(d1,l1,r1)
printf("输入第二个矩阵数据:\n")
input_data(&l2,&r2,d2)
printf("输入的第二个矩阵:\n")
output(d2,l2,r2)
printf("指定运算符(+/-/*):")
scanf("%s",mark)
while(mark[0]!='+'
&&
mark[0]!='-'
&&
mark[0]!='*')
{
printf("符号错误请重新输入(+/-/*):")
scanf("%s",mark)
}
switch(mark[0])
{
case
'+':
case
'-':
add_subtra(d1,l1,r1,d2,l2,r2,mark[0],d)
break
case
'*':
mul(d1,l1,r1,d2,l2,r2,d)
break
}
//output(d1,l1,r1)
//output(d2,l2,r2)
printf("运算:%c,计算结果为:\n",mark[0])
output(d,l1,r2)
system("pause")
}
两个运算矩阵可以是大小不同的,
输出结果由被乘数矩阵的行和乘数矩阵的列决定,
你要求的输出格式比较烦,没时间不够啦!有时间再玩吧。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)