本文目录一览:
- 1、C语言 将一个4*4的二维数组的周边元素置为0.
- 2、c语言 一个二维数组 如何设定[0][b]=0,[a][0]=0 而不使得所有数据都为零
- 3、c语言中怎么给一个行和列都是100的二维数组都赋0值
- 4、C语言怎么创建一个二维数组?
- 5、用c++将二维数组(5行5列)的右上半部分置零。
- 6、c语言二维数组
C语言 将一个4*4的二维数组的周边元素置为0.
#include stdio.h
#include string.h
#define SIZE_ 4
void fun(int a[][SIZE_])
{
int(*w)[SIZE_] = a;
for (int i = 0; i SIZE_; i++)
{
if (i == 0 || i == SIZE_ - 1)
memset(w, 0, sizeof(*w));
else
{
(*w)[0] = 0;
(*w)[SIZE_ - 1] = 0;
}
w++;
}
}
int main()
{
int a[SIZE_][SIZE_] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}};
fun(a);
for (int i = 0; i SIZE_; i++)
{
for (int i1 = 0; i1 SIZE_; i1++)
{
printf("%d ", a[i][i1]);
}
printf("\n");
}
return 0;
}
c语言 一个二维数组 如何设定[0][b]=0,[a][0]=0 而不使得所有数据都为零
不知你用的什么编译器,不是VC,在VC中不允许中间声明变量,只能在函数开始时声明变量。有的编译器的C版本可以在中间定义变量。
#include stdio.h
#include conio.h
#define note 4
#define time 10
#define k 1.0
#define c 2.0
#define p 5.0
#define t 0.1
#define x 0.33
void main()
{
float r=(k*t)/(c*p*x*x);
float temp[note][time]={0};
int a,b,j,m,i,n;
for(a=0;anote;a++)
{
temp[a][0]=0;
}
//就是这里 我想设置[0][b]=0,[a][0]=0 可是这个代码出来后全都是零 除了[note-1][b]=100 我猜想问题出在重复定义了temp[a][0]=0;temp[0][b]=0;但是不会改 求大神指教。。。
for(b=0;btime;b++)
{
temp[0][b]=0;
temp[note-1][b]=100;
}//边界条件(T(1.0,t)=100)
for(j=1;j=time;j++)
{
for(i=1;i=note-2;i++)
{
temp[i][j]=r*(temp[i+1][j-1]-2*temp[i][j-1]+temp[i-1][j-1])+temp[i][j-1];
}
}//运算公式
printf("There are %d note\nthe temp of the notes is((note,time)):\n",note,time);
for(m=0;m=note-1;m++)
{
for(n=0;ntime;n++)
{
printf("(%d,%d)=%.2f\n",m,n,temp[m][n]);
}
printf("\n");
}
system("pause");
}
我的结果如下没看出什么问题
c语言中怎么给一个行和列都是100的二维数组都赋0值
有两种方法可以做到。
一、循环赋值。
对每一项分别赋值为0。对于二维数组一般用双重循环,实际上用单重循环也可以,效率上并无区别。
参考代码:
TYPE a[100][100];
int i,j;
for(i = 0; i 100; i ++)
for(j = 0; j 100; j ++)//双重循环遍历。
a[i][j] = 0; //每个赋值为0。
二、整体置零。
在C库函数中,有memset这一个函数,形式为
/* Set N bytes of S to C. */
void *memset (void *s, int c, size_t n);
功能为,在地址s指向的内存单元开始,将c个字节的空间,每个都赋值为c。
这个函数是按字节赋值的,所以对于赋值0值,可以直接将整个内存空间清零。
参考代码:
TYPE a[100][100];
memset(a, 0, sizeof(a));//整体清0.
第一种方法更具通用性,后一种方法不是永远适合,但在可以用memset的情况下,后一种方法更高效。
C语言怎么创建一个二维数组?
C语言中,如何手动输入二维数组?c语言的数组是非常重要的内容,特别是二维数组的内容,所以今天就由小编来为大家介绍c语言怎么创建一个二维数组。
工具原料c语言电脑
方法/步骤分步阅读
1
/6
第一首先在电脑上打开c语言编程软件。
然后创建项目。
2
/6
第二然后导入stdio.h和stdlib包。
再加入malloc包。
3
/6
第三然后定义五个参数。
再创建其中两个参数的空间。
4
/6
第四然后用for语句进行循环。
再用scanf语句进行接收输入到二维数组。。
5
/6
第五然后用两个for语言循环。
再输出二维数组的数值。
6
/6
第六然后用printf语句进行数据输出分格。
这样一个二维数组就创建成功了。
注意事项
个人经验,仅供参考。
内容仅供参考并受版权保护
扩展内容:
二维数组:
二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,类型说明符 数组名[常量表达式][常量表达式]。二维数组又称为矩阵,行列数相等的矩阵称为方阵。对称矩阵a[i][j] = a[j][i],对角矩阵:n阶方阵主对角线外都是零元素。
二维数组A[m][n],这是一个m行,n列的二维数组。设a[p][q]为A的第一个元素,即二维数组的行下标从p到m+p,列下标从q到n+q,按“行优先顺序”存储时则元素a[i][j]的地址计算为:LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) * n + (j − q)) * t,按“列优先顺序”存储时,地址计算为:LOC(a[i][j]) = LOC(a[p][q]) + ((j − q) * m + (i − p)) * t,存放该数组至少需要的单元数为(m-p+1) * (n-q+1) * t 个字节。
用c++将二维数组(5行5列)的右上半部分置零。
用c++将二维数组的右上半部分置零需要编程中输入二维数组值,可以先自定义一个函数,用函数实现数组值的输入,具体方法为:
1、首先,定义一个常量SIZE,控制数组大小。
2、定义一个自定义函数,用来输入二维数组各元素的值。
3、用一个二重循环,输入二维数组的值。
4、主函数中,定义两个整型变量m和n,保存数组的行和列。
5、接着,定义一个二维数组。
6、输入数组的行列数,保存在变量m和n中。
7、运行程序,在计算机中输入一个二维数组,电脑就会自动将其读入并输出。
注意事项:
当前阶段,在编程领域中,C语言的运用非常之多,它兼顾了高级语言和汇编语言的优点,相较于其它编程语言具有较大优势。计算机系统设计以及应用程序编写是C语言应用的两大领域。同时,C语言的普适较强,在许多计算机操作系统中都能够得到适用,且效率显著。
c语言二维数组
这个就是指针数组和数组指针的区别了,我当年也在这里转了很久,希望我下面所说得可以帮到你。
首先,明确编译器是怎么识别*s[]和(*s)[]两种形式的代码的。对于*s[],编译器会以默认的右结合的方式进行识别,所以首先识别s[],这是一个数组,然后再识别*,说明这个数组的元素都是指针。所以最后的结果就是:这是一个“以指针为元素的数组”,简称指针数组。而对于(*s)[],由于()的优先级高于*,所以编译器会先识别()里面的,也就是先识别*s,所以它是一个指针,然后()说明这个指针指向的是一个数组,所以最后的结果是:这是一个“指向数组的指针”,简称数组指针。
好吧,我承认一点,就是这两个东西看起来复杂,但是其实用起来区别不大,最本质的东西就是,指针数组用到多个指针,数组指针就完全是一个指针跑天下。
看下面一段代码(我偷懒用C++写的,反正这个不是重点):
#include
using
namespace
std;
int
main()
{
//指针数组
*a[2]
int
t1[3]
=
{0,1,2};
int
t2[3]
=
{3,4,5};
int
t3[3]
=
{6,7,8};
int
*a[3];
a[0]
=
t1;
//一个指针赋值
a[1]
=
t2;
//第二个指针赋值
a[2]
=
t3;
//第三个指针赋值
//数组指针
(*b)[3]
int
(*b)[3]
=
new
int[3][3];
for(int
i=0;i3;i++)
for(int
j=0;j3;j++)
*(*(b+i)+j)
=
i*3+j;
//一个指针跑天下
cout
*((*b)+1)
"
"
*(*(b+1))
endl;
system("pause");
return
0;
}
最后我想说,其实这个做题的时候有用,自己写的时候还是尽量直接用int[n][m]的方式比较方便,稍微浪费点空间问题不大,重要的是看起来好看,不容易出错。