1、皮德常c+全套答案第2章习题2-5、计算一个人一段时期的薪水,第1天1分钱,第2天2分钱,每天翻倍。要求用户输入天数(输入检验),列表显示每天的薪水,及薪水总和(输出人民币的单位:“元”)。#includeusing namespace std;void main() int daynum; float daypay, paysum=0; do cout1整数): ; cindaynum; while(daynum=1); #includeusing namespace std;void newstr(char str1,char str2);static int m=0;void main(
2、) char str1100; char str2100; cout请输入一个字符串:endl; (str1,100); newstr(str1,str2); cout新字符串为:endl; coutstr2endl;void newstr(char str1,char str2) char *p,*q; q=str1; p=str2; int i=0; for(i=0;i100;i+) if(*(q+i)=0) *(p+i/2)+1)=0; break; else if(i%2!=0) *(p+i/2)=*(q+i); 5-8、编写一个函数palin()用来检查一个字符串是否是正向拼写与反向
3、拼写都一样的“回文”(palindromia).如“MADAM”是一个回文。若放宽要求,即忽略大小写字母的区别、忽略空格及标点符号等,则像“Madam,Im Adam”之类的短语也可视为回文。编程要求:1)在主函数中输入字符串。2)将字符串首指针作为函数参数传递到函数palin()中。当字符串是回文时,要求函数palin()返回true,否则返回false。3)若是回文,在主函数中输出yes。若不是回文,在主函数中输出no.#include using namespace std;bool palin(char a);int main() char a100; cout请输入一个字符串:a;
4、if(palin(a) coutyesendl; else coutnoendl; return 0;bool palin(char a) char *p1=a,*p2; int n,i; for(i=0,n=0;i=a&ai=Z) *(p1+n)=ai; n+; for(p2=p1+n;p1p2;) if(*p1=*p2) p1+; p2-; if(p2-p1=1|p2-p1=0) return true; else return false; 5-10、有n个人围成一圈,顺序排号,顺序号是1、2、3、.、n。从第1个人开始报号,凡报到m的人退出圈子,问最后留下的人是第几号。要求在主函数输入
5、n和m,将数组a以及n、m作为参数传递给函数count(),在该函数中依次输出退出圈子的人的序号,最后输出的就是留下者的序号。#includeusing namespace std;void count(int n,int m,int a);int main() int n,m; cout输入n:n; cout输入m:m; int a100; for(int i=0;in;i+) ai=i+1; count(n,m,a); return 0;void count(int n,int m,int a) int i,k=0,t=0,*p=a; for(i=0;in;i+) pi=i+1; whil
6、e (tn-1) for(p=a;pa+n;p+) if(*p!=0) k+; if(k=m) k=0; cout*p ; *p=0; t+; p=a; while(*p=0) p+; cout*pendl;6-1、假设每个学生信息包括学号、姓名和3门课程的考试分数。从键盘输入10个学生的数据,采用结构体数组数据的存储,程序实现如下功能:1)输出三门课的平均成绩。2)输出三门功课分数分别最高的学生的信息。3)按总分对这10个学生从高到低排序,并输出排序结果。4)输出平均分高于80分那些学生的信息。#include #include #include using namespace std;st
7、ruct student int ID; char name20; double score3;void input(student*,int n);double average(student*,int n);void print(student*,int n);void sort(student*,int n);const int studentNumber=10;int main() student stud10; input(stud,studentNumber); print(stud,studentNumber); .n; p2=head=initlist(); couta; wh
8、ile(a!=-1) p1=(NODE *)malloc(sizeof(NODE); p1-data=a; p2-next=p1; p2=p1; cina; p2-next=NULL; return(head);void print(NODE *head) NODE *p; p=head-next; if(p!=NULL) coutOutput list:; while(p!=NULL) coutsetw(5)data; p=p-next; coutnext;n-next!=NULL;n=n-next) for(p=head-next;p-next!=NULL;p=p-next) if(p-d
9、ata)(p-next-data) i=(p-next-data); p-next-data=p-data; p-data=i; int main() NODE *L1=NULL; coutnt Creat a list:n; L1=create(); cout排序前为:; print(L1); cout排序后为:; sort(L1); print(L1); return 0; 6-6、编写函数merge()将两个非递减序链表合并成一个新的非递减序链表,合并后两个原链表将不存在。函数原型为:NODE *merge(NODE *headA,NODE *headB);#include #inclu
10、de #include using namespace std;#define LEN sizeof(NODE)typedef struct node int data; node *next;NODE;.n; head=initlist(); couta; while(a!=-1) p=(NODE *)malloc(sizeof(NODE); p-data=a; insert(head,p); cina; return head;void print(NODE *head) NODE *p; p=head-next; if(p!=NULL) coutOutput list:; while(p
11、!=NULL) coutsetw(5)data; p=p-next; coutnext; free(p); NODE *merge(NODE *headA,NODE *headB) NODE *p1=headB-next,*p2=p1-next; while(p2!=NULL) insert(headA,p1); p1=p2; p2=p1-next; insert(headA,p1); return headA;int main() NODE *p1=NULL,*p2=NULL,*p=NULL; coutnt Creat a list:n; p1=create_sort(); print(p1); p2=create_sort(); print(p2); p=merge(p1,p2); print(p); return 0; 6-7、编写函数isSubset()用于判断链表L1中的每个数据元素是否都在链表L2中出现过,若是,则返回真,否则假。函数原型均为:bool isSubset(NODE *L1,NODE *L2);#include #include #include using namespace std;#define LEN sizeof(NODE)typedef struct node
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1