实现一个"可变二维数组",这个二维数组的行数要求用户从键盘输入,每行的元素个数仍由用户从键盘输入. //数组元素值用户可以自定义.最后把二维数组打印出来.不要忘记释放数组内存. /*void main
2013-03-21 20:25
1066 查看
#include <stdio.h>
#include <stdlib.h>
int main()
{
int **a; /*a用于指向动态创建的二维数组*/
int i,j,n,m;
printf("请输入行数:");
fflush(stdout);
scanf("%d",&m);
a=(int **)malloc(sizeof(int *)*m); /*分配m个一唯指针类型空间,用来存放各行的地址*/
if (a==NULL) {
fprintf(stderr,"fail!\n");
return -1;
}
for (i = 0; i<m; i++) { /*为各行分配空间*/
printf("请输入第%d行的元素个数",i+1);
fflush(stdout);
scanf("%d",&n);
a[i]=(int *)malloc(sizeof(int)*(1+n)); /*为第i行分配n+1个int类型的空间,第一个元素用来存放这一行的元素数量*/
if (a[i]==NULL) {
fprintf(stderr,"fail!\n");
return -1;
}
a[i][0]=n;/*将此行的元素数量保存到此行的第一个元素*/
for (j=1; j<=n; j++) { /*为第i行的n个元素赋值*/
a[i][j]=1;
}
}
for (i = 0; i<m; i++) { /*输出这个二维数组的内容*/
for (j=1; j<=a[i][0]; j++) {
printf("%d",a[i][j]);
}
putchar('\n');
}
for (i = 0; i<m; i++) { /*释放为a数组的每一行分配的空间*/
free(a[i]);
}
free(a);/*释放a指针指向的空间*/
return 0;
}
#include <stdlib.h>
int main()
{
int **a; /*a用于指向动态创建的二维数组*/
int i,j,n,m;
printf("请输入行数:");
fflush(stdout);
scanf("%d",&m);
a=(int **)malloc(sizeof(int *)*m); /*分配m个一唯指针类型空间,用来存放各行的地址*/
if (a==NULL) {
fprintf(stderr,"fail!\n");
return -1;
}
for (i = 0; i<m; i++) { /*为各行分配空间*/
printf("请输入第%d行的元素个数",i+1);
fflush(stdout);
scanf("%d",&n);
a[i]=(int *)malloc(sizeof(int)*(1+n)); /*为第i行分配n+1个int类型的空间,第一个元素用来存放这一行的元素数量*/
if (a[i]==NULL) {
fprintf(stderr,"fail!\n");
return -1;
}
a[i][0]=n;/*将此行的元素数量保存到此行的第一个元素*/
for (j=1; j<=n; j++) { /*为第i行的n个元素赋值*/
a[i][j]=1;
}
}
for (i = 0; i<m; i++) { /*输出这个二维数组的内容*/
for (j=1; j<=a[i][0]; j++) {
printf("%d",a[i][j]);
}
putchar('\n');
}
for (i = 0; i<m; i++) { /*释放为a数组的每一行分配的空间*/
free(a[i]);
}
free(a);/*释放a指针指向的空间*/
return 0;
}
相关文章推荐
- 建立一个学生结构数组来记录学生信息(学号ID,姓名和C语言成绩),要求动态建立一个结构数组,数组长度从键盘输入,自行给数组元素赋值并打印学生信息,最后不要忘记释放内存。 结构st
- 编写一个多线程函数实现对数组排序,要求: 1.至少用两个线程 2.数组的元素值可以事先定义好,或者可以从键盘输入(增加一个线程)。 3.用一个线程对数组排序,用另一个线程输出排序结果。 4.保证先排好序,再输出。
- 编程:用java 语言实现,输入一个数,就相应地输出的几维数组!||用1、2、2、3、4、5这六个数字,用java写一个函数,打印出所有不同的排列,要求:"4"不能在第三位,"3"与"5"不能相连
- 在一个长度为10的整形数组中,已经放置好了任意10个整数。要求用户任意输入 一个整数,判断该数字是否在数组中。如果在,删除数组中该元素,并把后面的 元素往前挪。(让空出的位置在最后)
- 互换二维数组的行列。要求数组的行数、列数以及各元素均从键盘输入;输出互换前数组内容和互换后数组内容。(要求循环输入进行测试)Java
- 1、通过函数实现打印*号组成的直角三角形,函数要求传入行数即可。在main 方法中,通过用户输入得到行数,然后调用函数做打印。 三角形样式: * ** *** **** ***** ******
- 要求从键盘输入一个二维数组,然后将该二维数组按从大到小的顺序排列。
- 问题:利用输入输出流重载实现一个整数数组的输入和输出。 要求:输入一个数组大小 及 所有元素的值,排序后输出该数组的所有元素。
- 有15个数按从大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出 “无此数”
- C语言学习8:malloc返回的void*类型指针不可以做更改,free双重释放,二维数组的初始化和打印,a和a[0]和a[0][0]的区别,数组指针(*p)[3],指针数组*a[10],动态内存分配版约瑟夫环,动态分配版去空格和逗号处理,二级指针与二维数组互用
- 【1】 设一个长度为10的整型数组,  0)要求每个元素的值通过scanf输入,输入完成后,  1)请顺序输出这些整数,  2)请倒序输出这些整数,  3)输出这些数中的最大值,最小值
- 编写一个C#程序,要求定义一个行数和列数相等的二维数组, 并执行初始化,然后计算并输出数组两条对角线上的元素之和。
- 写一个方法,参数接收一个String类型的对象,最终可以把这个字符串参数中出现过的每一个字母打印出来 例如: "wwqweqdasdafdsfdsferer" 将来方法接收这个参数后会打印:
- 编写一个程序,这个程序把一个整数数组中的每个元素用逗号连接成一个字符串,例如,根 据内容为[1][2][3]的数组形成内容为"1,2,3"的字符串。
- 现在有一个有序的数组,要求用户输入一个整数放到数组中还保证这个数组是有序的。
- 编写一个C#程序,要求从键盘输入10个数存放在数组中,分别求出最大数和最小数存放在第一第二个元素里
- 已知字母序列【d, g, e, c, f, b, o, a】,请实现一个函数针对输入的一组字符串 input[] = {"bed", "dog", "dear", "eye"},按照字母顺序排序并打印
- 8.不断 要求用户输入一个数字,然后打印这个数字的二倍,当用户输入q的时候程序退出(return)
- 已知字母序列【d, g, e, c, f, b, o, a】,请实现一个函数针对输入的一组字符串 input[] = {"bed", "dog", "dear", "eye"},按照字母顺序排序并打印
- 黑马程序员之C#编程基础学习笔记:不断要求用户输入一个数字,然后打印这个数字的二倍,当用户输入q的时候程序退出。