精华内容
下载资源
问答
  • 要一次性全部读取这个数组,不需要改变数组。 比如我有个数组a【10】。我想一次性子函数中读取a从1到10的所有字符。如果不通过指针,可以用变元传递嘛
  • 主函数负责结构体数组定义和输入。 #include"stdio.h" #define N 1 struct student { char StuID[15]; char Name[10]; float Grade[3]; }stu[N]; float Average(struct student stu, int n); float Average(int...

    定义结构体,包含学生学号,姓名和3门课成绩。定义一个函数,求若干学生的平均成绩。主函数负责结构体数组的定义和输入。

    #include"stdio.h"
    #define N 1
    struct student
    {
    	char StuID[15];
    	char Name[10];
    	float Grade[3];
    }stu[N];
    float Average(struct student stu, int n);
    float Average(int n);
    int main()
    {
    	int i, j;
    	printf("请输入学生的ID、名字:\n");
    	for (i = 0; i < N; i++)
    	{
    		scanf("%s %s", &stu[i].StuID, &stu[i].Name);
    		printf("请输入三门课的成绩:");
    		for (j = 0; j < 3; j++)
    		{
    			scanf("%f", &stu[i].Grade[j]);
    		}
    	}
    	for (i = 0; i < N; i++)
    	{
    		printf("%s %s %f\n", stu[i].StuID, stu[i].Name, Average(3));
    	}
    	return 0;
    }
    float Average(int n)
    {
    	int i, j;
    	float sum=0;
    	for (i = 0; i < N; i++)
    	{
    		for (j = 0; j < n; j++)
    		{
    			sum = sum + stu[i].Grade[j];
    		}
    	}
    	return sum / n;
    }
    
    
    展开全文
  • #include<stdio.h> int add(int *a,int *b) { //两个数相加arr[1]+arr[2],将结果存在arr[1]中 } void main() { int arr[3]={1}; int *p=&arr[1]; int *q=&arr[2]; ...}
  • #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #define N 6 void bubblesort(int *p)//从小到大排序 { for (int i = 0; i ; i++) for (int j = N - 1;... if (*(p
    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    #include<string.h>
    #include<Windows.h>
    
    #define N 6
    void bubblesort(int *p)//从小到大排序
    {
    	for (int i = 0; i < N; i++)
    		for (int j = N - 1; j >= i; j--)
    		{
    			if (*(p + j - 1)>*(p + j))
    			{
    				static int k = 0;
    				k = *(p + j - 1);
    				*(p + j - 1) = *(p + j);
    				*(p + j) = k;
    			}
    		}
    		for (int i = 0; i< N; i++)
    		{
    			printf("%-3d", *(p + i));
    		}
    }
    void main()
    {
    	srand((unsigned)time(NULL));
    	int a[N] = { rand() % 100, rand() % 100, rand() % 100, rand() % 100, rand() % 100, rand() % 100 };
    	//int a[N] = { 1, 1, 2, 3, 6, 3 };
    	bubblesort(a);
    	system("pause");
    }
    

    展开全文
  • Java二维数组如何做形参,二维数组大小函数本身里定义,形参怎么写?
  • 已经main()中定义了一个长度为20的数组,想在定义的函数中给数组赋值,但一直报错,请问如何修改? ``` void arrin(int *arr) { int i; arr[]={1,1,2,2,3,3,4,5,6,5,6,7,7,8,8,9,9,0,0}; for(i=0;i;i++) ...
  • 程序的功能:主函数中通过二维数组...一、在主函数定义二维数组和指针数组,并初始化 int main(void) { char *p[] = { "11111", "22222", "33333" }; char str[][6] = { "aaaaa", "bbbbb", "ccccc" }; char **p1
    程序的功能:在主函数中通过二维数组和指针的定义的字符串,在被调用函数中分配动态内存,并排序。
    一、在主函数定义二维数组和指针数组,并初始化
    int main(void)
    {
        char *p[] = { "11111", "22222", "33333" };
        char str[][6] = { "aaaaa", "bbbbb", "ccccc" };
        char **p1 = NULL;
    
        int len1, len2, len3;
        len1 = sizeof(p)/sizeof(*p);
        len2 = 3;
    
        int ret = sort(p, len1, str, len2, &p1, &len3);
        for (int i = 0; i < len3; i++)
        {
            cout << p1[i] << endl;
        }
        free2(&p1, len3);//调用自定义的释放内存函数 

    return 0;
    system(
    "pause");
    }

    二、被调用函数。在主函数的用的二级指针定义的字符串,那么在被调用函数中用三级指针接过来,先要在堆中动态分配一个二维的(len1+len2)大小的指针长度的内存,在分别分配len1大小的内存用来放字符串1的数据和len2大小的内存用来存字符串2的数据。对所有存入的数据进行排序。

    int sort(char **p, int len1, char (*str)[6], int len2, char ***p1, int *len3)
    {
        char** tempP = (char**)malloc(sizeof(char*)*(len1 + len2));
        if (tempP == NULL)
        {
            return -1;
        }
    
        int i = 0;
        int strLen = 0;
        for (; i < len1; i++)
        {
            strLen = strlen(p[i]) + 1;
            tempP[i] = (char*)malloc(sizeof(strLen));
            if (tempP[i] == NULL)
            {
                return -2;
            }
            strcpy(tempP[i], p[i]);
        }
    
        for (int j = 0; j < len2; j++,i++)
        {
            strLen = strlen(str[j]) + 1;
            tempP[i] = (char*)malloc(sizeof(strLen));
            if (tempP[i] == NULL)
            {
                return -3;
            }
            strcpy(tempP[i], str[j]);
        }
        //排序
        strLen = len1 + len2;
        char *myp = NULL;
        for (int x = 0; x < strLen; x++)
        {
            for (int y = x+1; y < strLen; y++)
            {
                if (strcmp(tempP[x], tempP[y])>0)
                {
                    //交换指针指向,也可以用交换内容
                    myp = tempP[x];
                    tempP[x] = tempP[y];
                    tempP[y] = myp;
                }
            }
        }
        *len3 = strLen;
        *p1 = tempP;
      
        return 0;
    }

    三、分配了动态内存那么就要释放内存。在主函数中调用释放内存的函数,释放内存函数如下:

    void free2(char ***myp, int len)
    {
        char **p = NULL;
        if (myp == NULL)
        {
            return;
        }
    
        p = *myp;//还原成二级指针
        if (p == NULL)
        {
            return;
        }
    
        for (int i = 0; i < len; i++)
        {
            free(p[i]);
        }
    
        free(p);
        *myp = NULL;
    }
    
    
    
    

    不知道是什么原因导致的,如果有大神知道还望指导一下。

     

    编译环境:win7+VS2013

    展开全文
  • 程序的功能:主函数中通过二维数组...一、在主函数定义二维数组和指针数组,并初始化 int main(void) { char *p[] = { "11111", "22222", "33333" }; char str[][6] = { "aaaaa", "bbbbb", "ccccc" }; ...
    程序的功能:在主函数中通过二维数组和指针的定义的字符串,在被调用函数中分配动态内存,并排序。
    一、在主函数定义二维数组和指针数组,并初始化

    int main(void)
    {
        char *p[] = { "11111", "22222", "33333" };
        char str[][6] = { "aaaaa", "bbbbb", "ccccc" };
        char **p1 = NULL;
    
        int len1, len2, len3;
        len1 = sizeof(p)/sizeof(*p);
        len2 = 3;
    
        int ret = sort(p, len1, str, len2, &p1, &len3);
        for (int i = 0; i < len3; i++)
        {
            cout << p1[i] << endl;
        }
        free2(&p1, len3);//调用自定义的释放内存函数 

    return 0;
    system("pause");
    }

    二、被调用函数。在主函数的用的二级指针定义的字符串,那么在被调用函数中用三级指针接过来,先要在堆中动态分配一个二维的(len1+len2)大小的指针长度的内存,在分别分配len1大小的内存用来放字符串1的数据和len2大小的内存用来存字符串2的数据。对所有存入的数据进行排序。

    int sort(char **p, int len1, char (*str)[6], int len2, char ***p1, int *len3)
    {
        char** tempP = (char**)malloc(sizeof(char*)*(len1 + len2));
        if (tempP == NULL)
        {
            return -1;
        }
    
        int i = 0;
        int strLen = 0;
        for (; i < len1; i++)
        {
            strLen = strlen(p[i]) + 1;
            tempP[i] = (char*)malloc(sizeof(strLen));
            if (tempP[i] == NULL)
            {
                return -2;
            }
            strcpy(tempP[i], p[i]);
        }
    
        for (int j = 0; j < len2; j++,i++)
        {
            strLen = strlen(str[j]) + 1;
            tempP[i] = (char*)malloc(sizeof(strLen));
            if (tempP[i] == NULL)
            {
                return -3;
            }
            strcpy(tempP[i], str[j]);
        }
        //排序
        strLen = len1 + len2;
        char *myp = NULL;
        for (int x = 0; x < strLen; x++)
        {
            for (int y = x+1; y < strLen; y++)
            {
                if (strcmp(tempP[x], tempP[y])>0)
                {
                    //交换指针指向,也可以用交换内容
                    myp = tempP[x];
                    tempP[x] = tempP[y];
                    tempP[y] = myp;
                }
            }
        }
        *len3 = strLen;
        *p1 = tempP;
      
        return 0;
    }

    三、分配了动态内存那么就要释放内存。在主函数中调用释放内存的函数,释放内存函数如下:

    void free2(char ***myp, int len)
    {
        char **p = NULL;
        if (myp == NULL)
        {
            return;
        }
    
        p = *myp;//还原成二级指针
        if (p == NULL)
        {
            return;
        }
    
        for (int i = 0; i < len; i++)
        {
            free(p[i]);
        }
    
        free(p);
        *myp = NULL;
    }

    但是每次程序调用释放内存函数都会出现问题,程序会停在这个函数中。输出结果:

     

     

     

     

     

    不知道是什么原因导致的,如果有大神知道还望指导一下。

     

    编译环境:win7+VS2013

     

     




     

    转载于:https://www.cnblogs.com/smileYangYue/p/6137643.html

    展开全文
  • 发现了没 ,数组由a[4]到a[0]地址依次递减,按照我前面那篇文章字符指针的 主函数中 前面的代码应该先读入放入栈顶(低地址),后存的放入栈底(高地址),那么 p k i j h 的地址应该name[4]前面,事实是放在了...
  • 在主函数定义Student对象数组,存储和汇总学生信息。 *3.编写程序,已有若干学生的基本信息, 包括学号、姓名、成绩, 要求输出学生基本信息并计算显示学生总人数和平均成绩。 提示:设计Student类,记录学生的...
  • 在主函数定义一个数组,输入10个学生的成绩,存放在数组中,调用子函数实现给每个学生加10分的功能,最后在主函数中输出加分后的10个学生成绩。 Input 主函数中输入10个学生的成绩 (不能保证都是整数) Output ...
  • 在主函数定义一个数组,内放10个学生成绩,调用一个子函数,求数组中元素最大值、最小值、平均值。最后,请在主函数中输出10个学生中的最高分、最低分以及10个人的平均分。 Input 主函数中输入10个学生的成绩。...
  • //函数说明语句,此函数用以输出数组中的值 int arrin(int *);//函数说明语句,此函数用以给数组输入数据 main() { int s[M],k; k=arrin(s);//k得到输入数据的个数 arrout(s,k); } int arrin(int *a) { int i,x;...
  • 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是按分数的高低排列学生的记录,低分前。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何...
  • 6、在主函数定义一个一维数组,输入n个含有空格的名字,调用一个名为sort的函数对n个名字进行排序,在主函数中按升序方式输出这些名字。 效果展示: 代码 # include <iostream> # include <cmath> #...
  • 这里为什么非要使用const定义呢,如果不使用的话就直接使用U8定义数组,之后从FLASH中读出来的数据是空的,写入也是空的。加入这个const后数据就正常了,是全局变量空间问题吗,全局变量的空间有多大啊?请各位大神...
  • 然后在主函数定义一个结构体数组(长度不超过1000),并输入每个元素的值,程序使用冒泡排序法将学生按照成绩从小到大的顺序排序,然后输出排序的结果。  输入格式:第一行是一个整数N(N<1000),表示元素个...
  • 请问主函数定义中, String[] args 和String args[]是否有区别? 没有区别,都是定义数组的方法,只是官方更推荐 Sting[] args 这种写法 没有区别,其实就是数组的两种声明方式。java里面更推荐使用String[] args,...
  • java各型定义数组时的默认值

    千次阅读 2017-10-09 23:46:16
    package 第二次作业; //Java包 public class 第五题 { //类名 private static char zifu[]; //定义字符型,在主函数定义,可不赋值 pr
  • 最后返回主函数,这两个数组还是初始化的时候的空值!
  • ![图片说明](https://img-ask.csdn.net/upload/202006/15/1592211003_266160.jpg)
  • #include **int s1[100000001];** int main() { int m,n,t; scanf("%d %d",&m,&n); for(int i=0;i;i++) { scanf("%d",&t); s1[t]=1; } for(int j=0;j;j++) { scanf("%d",&t); if(s1[t]==1) ...}
  • 我听说将这个指针声明成全局指针就可以了,问题是我怎么声明成全局指针? #include <iostream> using namespace std;...按照我的思路我应该怎么修改 才能 main函数中delete那个结构数组? [/color]
  • 根据数组指针1FBD00h~2^21~520000*4B=2^21B=2MB,也就是说主函数内有2MB(520000个整型)空间可使用。 主函数外: 以上是数组中部分数据写入,然后重新测试了一下循环写入,发生运行时错误,原因请看下: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 49,932
精华内容 19,972
关键字:

在主函数里定义数组