目前共有97篇帖子。
【期末复习】C语言期末复习
54樓 巨大八爪鱼 2016-1-16 15:22
【6】
#include <stdio.h>

int str2int(char *str)
{
    int n = 0;
    while (*str != '\0')
    {
        if (*str >= '0' && *str <= '9')
            n = n * 10 + (*str - '0');
        str++;
    }
    return n;
}

void main()
{
    char str[50];
    int n;
    gets(str);
    n = str2int(str);
    printf("%d\n", n);
}
55樓 巨大八爪鱼 2016-1-16 15:28
【7】
#include <stdio.h>

void _strcpy(char *target, char *src)
{
    while (*src != '\0')
        *target++ = *src++;
    *target = '\0'; // 这句话非常重要
}

void main()
{
    char str[256];
    char str2[256]/* = "there is a key, there is a hat"*/;
    gets(str);
    _strcpy(str2, str);
    puts(str2);
}
57樓 巨大八爪鱼 2016-1-16 15:35
【8】
#include <stdio.h>
#include <string.h>

char *getFileExtName(char *filename)
{
    int len = strlen(filename);
    int i;
    for (i = len - 1; i >= 0; i--) // 注意是i>=0,不是i>0
    {
        if (filename[i] == '.')
            return filename + i + 1;
    }
    return filename + len; // 获取最后一个\0的位置,无需加1
}

void main()
{
    char filename[100];
    gets(filename);
    printf("Extension: %s\n", getFileExtName(filename));
}
58樓 巨大八爪鱼 2016-1-16 15:59
【9】
#include <stdio.h>

int _strcmp(char *str1, char *str2)
{
    while (*str1 == *str2 && *str1 != '\0' && *str2 != '\0')
    {
        str1++;
        str2++;
    }
    if (*str1 > *str2)
        return 1;
    else if (*str1 < *str2)
        return -1;
    else
        return 0;
}

void main()
{
    char str1[100];
    char str2[100];
    int rs;
    gets(str1);
    gets(str2);
    rs = _strcmp(str1, str2);
    if (rs == 1)
        printf("str1 > str2\n");
    else if (rs == -1)
        printf("str1 < str2\n");
    else if (rs == 0)
        printf("str1 == str2\n");
}
59樓 巨大八爪鱼 2016-1-16 16:13
【10】
#include <stdio.h>

void draw(int level)
{
    int i, j;
    for (i = 0; i < level; i++)
    {
        for (j = 0; j < level - 1 - i; j++)
            putchar(' ');
        for (j = 0; j < 2 * i + 1; j++)
            putchar('*');
        putchar('\n');
    }
}

void main()
{
    int i;
    scanf("%d", &i);
    draw(i);
}
60樓 巨大八爪鱼 2016-1-16 16:25
【11】
#include <stdio.h>

int prime(int a[])
{
    int count = 0, i, j;
    int flag;
    for (i = 2; i < 1000; i++) // 必须以2开头
    {
        flag = 1;
        for (j = 2; j < i; j++)
        {
            if (i % j == 0)
            {
                flag = 0;
                break; // 注意break无法跳出两层循环,所以只能设置flag
            }
        }
        if (flag == 1)
            a[count++] = i;
    }
    return count;
}

void main()
{
    int a[1000];
    int i;
    int count = prime(a);
    printf("共有%d个素数。\n", count);
    for (i = 0; i < count; i++)
    {
        printf("%4d", a[i]);
        if ((i + 1) % 10 == 0)
            printf("\n");
    }
}
61樓 巨大八爪鱼 2016-1-16 16:26
也可以不设置flag,直接判断内层循环结束后i是否等于j就行:
int prime(int a[])
{
    int count = 0, i, j;
    for (i = 2; i < 1000; i++) // 必须以2开头
    {
        for (j = 2; j < i; j++)
        {
            if (i % j == 0)
                break;
        }
        if (i == j)
            a[count++] = i;
    }
    return count;
}
62樓 巨大八爪鱼 2016-1-16 16:39
【12】
#include <stdio.h>

double H(int n, double x)
{
    switch (n)
    {
    case 0:
        return 1;
    case 1:
        return 2 * x;
    default:
        return 2 * x * H(n - 1, x) - 2 * (n - 1) * H(n - 2, x);
    }
}

void main()
{
    int n;
    double x;
    scanf("%d%f", &n, &x);
    printf("%.2f", H(n, x));
}
63樓 巨大八爪鱼 2016-1-16 16:43
【13】
#include <stdio.h>

int fibon(int n)
{
    switch (n)
    {
    case 0:
    case 1:
        return n;
    default:
        return fibon(n - 1) + fibon(n - 2);
    }
}

void main()
{
    int n;
    scanf("%d", &n);
    printf("fn = %d\n", fibon(n));
}
64樓 巨大八爪鱼 2016-1-16 16:49
【14】
#include <stdio.h>

int narcis(int m[])
{
    int i, count = 0;
    int a, b, c;
    for (i = 100; i <= 999; i++)
    {
        a = i / 100;
        b = i % 100 / 10;
        c = i % 10;
        if (a * a * a + b * b * b + c * c * c == i)
            m[count++] = i;
    }
    return count;
}

void main()
{
    int m[1000];
    int i;
    int count = narcis(m);
    for (i = 0; i < count; i++)
    {
        printf("%4d", m[i]);
        if ((i + 1) % 5 == 0)
            putchar('\n');
    }
    putchar('\n');
}

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
 
 
©2010-2024 Arslanbar [手機版] [桌面版]
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。