1.编写函数,将整形数组a中的所有元素逆序存放。函数声明为:void rev(int a[ ],int n)
#include <stdio.h>
void rev(int a[],int n){
for(int i=0;i<n/2;i++){
int temp=a[i];
a[i]=a[n-i-1];
a[n-1-i]=temp;
}
}
2.编写函数,比较两个字符串,返回其长度的差值。函数声明为:int comp(char *a,char *b)
注意,不允许使用string.h头文件和其声明的相关函数
#include <stdio.h>
int comp(char *a,char *b) {
int i=0;
int flag;
while(a[i]!='\0'&&b[i]!='\0')
i++;
if(a[i]!='\0') {
flag=i;
while(a[flag]!='\0') {
flag++;
}
} else if(b[i]!='\0') {
flag=i;
while(b[flag]!='\0') {
flag++;
}
} else
return 0;
return flag-i;
}
int main() {
char a[]="ddd";
char b[]="aaa";
printf("%d",comp(a,b));
}
3.一个长度为n(n>5),可以在其2/5处折断,变为两段长度分别为2n/5,3n/5的木条;如果得到的木条的长度仍大于五,则继续按照上述方法折断,直到任意木条的长度均不大于5为止。编写递归函数,计算一个长度为n的木条,最后会被折断为多少根木条。
#include <stdio.h>
int fun(double n) {
if(n<=5)
return 1;
else
return fun(2*n/5)+fun(3*n/5);
}
4.每个学生的信息卡片包括学号,姓名和联系电话三项,要求:
1)定义存储学生信息的单向链表的结点类型;
2)编写函数,由键盘依次输入n(n>=0)个学生的信息,创建一个用于管理学生联系方式的单向链表,并在创建过程中随时保证该单向链表的节点顺序满足学号从低到高的顺序。
注:必须包含且仅包含与该题目相关的头文件。
#include <stdio.h>
#include <stdlib.h>
#define n 10
typedef struct student {
int number;
char name[20];
char tel[20];
struct student *next;
} student;
struct student *create() {
struct student *p=NULL,*p0,*head=NULL;
p0=(struct student*)malloc(sizeof(struct student));
p0->next=NULL;
head=p0;
for(int i=0; i<n; i++) {
p=(struct student*)malloc(sizeof(struct student));
printf("NO.%d student",i);
scanf("%d%s%s",&p->number,&p->name,&p->tel);
while(p0->next!=NULL&&p0->next->number<p->number)
p0=p0->next;
if(p0->next==NULL) {
p0->next=p;
p->next=NULL;
} else {
p->next=p0->next;
p0->next=p;
}
p0=head;
}
p=head;
head=head->next;
free(p);
return head;
}
5、编写函数,将第四题中构建的单向链表中的全部信息写入磁盘D:盘根目录下的address.txt文件中,要求:每次写入一个学生的信息,就从键盘输入该学生的家庭住址,把家庭住址同时写入文件中。
注:必须包含且仅包含与该题相关的头文件。
#include <stdio.h>
#include <stdlib.h>
typedef struct student {
int number;
char name[20];
char tel[20];
struct student *next;
} student;
void write(struct student *head) {
char address[30];
FILE *file;
file=fopen("D:\\address.txt","w");
if(file==NULL) {
printf("open error");
exit(1);
}
struct student *p=head;
while(p!=NULL) {
fprintf(file,"%10d%25s%25s",p->number,p->name,p->tel);
printf("write address\n");
scanf("%s",address);
fprintf(file,"%25s\n",address);
p=p->next;
}
fclose(file);
}