▁▂▃▄▅▆▇█ 到底是我的水平太菜,还是题目…… █▇▆▅▄▃▂▁(决非作业题)

zyl910 2003-01-22 09:15:04
注意:没有笔误!我完全是照抄的!1Bit不差!

朋友刚给我看的时候还觉得很简单
但是认真做起来就觉得实在看不懂



1.请在横线上填上语句完成其功能,但不得改变其他语句:
#include<stdio.h>
main()
{ char *chro(char *str1, char *str2)
char s1[80]="score", s2[]="board", *p;
p=strc(s1,s2);
printf("%s\n", p);
}
char *strc(char *str1, char *str2)
{ char *p;
for(p=str1; *p!='\0', p++);
do
{ p++ = str2++;}while(____1____);
*p = '\0';
retrn(str1);
}



2.以下函数creat用来建立一个带头节点的单向链表,新产生的节点总是插在链表的尾部,单向链表的头指针作为函数值返回,请填空:
#include<stdio.h>
struct list{char data; struct list *next;}
struct list *creat()
{ struct list *h, *p, *q;
char ch;
h = (struct list *)malloc(sizeof(struct list));
p = q = h;
ch = getchar();
while(ch!='?')
{ p = (struct list *)malloc(sizeof(struct list));
p->data = ch;
p->next = p;
q = p;
ch = getchar();
}
p->next = '\0';
____2____
}
...全文
93 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
yellowwolf 2003-01-24
  • 打赏
  • 举报
回复
垃圾,一大堆的错。for(p=str1; *p!='\0', p++); 就拿这一句不改不可能的啊。 什么学校的出这样的题目。

lyy9505 2003-01-24
  • 打赏
  • 举报
回复
北极星说的对!

do{ p++ = str2++;}while(____1____);
应该是:
do{ *p++ = *str2++;}while(*str2!='\0');吧
因为p++不是左值
brucegong 2003-01-24
  • 打赏
  • 举报
回复



第二个程序我没耐性看了,单说第一个
#include<stdio.h>
main()
{ char *chro(char *str1, char *str2) --这一句能够编译通过吗??
char s1[80]="score", s2[]="board", *p;
p=strc(s1,s2);
printf("%s\n", p);
}
char *strc(char *str1, char *str2)
{ char *p;
for(p=str1; *p!='\0', p++);
do
{ p++ = str2++;}while(____1____);
*p = '\0';
retrn(str1); ---retrn是什么???
}
这个程序的本意是将两个字符串联起来然后打印出来。
可惜了这位好学的年轻人啊!你的老师怎么这么恶心啊!(他如果真的很大师级,估计也用不着给你们这些小毛头讲课挣一个月一两千的工资了)。C语言是可以很灵活,但是没有好的书写习惯,将来开发起来会很头大,在公司里面往往会被勒令重写代码。上面的代码拿到任何一家公司都不会被人家喜欢。




solotony 2003-01-23
  • 打赏
  • 举报
回复
修整下,正确的代码是:
//-------------------------------------------
#include <stdio.h>
char *strcat(char *dst, char *src);
int main(void)
{
char s1[80]="score", s2[]="board";
strcat(s1,s2);
printf("%s\n", s1);
}
char *strcat(char *dst, char *src);
{
char *p;
for(p=dst; *p!='\0', p++){ }
while(*p++=*src++) {}
retrn(dst);
}

//-------------------------------------

#include<stdio.h>
struct listnode{
char data;
struct listnode *next;
}
struct listnode * new_listnode()
{
return (struct listnode *)malloc(sizeof(struct listnode));
}
struct listnode * creat_list()
{ struct listnode *head, *first, *next;
char ch;
int count=0;

head = new_listnode();
first = next = head;
while((ch = getchar())!='?')
{
next = new_listnode();
next->data = ch;
next->next = '\0';

first->next = next;
first = next;
count++;
}
head->data = count;
return head;
}




rushman 2003-01-23
  • 打赏
  • 举报
回复
能!
Laper 2003-01-23
  • 打赏
  • 举报
回复
to ninesong(九歌)
"p->next = p;" 没错

lincaicong 2003-01-23
  • 打赏
  • 举报
回复
char s1[80]="score";
这种声明能通过编译吗?
zhixin1007 2003-01-23
  • 打赏
  • 举报
回复
楼主确定一字不差?确定后我便答复。。。。
tuxw 2003-01-23
  • 打赏
  • 举报
回复
char *strc(char *str1, char *str2)
{ char *p;
for(p=str1; *p!='\0', p++);//这一句在后面完全不起作用,是迷惑人的
do
{
p++ = str2++; //第一次循环p指向str2的逻辑第1个字符
//所以复制时为 *(p-1)
}
while( str1[ strlen(str1)+1 ] = '\0' || //为下次能正确调用strlen
str1[ strlen(str1)] = *(p-1) ) //复制字符

*p = '\0'; // 这句好象也不必要了
retrn(str1);
}

不知这样是否可以,我没条件编译
这只能作为题目蒙人,哪有这样写代码的呀
Bandry 2003-01-23
  • 打赏
  • 举报
回复
while((*p = *str) != '\0');
ninesong 2003-01-23
  • 打赏
  • 举报
回复
第二个是
p->next = p;

(q->next=p;)
吧。
ninesong 2003-01-23
  • 打赏
  • 举报
回复
请原谅我的无知,
我看不懂第一题
retrn(str1);是什么意思。
rushman 2003-01-23
  • 打赏
  • 举报
回复
很经典的答案!
可惜我快受不了了.........
zyl910 2003-01-23
  • 打赏
  • 举报
回复
还有一道“非常有趣”的不定项选择题:


对于Windows98的对话框,以下描述错误的是()
A.没有最小化按键
B.没有最大化按键
C.不能移动
D.不能改变大小

“正确答案”:C!


真不知道出题目的那位仁兄看了教材没有
朋友的那本教材上关于对话框的图片就是“查找对话框”
sea_lover 2003-01-23
  • 打赏
  • 举报
回复
慢慢来,会没事的!
icuc88 2003-01-23
  • 打赏
  • 举报
回复
晕倒!谁出的题目?这么弱智!
yeahspyme 2003-01-23
  • 打赏
  • 举报
回复
1. *str2!='\0'//函数在实现strcat
2.第二个程序有错!我的改正如下:
#include<stdio.h>
struct list{char data; struct list *next;}
struct list *creat()
{ struct list *h, *p, *q;
char ch;
h = (struct list *)malloc(sizeof(struct list));
p = q = h;
ch = getchar();
while(ch!='?')
{ p = (struct list *)malloc(sizeof(struct list));
q->data=ch;//p->data = ch;
q->next=p;//p->next = p;
q = p;
ch = getchar();
}
p->next = '\0';
____2____//答案:return h;
}
luixui 2003-01-23
  • 打赏
  • 举报
回复
char *strc(char *str1, char *str2)
{
char *p;
for(p=str1; *p!='\0'; p++);
do
{
*p++ = *str2++;
}while(*str2!='\0');
*p = '\0';
return(str1);
}
mouseanAnya 2003-01-23
  • 打赏
  • 举报
回复
XUEXI 学习
ccaommao 2003-01-22
  • 打赏
  • 举报
回复
up
加载更多回复(12)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧