目前共有97篇帖子。
【期末複習】C語言期末複習
65樓 巨大八爪鱼 2016-1-16 16:50
为了降低编译失败的次数,写好代码后我必须仔细检查代码才编译。一定要争取一次编译通过。
66樓 巨大八爪鱼 2016-1-16 18:58
#include <stdio.h>

int decompose(int num, int m[])
{
    int i, j, count = 0;
    for (i = 2; i <= num; i++) // 寻找2~num之间的质数
    {
        // 判断i是不是质数
        for (j = 2; j < i; j++)
        {
             if (i % j == 0)
                 break;
        }
        if (i == j)
        {
            // 如果是质数
            // 判断这个数是否能被这个质数整除
            // 把原本的if改为while就能判断有多少个当前质数相乘
            while (num % i == 0)
            {
                m[count++] = i;
                num /= i;
            }
        }
    }
    return count;
}

void main()
{
    int i, n, count, a[100];
    scanf("%d", &n);
    count = decompose(n, a);
    printf("%d = ", n);
    for (i = 0; i < count; i++)
    {
        printf("%d", a[i]);
        if (i + 1 < count)
            putchar('*');
        else
            putchar('\n');
    }
}
67樓 巨大八爪鱼 2016-1-16 18:58
楼上是第五章的最后一题——【15】
68樓 巨大八爪鱼 2016-1-16 19:00
由于15题比较难,所以再做一遍。
69樓 巨大八爪鱼 2016-1-16 19:32
#include <stdio.h>

int decompose(int n, int q[])
{
    int i, count = 0;
    for (i = 2; i <= n; i++)
    {
        while (n != i && n % i == 0)
        {
            q[count++] = i;
            n /= i;
        }
    }
    q[count++] = n;
    return count;
}

void main()
{
    int q[255], n, m, i;
    printf("Please input a positive integer: ");
    scanf("%d", &n);
    m = decompose(n, q);
    printf("m = %d\n", m);
    printf("%d = ", n);
    for (i = 0; i < m - 1; i++)
        printf("%d*", q[i]);
    printf("%d\n", q[m - 1]);
}
这是经过标准答案修改过的程序。
因为在考虑2的时候已经把2的所有倍数除尽了,到了最后不能再被2整除的时候才开始考虑3 。所以4根本就不可能出现,因此也就无需一个一个地去找质数了。
70樓 巨大八爪鱼 2016-1-16 19:33
至于为什么要在while里面多加一句n!=i,主要是为了确保当输入的n为质数时,返回的数组q至少有一个元素,不至于是空数组。
71樓 巨大八爪鱼 2016-1-16 19:34
因此,这个程序还可以这样改:
int decompose(int n, int q[])
{
    int i, count = 0;
    for (i = 2; i <= n; i++)
    {
        while (n % i == 0)
        {
            q[count++] = i;
            n /= i;
        }
    }
    if (count == 0)
        q[count++] = n;
    return count;
}
72樓 巨大八爪鱼 2016-1-16 19:44
第五章已复习完毕。
接下来先复习简单一点的:第九章——文件。
73樓 巨大八爪鱼 2016-1-16 19:53
【9-1】
#include <stdio.h>
#include <stdlib.h>

void fun(int nums[])
{
    int count = 0;
    int i;
    for (i = 0; count < 10; i++)
    {
        if (i % 2 == 1 && i % 3 == 1 && i % 5 == 1)
            nums[count++] = i;
    }
}

void main()
{
    int nums[10];
    int i;
    FILE *fp;
    if ((fp = fopen("tmp.txt", "w")) == NULL)
    {
        printf("文件打不开。\n");
        exit(0);
    }
   
    fun(nums);
    for (i = 0; i < 10; i++)
    {
        printf("%d ", nums[i]);
        fprintf(fp, "%d ", nums[i]);
    }
    printf("\n");
    fclose(fp);
}
注意fprintf不要忘了第一个参数fp。
74樓 巨大八爪鱼 2016-1-16 19:58
【9-2】
#include <stdio.h>
#include <stdlib.h>

void main()
{
    char str[100];
    int i;
    FILE *fp;
    if ((fp = fopen("tmp2.txt", "w")) == NULL)
    {
        printf("文件打不开\n");
        exit(0);
    }
    printf("Please enter a string:\n");
    gets(str);
    for (i = 0; str[i] != '\0'; i++)
    {
        printf("%c(%d)", str[i], str[i]);
        fprintf(fp, "%c(%d)", str[i], str[i]);
    }
    printf("\n");
    fclose(fp);
}

回復帖子

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