C语言程序填空题 下载本文

指定的学生后输出学生的情况,因此应当填写:strcmp(stu[i].name,str)==0。③处应当将控制退出内层的for循环,只能选择break语句。

【3.45】答案:① p+n ② gets(p->name) ③ p+n 注释:本程序是通过函数完成对于结构数组的输入和输出操作。函数data_in和data_out十分相似,都是通过结构指针p和结构指针q来操作结构数组的元素。由于指针q在两个函数中的作用相同,所以①和③填写的内容也应该是相同的;由for语句中的循环终止条件\可以看出,q应该指在数组的最后一个元素之后,所以①和③应当填入p+n。②应当完成姓名的输入工作,应当为gets(p->name)。

【3.46】答案:① j=i-1 ② > ③ j-- ④ j+1 ⑤ j+1 注释:程序的基本思想是:对于输入的第i个整数num,从数组array中已有的元素中倒序开始查找。若数组array中的第j个元素的值大于num,则将数组中的元素j向后移动一个位置;否则,就应将num插入到当前位置作为元素j。因此,程序的基本设计思想就是插入排序。

程序中内层的for循环完成查找插入位置的工作,因此答案①、②和③有密切的关系,要统一考虑。同样,程序中的答案④和⑤也有密切的关系,要统一考虑。 【3.47】答案:① != '\\n' ② p=top 【3.48】答案:① p1->next

【3.49】答案:① head ② p ③ p=head

注释:程序在从键盘接受字符的同时就在建立起链表,所建立的链表本身就已经是反序排列的,因此在反序输出字符串的时候实际只需沿着链表的第一个结点开始,顺序操作即可。 【3.50】答案:① return ② (struct data *) malloc(sizeof(struct data)) ③ input( ) ④ p!=NULL ⑤ p=p->next 【3.51】答案:① (struct student *) ② tail=tail->next ③ head 注释:①malloc函数的作用是在内存开辟指定字节数的存储空间,并将此存储空间的地址返回赋给尾指针

tail,但是此地址为void型,应将其强制转换为所要求的结构指针类型。

②新开辟的结点的内存地址存于tail所指向的已建立的链表的尾结点的结构成员next,新结点连入链表以后,尾指针tail应指向新的结点。

【3.52】答案:① (struct student *) ② (struct list *) ③ return(head)

【3.53】答案:① FILE ② !feof(fp)

注释:FILE 是文件结构类型名。feof()是测试文件结束标志的函数。

【3.54】答案:① \② fclose(fp) 【3.55】答案:① 3 ② !feof(f1)或feof(f1)==0 ③ f2 ④ fclose(f2) ⑤ fclose(f1)

注释:程序中使用了带参数的main函数,其中整型参数argc为命令行中字符串的个数,此程序运行时输入的字符串有可运行程序名、文件1和文件2,故argc不应小于3。字符串指针argv[0]指向可运行程序名、字符串指针argv[1]指向输入文件名、字符串指针argv[2]指向输出文件名,由上所述②处给出循环条件是输入文件是否结束,③处需要填出输出文件名。最后两处是关闭两个文件,原则上关闭文件没有顺序要求,但习惯上是后打开的文件先关闭。

【3.56】答案:① *argv[1] ② (*funcp)(n) ③ s+=i

注释:程序执行时输入的命令及参数的个数(操作系统规定用空格表示字符串的分隔)由系统赋给主函数的形

数argc,输入的命令和参数以字符串的格式保存,字符串的首地址分别赋给指针数组argv的各个元素,其中argv[1]是'+'或'-',分别表示累加或阶乘。程序根据argv[1]所指向的字符串的内容给指向函数的指针变量

funcp赋值。②处要求的语句是根据指向函数的指针变

量的内容对相应的函数实现调用,所以选择A或B是错误的;据funcp是被调函数的地址,*funcp实现了

对函数的调用,根运算符的结合性,(*funcp)表示取

funcp的目标,而*funcp(n)则funcp先和(n)结合,

funcp就被解释为函数名,显然是错误的。

【3.57】答案:① \② -32 ③ \【3.58】答案:① \② &j ③ fp

【3.59】答案:① fgetc(fp))!=EOF ② &keyword[i].word[0]

③ s++; q++; ④ *s==*q ⑤ (word=getword(cp))!=NULL

【3.60】答案:① \② rewind(fp) ③ !=NULL ④ flag=0 ⑤ ferror(fp)==0

5 8 9+18 + 27 + 30? 英20