本文目录一览:
- c语言这题老是不对。
- c语言题目铺地毯,为什么我的不对?急。
- C语言,这道题我写的哪里不对?
- 我的这个关于c语言的题不对,帮忙看看
- C语言题目,为什么我的程序不对啊
- 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语言,这道题我写的哪里不对?
scanf
用错了,应该是scanf("%c", ch);
- 换行符
\n
的ASCII是10,你写ch = 255
那就是死循环了 - 按题目要求做就行了,没必要去判断不在这个范围内的东西
- 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;
}