1、请编写函数merge(int a[],int n,int b[],int m,int *c)实现如下功能:将两个从小到大有序数组a和b复制合并出一个有序整数序列c,其中形参n和m分别是数组a和b的元素个数。在主函数中调用merge并输出合并后的数组c。
2、有一字符串,包含n个字符,写一函数substrcpy(char *str1, char *str2, int m)实现如下功能:将此字符串str1中从第m个字符开始的全部字符复制到字符串str2中。在主函数中调用substrcpy并输出结果。
3、将一个整数字符串转换为一个整数,如“-1234”转换为-1234。要求用指针实现。
scanf输入整型数组4、用结构体实现:
编写程序将下列数据赋予结构体变量,并将它们输出(直接输出和用结构体数组输出)。
姓名 | 年龄 | 月薪 |
李明 | 25 | 2500 |
王利 | 22 | 2300 |
赵勇 | 30 | 3000 |
5、用结构体实现:
有五个学生,每个学生的数据包括学号、姓名、三门课的成绩。从键盘输入5个学生的相关数据,要求打印出三门课总平均成绩,以及最高分的学生的数据(包括学号,姓名、三门课的成绩,三门课的平均分)。要求使用结构体变量。
6、从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件“test.dat”中保存,再从该文件中读出字符串并显示出来。输入的字符串以“!”结束。(下面有错,第二个文件打开指令改为rb)
7、从文件中读入一批整数,并将它们按照递增的顺序存放在一个数组中。
8、将一个磁盘文件中的信息复制到另一个磁盘文件中 。
9、编程:定义函数求十个数的最大值,并在主调函数中输出。(类比第15题)
10、从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个“#”为止。
11、编程:输入年、月、日,用子函数判断计算该日期是该年的第几天。
12、编程:任意输入一个数,定义函数,将其按原来排序的规律将它插入已排好序的数组中。如:原数组为 {2,3,5,7,9},输入4,则新数组为{2,3,4,5,7,9}
13、定义函数,判断某数是否是水仙花数,调用该函数出100-999之间的水仙花数
14、用行指针法寻3*4矩阵中的最大值
15、任意输入10个数,定义函数,出其中的最大值和最小值,并在主调函数中输出这两个值(利用指针实现)
16、输入两个整数,将他们互换,用带参数的宏来实现。
17、输入两个整数,求他们的最大值,定义外部函数来实现。(类比15题)
18、通过指针变量来输出九九乘法表。
19、通过指针变量实现1+2+3+……+n,在程序中输出改结果。
20、将n个数按输入时顺序的逆序排列, 用函数实现。
21、输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:(1)输入10个数;(2)进行处理;(3)输出10个数。
22、编程实现输入n(n<1000)个整数到指定数组,求该数组中最大元素的值和此元素的下标,最大元素值以函数值返回,此元素的下标通过指针形参返回调用处。
23、已知节点结构如下:
struct student
{
Char no[7];
Char name[9];
Struct student *next;
}
(1) 定义函数creat,从无到有地创建一个新链表,保存若干节点信息,节点个数不限
(2) 定义函数show,,输出链表中所有节点信息
24、用字符数组存储任意输入的10个字符,在子函数中把该字符数组的小写字母转换成大写字母。(类比6)
25、输入一串字符,以‘?’结束,统计各字母出现的次数,并按字母出现的多少输出(先输出字母出现多的,次数相同的按字母表顺序输出,不出现的字母不输出)。
例:输入:5b3a+4-hdeh5dh?
输出: h 3
d 2
a 1
b 1
e 1
26、编写函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。 (要求利用指针完成,不使用全局变量)
27、写一函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。(要求利用指针完成,不使用strlen函数)
28、编写一个程序,将字符数组s2中的全部字符复制到字符数组s1中,不用strcpy函数。注意,复制时,’\0’也要复制过去。‘\0’后面的字符不复制。(要求用指针实现)
29、输入三个数,用指针变量的方式按由小到大的顺序输
30、链表头插,尾插,反序,插入,删除,浏览,存盘,读取。
#include <stdlib.h>
typedef int elemtype;
typedef struct node
{ elemtype data;
struct node *next;
}NODE;
NODE *h_creat()
{ NODE *p,*head;
int len;
printf("请问要创建几个节点?:");
scanf("%d",&len);
head=(NODE *)malloc(sizeof(NODE));
head->next=NULL;
while(len)
{
p=(NODE *)malloc(sizeof(NODE));
printf("请输入该节点数据:");
scanf("%d",&p->data);
p->next=head->next;
head->next=p;
len--;
}
return head;
}
void reverse(NODE *head)
{
NODE stack[1024],*p=head->next;
int i=0;
while(p)
{
stack[i].data=p->data;
i++;
p=p->next;
}
p=head->next;
while(i>0)
{
p->data=stack[--i].data;
p=p->next;
}
}
NODE *t_creat()
{ NODE *head,*tail,*p;
int len;
printf("请问要创建几个节点?:");
scanf("%d",&len);
tail=head=(NODE*)malloc(sizeof(NODE));
head->next=NULL;
while(len)
{ p=(NODE *)malloc(sizeof(NODE));
printf("请输入该节点数据:");
scanf("%d",&p->data);
tail->next=p;
tail=p;
p->next=NULL;
len--;
}
return head;
}
void view(NODE *head)
{ NODE *p=head->next;
printf("链表数据如下:\n");
while(p)
{ printf("%d ",p->data);
p=p->next;
}
}
NODE *search(NODE *head,int key)
{ NODE *p;
p=head->next;
while(p)
{ if(p->data==key)
{return p;}
p=p->next;
}
return NULL;
}
void destroylist(NODE *head)
{ NODE *p=head->next,*q;
while(p)
{ q=p->next;
free(p);
p=q;
}
free(head);
}
int insert(NODE *head,NODE *p,int pos)
{ NODE *q=head->next;
if(pos==0)
{ printf("插入位置不合理!");
return 0;
}
pos--;
while(pos)
{ pos--;
q=q->next;
}
p->next=q->next;
q->next=p;
return 1;
}
void dele(NODE *head,NODE *p)
{ NODE *q=head->next,*r=head;
while(q!=p)
{ q=q->next;
r=r->next; //r晚走一步,循环结束,获得的是待删除节点的首地址
}
r->next=p->next;
}
void main()
{ NODE *head1,*head2;
NODE *p;
int data,pos;
printf("开始创建第一条链表:\n");
head1=h_creat();
view(head1);
destroylist(head1);
printf("\n开始创建第二条链表:\n");
head2=t_creat();
view(head2);
printf("\n请输入待查的键值,查将在第2条链上进行:\n");
scanf("%d",&data);
if(search(head2,data)==NULL)
printf("没有到该结点!\n");
else
printf("到该结点!\n");
reverse(head2); //反序
view(head2);
printf("\n准备插入新结点:\n");
p=(NODE *)malloc(sizeof(NODE));
printf("请输入待插入结点的键值:");
scanf("%d",&p->data);
printf("请输入待插入的位置:");
scanf("%d",&pos);
if(insert(head2,p,pos))
view(head2);
printf("\n准备删除结点:\n");
printf("请输入待删除结点的键值:");
scanf("%d",&data);
if((p=search(head2,data))==NULL)
printf("没有到该结点,不能删除!\n");
else
{ dele(head2,p);
printf("删除后");
view(head2);
}
destroylist(head2);
}
void save(NODE *head)
{ FILE *fp;
NODE *p=head->next;
fp=fopen("line.dat","w");
if(fp==NULL)
{…}
while(p)
{ fwrite(p,sizeof(NODE),1,fp);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论