1、请编写函数merge(int a[],int n,int b[],int m,int *c)实现如下功能:将两个从小到大有序数组ab复制合并出一个有序整数序列c,其中形参nm分别是数组ab的元素个数。在主函数中调用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、编程实现输入nn<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小时内删除。