我的c语言题不对,c语言没错但是结果错了

发布时间:2022-11-24

本文目录一览:

  1. c语言这题老是不对。
  2. c语言题目铺地毯,为什么我的不对?急。
  3. C语言,这道题我写的哪里不对?
  4. 我的这个关于c语言的题不对,帮忙看看
  5. C语言题目,为什么我的程序不对啊
  6. C语言的题目,我怎么做都不对,求教高手啊!!

c语言这题老是不对。

void fun(int shu, int t0);

这个函数定义可以简化为:

void fun(int shu, int t0)
{
    char a[100000];
    int flag = 0;
    int i = 0, j;
    if (shu < 0)
    {
        shu = abs(shu);
        flag = 1; // flag标记shu是否为正数,正数为0负数为1
    }
    while (shu) // 取出各个位
    {
        a[i] = shu % t0; // 取余数
        shu /= t0;
        i++;
    }
    for (j = 0; j < i; j++) // 转换为字符串,i就是转换的长度
        if (a[i] < 10) // 小于10的转换为0~9的ASCII
            a[i] += 48;
        else // 否则转换为A~F
            a[i] += 55;
    if (flag == 1) // 这里是看是否为负数,是负数加上一个负号,长度再加一位
    {
        a[i] = '-';
        i++;
    }
    a[i] = '\0';
    strrev(a); // 两个函数就是反序和输出,要是不让用,可以写代码
    puts(a); // 其实很简单就可以实现,反序用for循环一半交换,输出用循环输出就可以
}

c语言题目铺地毯,为什么我的不对?急。

程序没有错。 可能的问题是:不清楚地毯铺设的最大坐标。若是超过了1999,你的程序就数组越界了。 第二,这程序的时间复杂度稍大了些。 可以把这些数据放入一个4*n的二维数组中,全部读入数据后,从n往回检查,若坐标位于一个地毯的覆盖范围之内,就结束查找,输出该数据的编号;否则全部查找失败后,仍未找到的则输出-1。

C语言,这道题我写的哪里不对?

  1. scanf 用错了,应该是 scanf("%c", ch);
  2. 换行符 \n 的ASCII是10,你写 ch = 255 那就是死循环了
  3. 按题目要求做就行了,没必要去判断不在这个范围内的东西
  4. C里字符和数字是可以自动转换的,不需要你去记ASCII码
#include <stdio.h>
int main()
{
    char ch;
    int a = 0, n = 0, b = 0, t = 0;
    while ((ch = getchar()) != '\n')
    {
        if (ch >= '0' && ch <= '9')
            n++;
        else if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
            a++;
        else if (ch == ' ')
            b++;
        else
            t++;
    }
    printf("char:%d number:%d blank:%d other:%d", a, n, b, t);
}

我的这个关于c语言的题不对,帮忙看看

合并双链表是错误的!!!我给你理清思路,你自己去改! 你这的这条语句:

r = (struct node*)malloc(sizeof(struct node *) * 8);

效果是,在内存中开辟8个单元的空间,每个单元是 struct node * 类型,即:每个单元是一个指针,指向一个 struct node 结构体。 而 r 是该开辟空间的首地址,也是第一个内存单元的指针。 所以,当你写 p = La->next; r->next = p; 的时候,就是用了错误的内存,因为 r 本身就是一个指针,其本身没有 next 指针。 所以当它还没有指向某个结构体的时候,r->next 是不存在的东西,是野指针。 你使用 r->next 的话,事实上是不知道操作了哪个结构体的 next 指针的。 如果你用 r = La->next 的话是可以的,那 r->next 就是 La->next->next 了,即指向了 La 表中的第二个元素。 上述是语法错误。 再则,合并表的思路也是错误的。 假如,你让 r 指向了 La 链表的第一个元素,OK,这是没错的。 按照你的想法,应该是继续让第二个单元的 next 指针指向 Lb 表的第一个元素。 然后依次 第三个单元指向 La 的第二个元素,四单元指向 Lb 的第二元素………… 但是重点:r = r->next 操作之后,r 指向的是开辟的8空间中的第二个内存单元吗? NO,当你使 r = La->next 之后,r->next 指向的是 la->next->next 了,即是 La 表的第二个元素,而不是第二个内存单元。 所以其实后面你写的 r = r->next 操作的不是 r[1], 是 La 表。 懂了么?所以你上面的写法是达不到目的的。内存很复杂,学习需细心。

C语言题目,为什么我的程序不对啊

是学校的系统吧,看起来应该不是ACM,学校最烦的一点就是输出格式的问题,或者也有可能他用多种数组来测试你这个程序,对于其他数组你的程序不匹配。

C语言的题目,我怎么做都不对,求教高手啊!!

#include <stdio.h>
int main()
{
    int score, sum = 0, i = 0;
    double d;
    while (scanf("%d", &score) != EOF) // 这个EOF的用法,你可以自己查资料了解一下
    {
        // scanf("%d", score);
        if (-1 == score)
        { // 当输入-1的时候停止
            break;
        }
        else
        {
            sum += score;
            i++;
            d = sum / i;
        }
    }
    if (i == 0)
        printf("0\n"); // 如果仅输入了-1,则输出0
    else
        printf("%.1f\n", d); // 得到计算的平均数的值
    return 0;
}