c语言 这个代码为什么错了? 由键盘输入一个3*4(3行四列)的矩阵,要求输出它的转置矩列。
# include
int main(void)
{
int a[3][4] = {11,12,13,14,21,22,23,24,31,32,33,34};
int b[4][3];
int i, j;
for(i=0; i<4; i++) //转置数组;
for(j=0; j<3; j++)
b[i][j] = a[j][i];
for(i=3; i>=0; i--) //反向输出转置后的数组;
{
for(j=2; j>=0; j--)
printf("%5d", b[i][j]);
putchar('
');
}
return 0;
}
扩展资料include用法:
#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。
插入头文件的内容
#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:
1、#include
2、#include"文件名"
如果需要包含标准库头文件或者实现版本所提供的头文件,应该使用第一种格式。如下例所示:
#include<math.h>//一些数学函数的原型,以及相关的类型和宏
如果需要包含针对程序所开发的源文件,则应该使用第二种格式。
采用#include命令所插入的文件,通常文件扩展名是.h,文件包括函数原型、宏定义和类型定义。只要使用#include命令,这些定义就可被任何源文件使用。
#include
int main()
{
int a[3][3],(*p)[3],i,j,temp;//q指针是多余的
printf("请输入3*3矩阵:
");
p=a;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",(*(p+i)+j));//这里多了一个*号
for(i=0;i<3;i++)
for(j=0;j<i;j++) //j应该是小于i
{temp=*(*(p+i)+j); //这里面是两个值交换
*(*(p+i)+j)=*(*(p+j)+i);
*(*(p+j)+i)=temp;
}
for(i=0;i<3;i++) //输出我帮你改的容易看一点
for(j=0;j<3;j++)
printf("%d",*(*(p+i)+j));
printf("
");
}
return 0;
}
错误有2:
一是输出的是元素的地址,而不是元素的值;
二是输出的各元素之间没有留出空格,会导致各数字相连,输出失败。
程序代码已经修改完成如下:
#include"stdio.h"
int main()
{ int i,j;
int a[3][4],b[4][3];
for(i=0; i<3; i++)
{ for(j=0; j<4; j++)
{ scanf("%d",&a[i][j]);
b[j][i]=a[i][j];
}
}
for(i=0; i<4; i++)
{ for(j=0; j<3; j++)
printf("%3d",b[i][j]);
printf("\n");
}
return 0;
}
德店亚甲: 把开头的#define MAX=100 改成 #define MAX 100就对了,或者改成const int MAX=100;在C++也能通过,这个代码把这俩混一块用,就错了.
乳山市18220237846: C语言,这个代码为什么错? - ?
德店亚甲: s=s+m%10*n^i; //C里面的^不是次方,是异或 改成 s = s+ m%10*pow(n, i);
乳山市18220237846: C语言问题,请问这段代码为什么错了? char c[]; c[]={"china"}; - ?
德店亚甲: 呵呵呵.想必楼主还不了解字符串初始化的问题吧.因为C语言在编译的时候就要为变量(本题的c数组)分配连续的空间地址.而你的ch[]并没有确定数字,意思是系统并不知道你要分配的内存大小.正确的赋值方式只能是这样的. char c[]={"china"}; 这样系统就会给c数组分配连续6个字符的内存空间(最后加一个结束符\0) 或者可以这样char c[6]; 再用scanf %s 对其赋值 不明白可以追问
乳山市18220237846: c语言问题.不懂,为什么错了? - ?
德店亚甲: 您好,#include int main(){ float YZC(float); float JXZC(float); float YZTMJ(float,float); float r,a,p,h,A,B,C; scanf("%f,%f,%f,%f",&r,&a,...
乳山市18220237846: C语言问题:这道代码错在哪里,详细解答 - ?
德店亚甲: for(i=0;i这里末尾不能加;,加了就表示这是一个完整的循环,后面的语句和这个循环没关系了.while也是个循环,你这里应该用if 数组在调用时只要数组名就行了,把printf里面的a[N]改成a 正确代码如下:#include #include #define N 100 main() { int i=0,b=0,c=0; char a[N]=""; gets(a); b=strlen(a); for(i=0;iif(a[i]!=a[b-i-1]) //if { printf("%s不是回文",a);//a break; } printf("%s是回文",a); printf("\n"); }
乳山市18220237846: C语言编程题代码为什么错的 - ?
德店亚甲: for(i=0;i
乳山市18220237846: c语言编程的代码没有错,为什么运行就错了 - ?
德店亚甲: 如果代码本身没有错误,那么可能就是软件的配置没有弄好,比如各种文件路径等!
乳山市18220237846: 为什么c语言一直显示错误.. - ?
德店亚甲: 光看这两行代码,是没有错的,C语言的显示错误没有Java友好,有可能一个地方的错误会导致显示许多其他没错地方有错,所以,最好是能给出你的所有源代码,才能分析出哪里出错
乳山市18220237846: 编程初学者..C语言的这个代码哪里错了???怎么改正?
德店亚甲: EOF不是你那么用的,它是在文件操作时用的,而且是以文本方式打开的文件才能用这个EOF,如果是以二进制方式打开的文件,只能用feof()函数来判断是否文件到了末尾
乳山市18220237846: 为什么这个c语言编辑错误,错在哪儿! - ?
德店亚甲: 函数的声明不应该放在main函数里面,而且你max函数也没有定义w和返回值,另外逻辑语句也写得不对,应该如下: #include <stdio.h> int max(int x,int y,int z); void main() {int a,b,c,d;scanf("%d,%d,%d",&a,&b,&c);d=max(a,b,c);printf("...