GLORY | 学习·记录

coding for life

尝试着让自己用一个月的时间来适应这种生活,找到愉悦的心情。

posted @ 2010-07-07 22:07 meglory 阅读(122) | 评论 (0)编辑 收藏
今天看到有位童鞋在TopLanguage上面提了个问题:
int a[][3]={1,2,3,4,5,6};
int (*b)[3]=a;

不用编译器,说说b里是什么?

其实这种问题在《C专家编程》的P65中的神器解码环中有很详尽的解释。
在这里首先考察等式左边的int (*b)[3]

1.最左边的标识符是b 表示b是...
2.b的左边是*
表明b是指向...的指针
3.*的左边是左括号
左括号把已经处理的部分声明组合在一起,知道遇见相应的右括号
4.(*b)左边是方括号
表示大小为3的数组
5.剩下的符号形成基本类型int
表明b是一个指针,它指向一个大小为3的int型数组。

而把a的值赋给b,表明是将b指向a。

之后sagasw给出一个demo,可以更清楚的了解指针相关各种。
int main(int argc, char* argv[])
{

    
int a[][3]={1,2,3,4,5,6};
    
int (*b)[3]=a;   
    printf(
"a %p b %p \n", a, b);

    
++b;
    printf(
"a1 %p a10 %p a11 %p b %p \n", a[1], &a[1][0], &a[1][1], b);

    
++b;
    printf(
"a %p b %p \n", a[2], b);
    
return 0;

}

posted @ 2010-06-09 23:09 meglory 阅读(191) | 评论 (0)编辑 收藏
//输出汉字
char temp[3];
char c;

temp[
0]=getchar();
temp[
1]=getchar();
temp[
2]='\0';
    
cout
<<temp<<endl;
posted @ 2010-05-12 21:45 meglory 阅读(239) | 评论 (0)编辑 收藏

这道题是很简单的一个题目。我的题目理解稍微有点问题,所以花了一些时间才搞清楚。

还碰巧发现了一个讨论uva的论坛,很好很强大。就是里面一位老大的一句话让我豁然开朗。
关键在于题目里面关于word的定义。

A “word” is defined as a consecutive sequence of letters (upper and/or lower case).

Your program should output a word count for each line of input. Each word count should be printed on a separate line.

一开始我以为直接判断scanf(“%s”,s)的次数就ok。后来不停地wa。发现题目里面怎么连did!也算作一个单词,不是连续的字母吗?

I did! I did! I did taw a putty tat.

比如这个字符串用我的理解就是应该是八个word。后来想到,是一开始用读入字符传的思维导致了我的错误。这个题目是一个字符一个字符的处理的,并不是一下读进来一个字符串然后一个个的判断。

想到这里,我豁然开朗。

posted @ 2010-04-04 18:21 meglory 阅读(227) | 评论 (0)编辑 收藏

This is a blog post published via Windows Live Writer.

This is a great tool.

posted @ 2010-04-04 00:29 meglory 阅读(204) | 评论 (0)编辑 收藏

用1,2,3,···,9 组成 3 个三位数 abc,defghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3。输出所有解。

题目特别写出了提示:不必太动脑筋。(其实这句话让我现在都不清楚我的解法是不是符合要求......)

1 #include<stdio.h>
2 #include<stdlib.h>
3 int main()
4 
{
5     int
num;
6     char
chr;
7     char a[10
];
8     char temp[3
];
9     char
pos;
10     //num*3<=987 所以 num<=329

11     for(num=123;num<=329;num++)
12 
    {
13         itoa(num,temp,10
);
14 
        strcpy(a,temp);
15         itoa(num*2,temp,10
);
16 
        strcat(a,temp);
17         itoa(num*3,temp,10
);
18         strcat(a,temp);//a保存了num以及num*2和num*3组成的字符串

19 
20         for(chr='1';chr<='9' && (pos=strchr(a,chr))!=NULL;chr++)
21 
            ;
22         if(pos!=
NULL)
23             printf("%d:%d:%d=1:2:3\n",num,num*2,num*3
);       
24 
    }
25     return 0
;
26 
}
27 

 今天继续读到了分数化小数题目,感觉挺简单的一个问题。实际藏着一个我并不知道的printf妙用。

  输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。a,b<=10^6,c<=100.例如a=1,b=6,c=4时应输出0.1667.

printf的特殊用法,对于m.n的格式可以用如下方法表示

    char ch[20];
    printf("%*.*s\n",m,n,ch);
    前边的*定义的是总的宽度,后边的定义的是输出的个数。分别对应外面的参数m和n 。 这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式。
1 #include<stdio.h>
2 int main()
3 
{
4     int
a,b,c;
5     scanf("%d %d %d",&a,&b,&
c);
6     printf("%.*lf",c,(double)a/
b);
7     return 0
;
8 }

posted @ 2010-03-29 22:53 meglory 阅读(942) | 评论 (3)编辑 收藏

一开始在家里面有了一点思路,用两重循环。后来真正开始在纸上写代码的时候发现只要一重循环即可。 

#include<stdio.h>

int main()
{

    
int a[10][10];
    
int dx[]={1,0,-1,0};
    
int dy[]={0,-1,0,1};
    
int value=1;
    
int i,j,n,x,y;

    scanf(
"%d",&n);
    
for(i=1;i<=n;i++)
        
for(j=1;j<=n;j++)
            a[i][j]
=0;

    
//初始位置为(1,n),初始值为1
    x=1;
    y
=n;
    i
=0;
    a[x][y]
=value++;

    
//循环结束的条件为n*n个值已经赋完
    while(value<=n*n)
    {
        
//按照当前的方向进行探测
        x+=dx[i];
        y
+=dy[i];

        
//如果符合条件,赋值
        if(x>=1 && x<=&& y>=1 && y<=&& a[x][y]==0)
            a[x][y]
=value++;
        
//如果不符合条件,把坐标退回,方向进行逆时针旋转
        else
        {
            x
-=dx[i];
            y
-=dy[i];
            i
=(i+1)%4;
        }
        printf(
"\nvalue=%d\n",value);
    }

    
for(i=1;i<=n;i++)
    {
        
for(j=1;j<=n;j++)
            printf(
"%d ",a[i][j]);
        printf(
"\n");
    }

    
return 0;

}

 后来看到书上的sample代码,我觉着我的代码显然要好很多:-)

posted @ 2010-03-29 22:53 meglory 阅读(901) | 评论 (0)编辑 收藏
这里更多的是作为一个记录的站点。
cnblog写了一段时间,最后打算还是放一些思考的东西在上面,而认识的几个朋友读到自己cnblog的博客也对技术内容不感兴趣。
决定把一些程序的记录部分就要放在这里了。本打算把之前的一些帖子搬过来,后来想想自己重头开始积累,也还不错。
posted @ 2010-03-28 23:13 meglory 阅读(126) | 评论 (0)编辑 收藏
仅列出标题
共5页: 1 2 3 4 5 

导航

随笔分类

随笔档案

最新评论