1.编写函数,实现按照如下公式计算的功能,其中n为自然数
#include <stdio.h>
int fac(int n) {
if(n==0)
return 1;
else
return n*fac(n-1);
}
float fun(int n) {
float flag;
float sum=0;
for(int i=0; i<=n; i++) {
flag=i/((i+1)*fac(i+2));
sum+=flag;
}
return sum;
}
2.编写bool函数,判断给定的整数数组a[n]中是否存在元素a[i](0<i<N),等于前边所有元素之和,即a[i]=a[0]+a[1]+...+a[i-1]
#include <stdio.h>
#include <stdbool.h>
bool judge(int *a,int n) {
for(int i=0; i<n; i++) {
int sum=0;
for(int j=0; j<i; j++)
sum+=a[j];
if(sum==a[i])
return true;
}
return false;
}
int main() {
int a[]= {2,21,1,4,5};
printf("%d",judge(a,5));
}
3.编写一个递归函数,计算组成给定整整数n的所有数字之和
#include <stdio.h>
int func(int n) {
int sum=0;
while(n>0) {
sum+=n%10;
n/=10;
}
return sum;
}
int main() {
printf("%d",func(1240));
}
4.构造一个表示教师的结构体(包含3个字段,姓名,性别,年龄),编写函数读入M个教师的信息,存入一个结构体中
张三 | 李四 | ...... | 赵九 |
男(true) | 女(false) | 男(true) | |
50 | 37 | 09 |
#include <stdio.h>
struct teacher{
char name[10];
bool sex;
int age;
};
void save(struct teacher st[], int M)
{
for(int i = 0; i < M; i++)
{
scanf("%s",st[i].name);
scanf("%d",&st[i].sex);
scanf("%d",&st[i].age);
}
}
5.设有一个保存教师信息的单链表(每个结点包含4个字段:姓名、性别、年龄、后继指针),如下图所示。构造该链表中一节的数据类型声明;编写函数,在给定的链表中查找所有女教师的信息,并存储导指定文件output.txt中
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
struct LinkNode{
char name[30];
bool sex;
int age;
struct LinkNode* next;
};
void save(struct LinkNode* head)
{
FILE *fp;
if((fp = fopen("output.txt","w")) == NULL)
printf("can not open the output.txt\n");
struct LinkNode* p = head;
while(p != NULL)
{
if(p -> sex == false)
{
fprintf(fp,"%s",p->name);
fprintf(fp,"%d",p->age);
}
p = p -> next;
}
fclose(fp);
}