C语言编程找错 程序停止工作
答案:3 悬赏:20 手机版
解决时间 2021-02-05 17:15
- 提问者网友:相思似海深
- 2021-02-05 00:54
#include
main()
{
int q[4][4];
int a,i,j;
printf("Please input a integer:");
scanf("%d",&a);
init_mx(q[4][4],a);
for(i=0;i<4;i++){
for(j=0;j<4;j++){
printf("%d",q[i][j]);
}}
}
int init_mx(int mx[4][4], int value)
{
int i,j;
for (i=0;i<4;i++){
for (j=0;j<4;j++){
mx[i][j]=value;
}
}
}
麻烦大家帮我看看,我想编写个程序让它输出一个4*4的矩阵,矩阵里的数由使用者输入,为什么这个程序用quincy运行直接停止工作了
程序可以运行,但是我输入一个数按回车,就显示程序停止工作
最佳答案
- 五星知识达人网友:低音帝王
- 2021-02-05 02:30
init_mx函数参数有问题,不是这么用数组作参数的,你想想,数组就是用第一个元素的地址当一个标记,所以涉及到指针,所以你若偏执用函数,就这样用void init_mx(int value int mx[],int N),还要为数组动态分配空间
此外,为什么,你要把a赋给value,再把value赋给数组元素,你看,你调用一次init_mx,只是带入一个value,然后就把value赋给每个数组的元素,这是有问题的。反正就是很混乱。
如果我来做我就这样:定义一个一维数组a[16],用for循环做16次循环,每次输入一个值,这样初始化了数组,并将数存进了数组。输出矩阵,也就是用printf()函数耍点花招,用printf()输出数组元素,输出16次,每4次输出一个换行符,至于矩阵那种感觉,完全可以多输两个空格来实现。话不多说,下面是代码:
int i;
int ex;
int a[16];
for(i=0;i<17,i++)
{
printf("input value%d",i);
scanf("%d",&ex);
a[i]=ex;
}
for(i=0;i<17;i++)
{
printf("%d ",a[i]);
if((i+1)%4==0)
printf("\n");
}
全部回答
- 1楼网友:七十二街
- 2021-02-05 05:07
函数声明没有
- 2楼网友:老鼠爱大米
- 2021-02-05 03:53
程序本身只有点小问题,至于不能达到你的要求,你没有说你要做什么,我也不知道了
void test3(char* str1)
{
char string[10];
if(strlen(str1)<=10) //这里有点问题,应该用if(strlen(str1)<10),因为strcpy会拷贝'\0',可能有隐患
{
strcpy(string, str1);
printf("string[] = %s\n",string);//打印看看,拷贝成功
}
else
{
printf("原字符串太长\n");//给点反馈信息
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯