給定程序MODI1.C中的函數(shù)Creatlink的功能是創(chuàng)建帶頭結(jié)點(diǎn)的單向鏈表, 并為各結(jié)點(diǎn)數(shù)據(jù)域賦0到m-1的值。
請(qǐng)改正函數(shù)Creatlink中指定部位的錯(cuò)誤, 使它能得出正確的結(jié)果。
注意: 不要改動(dòng)main函數(shù), 不得增行或刪行, 也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include
#include
typedef struct aa
{ int data;
struct aa *next;
} NODE;
NODE *Creatlink(int n, int m)
{ NODE *h=NULL, *p, *s;
int i;
p=(NODE )malloc(sizeof(NODE));
h=p;
p->next=NULL;
for(i=1; i<=n; i++)
{ s=(NODE *)malloc(sizeof(NODE));
s->data=rand()%m; s->next=p->next;
p->next=s; p=p->next;
}
return p;
}
outlink(NODE *h)
{ NODE *p;
p=h->next;
printf("\n\nTHE LIST :\n\n HEAD ");
while(p)
{ printf("->%d ",p->data);
p=p->next;
}
printf("\n");
}
main()
{ NODE *head;
head=Creatlink(8,22);
outlink(head);
}
解題思路:
第一處: 指向剛分配的結(jié)構(gòu)指針,所以應(yīng)改為:p=(NODE *)malloc(sizeof(NODE));
第二處: 在動(dòng)態(tài)分配內(nèi)存的下一行語句是,使用臨時(shí)結(jié)構(gòu)指針變量h保存p指針的初始位置,最后返回不能使用p,是因?yàn)閜的位置已經(jīng)發(fā)生了變化,所以應(yīng)改為返回h。
***************************************************
請(qǐng)編寫函數(shù)fun, 函數(shù)的功能是:統(tǒng)計(jì)一行字符串中單詞的個(gè)數(shù),作為函數(shù)值返 回。一行字符串在主函數(shù)中輸入, 規(guī)定所有單詞由小寫字母組成,單詞之間由若干 個(gè)空格隔開, 一行的開始沒有空格。
注意:部分源程序在文件PROG1.C中。
請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容, 僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。
給定源程序:
#include
#include
#define N 80
int fun( char *s)
{
}
main()
{ char line[N]; int num=0;
printf("Enter a string :\n"); gets(line);
num=fun( line );
printf("The number of word is : %d\n\n",num);
NONO();
}
解題思路:
本題是統(tǒng)計(jì)字符串中的單詞數(shù)。
1. 利用while循環(huán)語句和指針變量,當(dāng)字符為空格時(shí),則單詞數(shù)k加1。
2. 循環(huán)結(jié)束返回k。
參考答案:
int fun( char *s)
{
int k = 1 ;
while(*s) {
if(*s == ' ') k++ ;
s++ ;
}
return k ;
}
相關(guān)推薦:
2014年計(jì)算機(jī)等考上機(jī)六大注意事項(xiàng)
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |