标题:关于c primer plus 第五版 动态内存例题问题
只看楼主
司空云襄
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-6-12
结帖率:50%
已结贴  问题点数:20 回复次数:2 
关于c primer plus 第五版 动态内存例题问题
/*dyn_arr.c--为数组动态分配存储空间*/
# include <stdio.h>
# include <stdlib.h> //为malloc()和free ()函数提供原型


int main(void)
{
double *ptr;
int max;
int number;
int i = 0;


puts("What is the maximum number of type double entries?");
scanf("%d",&max);
ptr = (double *)malloc (max *sizeof(double));
if(ptr == NULL)
{
puts("Memory allocation failed. Goodbye.");
exit(EXIT_FAILURE);


}
/*ptr 现在指向有max个元素的数组*/
puts("Enter the values(q to quit):");
while (i < max && scanf("%lf",&ptr[i])==1)
++i;
printf("Here are your %d entries: \n",number = i);
for (i = 0; i < number; i++)
{
printf("%7.2f",ptr[i]);
if(i % 7 == 6)
putchar('\n');
}
if(i % 7 != 0)
putchar('\n');
puts("Done.");
free(ptr);


return 0;
}
问题:
"
if(i % 7 == 6)
putchar('\n');
}
if(i % 7 != 0)
putchar('\n');
puts("Done.");
free(ptr);
" 为什么要除7, 判断 等于6?
搜索更多相关主题的帖子: allocation include Memory double number 
2015-06-12 16:20
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
得分:20 
这是一种很高明的排队方法!座等高手解答,我也不是很清楚,,
 为什么要除7,  等于6,不是等于6 而是余(mod)6

个人一点小见解,
如果我们把ptr[i]第一个元素看成是1开始,
我们可以用if(i % 7 == 7)也就是if(i % 7 == 0)
如果我们把ptr[i]第一个元素看成是0开始,
我们可以用if(i % 7 == 7-1)也就是if(i % 7 == 6)
很明显malloc()分到数组的第一个元素地址是ptr[0]


[ 本帖最后由 hjx1120 于 2015-6-12 18:37 编辑 ]
2015-06-12 17:23
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
得分:0 
一个简单的小例子
打印 1到 100 的整数,每行打印7个整数.
代码可以这样写!
#include<stdio.h>
int main(void)
{
    int i;
    for(i=1;i<=100;i++){
        printf("%5d",i);
        if(i%7==0)
            printf("\n");
    }
    return 0;   
}

如果是打印0 到 100 的整数,每行打印7个整数。
你要怎么写代码?
2015-06-12 18:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-446526-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.177451 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved