实验6

test1

点击查看代码
#include<stdio.h>
#include<string.h>
#define N 2 
typedef struct student{
	int id;
	char name[20];
	char subject[20];
	double perf;
	double mid;
	double final;
	double total;
	char level[10];
}STU;
void input(STU[],int); 
void output(STU[],int); 
void calc(STU[],int); 
int fail(STU[],STU[],int); 
void sort(STU[],int);
int main(){
	STU st[N],fst[N];
	int k;
	printf("录入学生成绩信息:\n");
	input(st,N);
	printf("\n成绩处理...\n");
	calc(st,N);
	k=fail(st,fst,N);
	sort(st,N);
	printf("\n学生成绩排名情况:\n");
	output(st,N);
	printf("\n不及格学生信息:\n");
	output(fst,k);
	return 0;
}
void input(STU s[],int n){
	int i;
	for(i=0;i<n;i++)
		scanf("%d %s %s %lf %lf %lf",&s[i].id,s[i].name,s[i].subject,&s[i].perf,&s[i].mid,&s[i].final);
}
void output(STU s[],int n){
	int i;
	printf("----------------\n");
	printf("学号	姓名	科目	平时	期中	期末	总评	等级\n");
	for(i=0;i<n;i++)
		printf("%d %-6s %-4s %-4.0f %-4.0f %-4.0f %-4.1f %s\n",s[i].id,s[i].name,s[i].subject,s[i].perf,s[i].mid,s[i].final,s[i].total,s[i].level);
}
void calc(STU s[],int n){
	int i;
	for(i=0;i<n;i++){
		s[i].total=s[i].perf*0.2+s[i].mid*0.2+s[i].final*0.6;
		if(s[i].total>=90)
			strcpy(s[i].level,"优");
		else if(s[i].total>=80) strcpy(s[i].level,"良"); 
		else if(s[i].total>=70) strcpy(s[i].level,"中"); 
		else if(s[i].total>=60) strcpy(s[i].level,"及格"); 
		else strcpy(s[i].level,"不及格");
	}
}
int fail(STU s[],STU t[],int n){
	int i,cnt=0;
	for(i=0;i<n;i++)
		if(s[i].total<60)
		t[cnt++]=s[i];
	return cnt;
}
void sort(STU s[],int n){
	int i,j;
	STU t;
	for(i=0;i<n-1;i++)
		for(j=0;j<n-1-i;j++)
			if(s[j].total<s[j+1].total){
				t=s[j];
				s[j]=s[j+1];
				s[j+1]=t;
			}
}

屏幕截图 2025-12-25 125545
test2

点击查看代码
#include<stdio.h>
#include<string.h>
#define N 10
#define M 80
typedef struct{
	char name[M];
	char author[M];
}Book;
int main(){
	Book x[N]={
		{"《一九八四》","乔治.奥威尔"},
		{"《美丽新世界》","赫胥黎"},
		{"《昨日的世界》","斯蒂芬.茨威格"},
		{"《万里十五年》","黄仁宇"},
		{"《一只特立独行的猪》","王小波"},
		{"《百年孤独》","马尔克斯"},
		{"《查令十字街84号》","海莲.汉芙"},
		{"《只是孩子》","帕蒂.史密斯"},
		{"《刀锋》","毛姆"},
		{"《沉默的大多数》","王小波"},
	};
	Book *ptr;
	int i;
	char author[M];
	int found;
	printf("----------所有图书信息---------\n");
	for(ptr=x;ptr<x+N;++ptr)
		printf("%-30s%-30s\n",ptr->name,ptr->author);
	printf("----------按作者查询图书---------\n");
	printf("输入作者名:");
	gets(author);
	found=0;
	for(ptr=x;ptr<x+N;++ptr)
		if(strcmp(ptr->author,author)==0){
			found=1;
			printf("%-30s%-30s\n",ptr->name,ptr->author);
		}
	if(!found)
		printf("暂未收入该作者书籍!\n");
	return 0;
} 

屏幕截图 2025-12-25 125719

屏幕截图 2025-12-25 125747
test3

点击查看代码
#include<stdio.h>
#include<stdlib.h>
#define N 80
typedef struct Filminfo{
	char name[N];
	char director[N];
	char region[N];
	int year;
	struct Filminfo *next;
}Film; 
void output(Film *head);
Film *insert(Film *head,int n);
int main(){
	int n;
	Film *head;
	head=NULL;
	printf("输入影片数目:");
	scanf("%d",&n);
	head=insert(head,n);
	printf("\n所有影片信息如下:\n");
	output(head);
	return 0;
}
Film *insert(Film *head,int n){
	int i;
	Film *p;
	for(i=1;i<=n;++i){
		p=(Film*)malloc(sizeof(Film));
		printf("请输入第%d部影片信息:",i);
		scanf("%s %s %s %d",p->name,p->director,p->region,p->year);
		p->next=head;
		head=p;
	}
	return head;
}
void output(Film *head){
	Film *p;
	p=head;
	while(p!=NULL){
		printf("%-20s %-20s %-20s %d\n",p->name,p->director,p->region,p->year);
		p=p->next;
	}
}

屏幕截图 2025-12-25 130520

点击查看代码
#include<stdio.h>
#include<stdlib.h>
#define N 80
typedef struct Filminfo{
	char name[N];
	char director[N];
	char region[N];
	int year;
	struct Filminfo *next;
}Film; 
void output(Film *head);
Film *insert(Film *head,int n);
int main(){
	int n;
	Film *head;
	Film *p;
	p=(Film*)malloc(sizeof(Film)); 
	p->next=NULL;
	head=p;
	printf("输入影片数目:");
	scanf("%d",&n);
	head=insert(head,n);
	printf("\n所有影片信息如下:\n");
	output(head);
	return 0;
}
Film *insert(Film *head,int n){
	int i;
	Film *p;
	for(i=1;i<=n;++i){
		p=(Film*)malloc(sizeof(Film));
		printf("请输入第%d部影片信息:",i);
		scanf("%s %s %s %d",p->name,p->director,p->region,&p->year);
		p->next=head;
		head=p;
	}
	return head;
}
void output(Film *head){
	Film *p;
	p=head;
	while(p!=NULL){
		printf("%-20s %-20s %-20s %d\n",p->name,p->director,p->region,p->year);
		p=p->next;
	}
}

屏幕截图 2025-12-25 130520
test4

点击查看代码
#include<stdio.h>
#define N 10
typedef struct{
	char isbn[20];
	char name[80];
	char author[80];
	double sales_price;
	int sales_count;
}Book;
void output(Book x[],int n); 
void sort(Book x[],int n); 
double sales_amount(Book x[],int n);
int main(){
	Book x[N]={
		{"978-7-5327-6082-4","门将之死","罗纳德.伦",42,51},
		{"978-7-308-17047-5","自由与爱之地:入以色列记","云也退",49,30},
		{"978-7-5404-9344-8","伦敦人","克莱格泰了",68,27},
		{"978-7-5447-5246-6","软件提的生命周期","特德姜",35,90},
		{"978-7-5722-5475-8","芯片简史","王博",74.9,49},
		{"978-7-5133-5750-0","主机战争","布莱克",128,42},
		{"978-7-2011-4617-1","世界尽头的咖啡馆","约翰",22.5,44},
		{"978-7-5133-5109-6","你好外星人","英国未来出版集团",118,42},
		{"978-7-1155-0509-5","无穷的开始:世界进步的本源","带维多维奇",37.5,55},
		{"978-7-229-14156-1","源泉","安兰德",84,59},
	};
	printf("\n图书销售总额:%.2f\n",sales_amount(x,N));
	return 0;
	 
}
void output(Book x[],int n){
	printf("%-20s %-30s %-20s %-10s %-10s\n","ISBN号","书名","作者","售价","销售册数");
	printf("---------------------------------\n");
	for(int i=0;i<n;i++)
		printf("%-20s %-30s %-20s %-10s %-10s\n",x[i].isbn,x[i].name,x[i].author,x[i].sales_price,x[i].sales_count);
}
void sort(Book x[],int n){
	for(int i=0;i<n-1;i++){
		for(int j=0;j<n-1-i;j++){
			if(x[j].sales_count<x[j+1].sales_count){
				Book temp=x[j];
				x[j]=x[j+1];
				x[j+1]=temp;
			}
		}
	}
}
double sales_amount(Book x[],int n){
	double total=0.0;
	for(int i=0;i<n;i++){
		total+=x[i].sales_price*x[i].sales_count;
	}
	return total;
}

屏幕截图 2025-12-25 131508
test5

点击查看代码
#include<stdio.h>
typedef struct{
	int year;
	int mounth;
	int day;
}Date;
void input(Date *pd);
int day_of_year(Date d);
int compare_dates(Date d1,Date d2);
void test1(){
	Date d;
	int i;
	printf("输入日期:(以形如2025-12-19这样的形式输入)\n");
	for(i=0;i<3;i++){
		input(&d);
		printf("%d-%02d-%02d是这一年中第%d天\n\n",d.year,d.mounth,d.day,day_of_year(d));
	}
} 
void test2(){
	Date Alice_birth,Bob_birth;
	int i;
	int ans;
	printf("输入Alice和Bob出生日期:(以形如2025-12-19这样的形式输入)\n");
	for(i=0;i<3;i++){
		input(&Alice_birth);
		input(&Bob_birth);
		ans=compare_dates(Alice_birth,Bob_birth);
		if(ans==0)
			printf("Alice和Bob一样大\n\n");
		else if(ans==-1)
			printf("Alice比Bob大\n\n");
		else
			printf("Alice比Bob小\n\n");
	}
}
int main(){
	printf("测试1:输入日期,打印输出这是一年中第多少天\n");
	test1();
	printf("\n测试2:两个人年龄大小关系\n");
	test2();
}
void input(Date *pd){
	scanf("%d-%d-%d",&pd->year,&pd->mounth,&pd->day);
}
int day_of_year(Date d){
	int mounth_days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
	int total=0;
	int i;
	if((d.year%4==0&&d.year%100!=0)||(d.year%400==0)){
		mounth_days[2]=29;
	}
	for(i=1;i<d.mounth;i++){
		total+=mounth_days[i];
	}
	total+=mounth_days[i];
	return total;
}
int compare_dates(Date d1,Date d2){
	if(d1.year<d2.year)return -1;
	else if(d1.year>d2.year) return 1;
	if(d1.mounth<d2.mounth)return -1;
	else if(d1.mounth>d2.mounth)return 1;
	if(d1.day<d2.day)return -1;
	else if(d1.day>d2.day)return 1;
	return 0;
}

屏幕截图 2025-12-25 131837
test6

点击查看代码
#include<stdio.h>
#include<string.h>
enum Role{admin,student,teacher};
typedef struct{
	char username[20];
	char password[20];
	enum Role type;
}Account;
void output(Account x[],int n);
int main(){
	Account x[]={
	{"A1001","123456",student},
	{"A1002","123abcdef",student},
	{"A1009","xyz12121",student},
	{"X1009","9213071x",admin},
	{"C11553","129dfg32k",teacher},
	{"X3005","921kfmg917",student},
	};
	int n;
	n=sizeof(x)/sizeof(Account);
	output(x,n);
	return 0;
}
void output(Account x[],int n){
	for(int i=0;i<n;i++){
		printf("%-8s",x[i].username);
		int pwd_len=strlen(x[i].password);
		for(int j=0;j<pwd_len;j++){
			printf("*");
		}
		printf("\t");
		switch(x[i].type){
			case admin:
				printf("admin\n");
				break;
			case student:
				printf("student\n");
				break;
			case teacher:
				printf("teacher\n");
				break;
			default :
				printf("unknown\n");
				break; 
		}
	}
}

屏幕截图 2025-12-25 131921
test7

点击查看代码
#include <stdio.h>
#include <string.h>

typedef struct {
    char name[20];   
    char phone[12];  
    int vip;         
} contact;


void set_vip_contact(contact x[], int n, char name[]); 
void output(contact x[], int n);                      
void display(contact x[], int n);                     

#define N 10

int main() {
    contact list[N] = {{"刘一", "15510846604", 0},
                       {"陈二", "18038747351", 0},
                       {"张三", "18853253914", 0},
                       {"李四", "13230584477", 0},
                       {"王五", "15547571923", 0},
                       {"赵六", "18856659351", 0},
                       {"周七", "17705843215", 0},
                       {"孙八", "1552933732", 0},
                       {"吴九", "18077702405", 0},
                       {"郑十", "18820725036", 0}};

    int vip_cnt, i;
    char name[20];

    printf("显示原始通讯录信息:\n");
    output(list, N);

    printf("\n输入要设置的紧急联系人个数:");
    scanf("%d", &vip_cnt);
    printf("输入%d个紧急联系人姓名:\n", vip_cnt);
    for (i = 0; i < vip_cnt; ++i) {
        scanf("%s", name);
        set_vip_contact(list, N, name);
    }

    printf("\n显示通讯录列表:(按姓名字典序升序排列,紧急联系人最先显示)\n");
    display(list, N);

    return 0;
}


void set_vip_contact(contact x[], int n, char name[]) {
    for (int i = 0; i < n; i++) {
        if (strcmp(x[i].name, name) == 0) {
            x[i].vip = 1;
            break;
        }
    }
}


void display(contact x[], int n) {
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - 1 - i; j++) {
            if (strcmp(x[j].name, x[j+1].name) > 0) {
                contact temp = x[j];
                x[j] = x[j+1];
                x[j+1] = temp;
            }
        }
    }
    for (int i = 0; i < n; i++) {
        if (x[i].vip == 1) {
            printf("%-10s%-15s*\n", x[i].name, x[i].phone);
        }
    }
    for (int i = 0; i < n; i++) {
        if (x[i].vip == 0) {
            printf("%-10s%-15s\n", x[i].name, x[i].phone);
        }
    }
}
void output(contact x[], int n) {
    int i;
    for (i = 0; i < n; ++i) {
        printf("%-10s%-15s", x[i].name, x[i].phone);
        if (x[i].vip)
            printf("%5s", "*");
        printf("\n");
    }
}

屏幕截图 2025-12-25 132018

posted @ 2025-12-25 13:21  牛汝顺  阅读(6)  评论(0)    收藏  举报