一:题目(共有三个题目,第一题必须完成、第二、第三题可以选择其中一题)
1. 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
⑴提示
把输入的10个整数存入数组中,10个中最小的数与数组的第一个元素对换,最大的数与数组的第10个元素对换。其他的保持不变。例如:
23
10 8 5 9 34 12 67 89 31
原数组:
5 10 8 23 9 34 12 67 31 89
交换后的数组:
⑵要求
定义3个函数:
void input(int number[10]); /*此函数向首地址为number的数组输入10个元素*/
void max_min_value(int array[10]); /*此函数交换array数组的对应元素*/
void output(int array[10]); /*此函数输出array数组的10个元素*/
在main函数中调用上述3个函数,实现题目要求的功能;
2.建立一个学生信息链表,每个结点包括:学号、姓名、成绩。实现链表的建立、显示和查询。查询是指输入一个学号,如果链表中存在该学号的的结点,则显示此结点的数据。
⑴提示
采用动态分配内存,。由于结点结构中包含三个域,可以采用C语言中的结构体类型实现。
struct Node //定义一个节点结构体类型
{ long num;
char name[10];
float score;
struct Node *next;
};
⑵要求
在程序中定义了三个函数:
void init(); //初始化链表
void create(); //创建学生成绩信息链表
void disp(); //输出链表信息
定义一个查询函数void search(int number),其中,参数是学生的学号。如果链表中存在该学号的的结点,则显示此结点的数据,否则输出没有该学号的结点。
定义一个删除函数void del(int number),用于删除指定学号的结点。如果链表中存在该学号的的结点,则删除该结点,否则显示链表中没有该学号的结点。
3.有10名学生的数据(包括学号、姓名、和三门课程的成绩即,数学、语言、英语)编写程序,把这些学生的数据存放在文件“score.txt”中,然后在读取文件,把有不及格的学生数据存放到文件“bjg.txt”中,成绩都合格的学生数据存放到文件“jg.txt”中。然后再把文件中的信息分别显示在屏幕上。
⑴提示:先定义一个结构体类型
struct Node //定义一个节点结构体类型
{ long num;
char name[10];
float math;
float chinese;
float english;
};
⑵要求:在屏幕上显示及格“jg.txt”和不及格“bjg.txt”学生信息时要求有表头,格式如下:
成绩都合格的学生信息:
学号 姓名 数学 语文 英语
20083159 张三 67 89 90
20083170 李四 71 88 91
…………………………………………………………
成绩有不及格的学生信息:
学号 姓名 数学 语文 英语
20083134 王三 61 55 90
20083123 二马 50 84 71
………………………………………
第一题
#include <stdio.h>
void input(int number[10]);
void max_min_value(int array[10]);
void output(int array[10]);
int main()
{
int a[10];
input(a);
max_min_value(a);
output(a);
}
void input(int number[10])
{
int i;
for(i=0;i<10;i++)
scanf("%d",&number[i]);
}
void max_min_value(int array[10])
{
int i,j,k,t;
int min=10000,max=0;
for(i=0;i<9;i++)
{
if(array[i]<min)
{
min=array[i];j=i;
}
if(array[i]>max)
{
max=array[i];k=i;
}
}
t=array[0];array[0]=array[j];array[j]=t;
t=array[9];array[9]=array[k];array[k]=t;
}
void output(int array[10])
{
int i;
for(i=0;i<10;i++)
printf("%d ",array[i]);
printf("\n");
}
第三题
#include <stdio.h>
#include <stdlib.h>
#define N 4 //可以变化的 ,题目要求可以改成10 ,4只是为了测试
typedef struct Node
{
long num;
char name[10];
float math;
float chinese;
float english;
}std;
void write_score();
void deal();
int main()
{
write_score();
deal();
return 0;
}
void write_score()
{
FILE *fp;
std a[N];
int i;
if((fp=fopen("score.txt","w"))==NULL)
printf("cannot open this file\n");
printf("请分别输入学号、姓名、数学、语文、英语:\n");
for(i=0;i<N;i++)
{
scanf("%ld%s%f%f%f",&a[i].num,a[i].name,&a[i].math,&a[i].chinese,&a[i].english);
fprintf(fp,"%ld %s %.1f %.1f %.1f\n",a[i].num,a[i].name,a[i].math,a[i].chinese,a[i].english);
}
fclose(fp);
}
void deal()
{
FILE *fp,*fp1,*fp2;
std a[N];
int i,j,sign[N]={0};
if((fp=fopen("score.txt","r"))==NULL)
printf("cannot open this file\n");
if((fp1=fopen("jg.txt","w"))==NULL)
printf("cannot open this file\n");
if((fp2=fopen("bjg.txt","w"))==NULL)
printf("cannot open this file\n");
for(i=0;i<N;i++)
{
fscanf(fp,"%ld %s %f %f %f",&a[i].num,a[i].name,&a[i].math,&a[i].chinese,&a[i].english);
if(a[i].math<60||a[i].chinese<60||a[i].english<60)
sign[i]=1;
}
printf("成绩都合格的学生信息:\n");
printf("学号 姓名 数学 语文 英语\n");
for(i=0,j=0;i<N;i++)
{
if(sign[i]==0)
{
fprintf(fp1,"%ld %s %.1f %.1f %.1f\n",a[i].num,a[i].name,a[i].math,a[i].chinese,a[i].english);
printf("%-15d%10s%6.1f%6.1f%6.1f\n",a[i].num,a[i].name,a[i].math,a[i].chinese,a[i].english);
}
}
printf("........................................................\n");
printf("成绩有不及格的学生信息:\n");
for(i=0,j=0;i<N;i++)
{
if(sign[i])
{
fprintf(fp2,"%ld %s %.1f %.1f %.1f\n",a[i].num,a[i].name,a[i].math,a[i].chinese,a[i].english);
printf("%-15d%10s%6.1f%6.1f%6.1f\n",a[i].num,a[i].name,a[i].math,a[i].chinese,a[i].english);
}
}
printf("........................................................\n");
fclose(fp);
}
那个怎么插入图片不怎么会,你要的话,可以发给你,或则你自己调试