算法入门经典 第二张习题

1.说一下“倒三角形”的问题。
我用了一个数组比较简单的解决。但是用了一个新的函数memset()。
memset()函数原型是extern void *memset(void *buffer, int c, int count)
butter是数组或指针。c是赋给butter的值。count是butter的长度。
头文件是:#include“memory.h”
下边的程序分别是:结构体的初始化,数组的初始化,字符串的初始化。

#include<stdio.h>
#include<memory.h>
struct student
{
    int num;
    char name[20];
    char sex[10];
};
int main()
{
    struct student stud1 = {10101,"liming","man"};
    printf("NO.:%d\nname:%s\nsex:%s\n",stud1.num,stud1.name,stud1.sex);
    memset(&stud1,0,sizeof(struct student));
    printf("NO.:%d\nname:%s\nsex:%s\n",stud1.num,stud1.name,stud1.sex);
    int a[10],i;
    for(i = 0; i < 10; i++)
        a[i]=2;
    for(i = 0; i < 10; i++)
        printf("%d",a[i]);
    printf("\n");
    memset(a,0,sizeof(a));
    for(i = 0; i < 10; i++)
        printf("%d",a[i]);
    printf("\n");
    char b[10];
    for(i = 0;i < 10; i++)
        b[i]='s';
    printf("%s",b);
    memset(b,'*',sizeof(b));
    printf("%s",b);
    return 0;
}

倒三角问题:

#include<stdio.h>
int main()
{
    int c,flat = 0;
    double a,b;
    while(scanf("%lf%lf%d",&a,&b,&c)!=EOF)
    {
        flat ++;
        if(a == 0 && b == 0 && c == 0)
            break;
        printf("Case %d: %.*lf\n",flat,c,a/b);
    }
    return 0;
}

2.分数化小数。
一道小题。值得注意的是printf()函数的用法。
printf(“%*.*s\n”,m,n,ch); m是宽度,n是保留位数。
代码如下。

#include<stdio.h>
int main()
{
    int c,d,flat = 0;
    double a,b;
    while(scanf("%lf%lf%d%d",&a,&b,&c,&d)!=EOF)//自己多加了一个宽度d
    {
        flat ++;
        if(a == 0 && b == 0 && c == 0)
            break;
        printf("Case %d: %*.*lf\n",flat,d,c,a/b);
    }
    return 0;
}

你可能感兴趣的:(算法,函数,C语言,buffer,指针)