您的位置:

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

本文目录一览:

c语言这题老是不对。

void fun(int *shu , int *t0);

这个不用定义指针,没必要,直接定义

void fun(int shu , int t0);

就可以

fun(int shu,int t0)

{

char a[100000];

int flag=0;

int i=0,j;

if(shu0)

{

shu=abs(shu);

flag=1; //flag标记shu是否为正数,正数为0负数为1

}

while(shu) //取出各个位

{

a[i]=shu%t0; //取余数

shu/=t0;

i++;

}

for(j=0;ji;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码

#includestdio.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;

}