You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

15 KiB

1.#include<stdio.h> int main() { printf(" 1.Input\n"); printf(" 1.Output\n"); printf(" 1.Order\n"); printf(" 1.Quit\n"); int a; scanf("%c",&a); if(a=='i')printf("You are trying to Input info\n"); if(a=='o')printf("You are trying to Output info\n"); if(a=='m')printf("You are trying to Make things ordered\n"); if(a=='q')printf("You are about to Quit\n"); return 0; } 2.#include<stdio.h> int main() { float a[5],b[5],c[5]; for(int i=0;i<4;i++) {scanf("%f",&a[i]);} for(int i=0;i<4;i++) {scanf("%f",&b[i]);} for(int i=0;i<4;i++) {scanf("%f",&c[i]);} a[4]=a[1]+a[2]+a[3]; b[4]=b[1]+b[2]+b[3]; c[4]=c[1]+c[2]+c[3]; printf("%.0f ",a[0]); for(int i=1;i<5;i++) { printf("%.1f ",a[i]); } printf("\n"); printf("%.0f ",b[0]); for(int i=1;i<5;i++) {

		    printf("%.1f  ",b[i]);
        }
printf("\n");
printf("%.0f  ",c[0]);
for(int i=1;i<5;i++)
        {
		    printf("%.1f  ",c[i]);
        }
printf("\n");
return 0;

} 3.#include<stdio.h> int main() { printf(" 1.Input\n"); printf(" 1.Output\n"); printf(" 1.Order\n"); printf(" 1.Quit\n"); int a; scanf("%c",&a); if(a=='m')printf("You are trying to Make things ordered\n"); else if(a=='q')printf("You are about to Quit\n"); else if(a=='i')printf("Please input info of the three students:"); else printf("Wrong input"); float a[6],b[6],c[6]; for(int i=0;i<4;i++) {scanf("%f",&a[i]);} for(int i=0;i<4;i++) {scanf("%f",&b[i]);} for(int i=0;i<4;i++) {scanf("%f",&c[i]);} a[4]=a[1]+a[2]+a[3]; b[4]=b[1]+b[2]+b[3]; c[4]=c[1]+c[2]+c[3]; a[5]=a[4]/3; b[5]=b[4]/3; c[5]=c[4]/3; if(a[4]<b[4]<c[4]) { printf("%.0f %.1f %.1f\n",a[0],a[4],a[5]); printf("%.0f %.1f %.1f\n",b[0],b[4],b[5]); printf("%.0f %.1f %.1f\n",c[0],c[4],c[5]); } if(a[4]<c[4]<b[4]) { printf("%.0f %.1f %.1f\n",a[0],a[4],a[5]); printf("%.0f %.1f %.1f\n",c[0],c[4],c[5]); printf("%.0f %.1f %.1f\n",b[0],b[4],b[5]); } if(b[4]<a[4]<c[4]) { printf("%.0f %.1f %.1f\n",b[0],b[4],b[5]); printf("%.0f %.1f %.1f\n",a[0],a[4],a[5]); printf("%.0f %.1f %.1f\n",c[0],c[4],c[5]); } if(b[4]<c[4]<a[4]) { printf("%.0f %.1f %.1f\n",b[0],b[4],b[5]); printf("%.0f %.1f %.1f\n",c[0],c[4],c[5]); printf("%.0f %.1f %.1f\n",a[0],a[4],a[5]); } if(c[4]<b[4]<a[4]) { printf("%.0f %.1f %.1f\n",c[0],c[4],c[5]); printf("%.0f %.1f %.1f\n",b[0],b[4],b[5]); printf("%.0f %.1f %.1f\n",a[0],a[4],a[5]); } if(c[4]<a[4]<b[4]) { printf("%.0f %.1f %.1f\n",c[0],c[4],c[5]); printf("%.0f %.1f %.1f\n",a[0],a[4],a[5]); printf("%.0f %.1f %.1f\n",b[0],b[4],b[5]); } } 4. #include <stdio.h> struct Student { int id; int clas; float score1; float score2; float score3; };

void insertStudent(struct Student students[], int *numStudents, struct Student newStudent) { int insertPos = 0; while (insertPos < *numStudents && (students[insertPos].clas< newStudent.clas || (students[insertPos].clas == newStudent.clas&& students[insertPos].score1 + students[insertPos].score2 + students[insertPos].score3 > newStudent.score1 + newStudent.score2 + newStudent.score3))) { insertPos++; }

for (int i = *numStudents; i > insertPos; i--) {
    students[i] = students[i - 1];
}

    students[insertPos] = newStudent;
(*numStudents)++;

}

int main() { struct Student students[100]; int numStudents = 3;

// 初始化已有的学生信息
students[0].id = 10001;
students[0].clas = 11;
students[0].score1 = 99.5;
students[0].score2 = 88.5;
students[0].score3 = 89.5;

students[1].id = 10002;
students[1].clas= 12;
students[1].score1 = 77.9;
students[1].score2 = 56.5;
students[1].score3 = 87.5;

students[2].id = 10003;
students[2].clas= 11;
students[2].score1 = 92.5;
students[2].score2 = 99.0;
students[2].score3 = 60.5;
struct Student newStudent;
printf("请输入新学生的信息(学号 班级 成绩1 成绩2 成绩3\n");
scanf("%d %d %f %f %f", &newStudent.id, &newStudent.clas, &newStudent.score1, &newStudent.score2, &newStudent.score3);
insertStudent(students, &numStudents, newStudent);
for (int i = 0; i < numStudents; i++) {
    printf("%d %d %.1f %.1f %.1f", students[i].id, students[i].clas, students[i].score1, students[i].score2, students[i].score3);
    if (i == numStudents - 1) {
        printf(" inserted\n");
    } else {
        printf("\n");
    }
}

return 0;

} 5. #include <stdio.h> #include <string.h> typedef struct Student{ char id[100]; int cl; char name[100]; float score1; float score2; float score3; float total_score; }Student; void sort(Student student[],int n){ int i,j; for(i=0;i<n-1;i++){ for(j=0;j<n-1-i;j++){ if(student[j].cl>student[j + 1].cl||(student[j].cl==student[j + 1].cl&&student[j].total_score<student[j + 1].total_score)){ Student temp=student[j]; student[j]=student[j+1]; student[j+1]=temp; } } } } void judgenew(Student student[],int *n,char *id_or_name){ int i; for(i=0;i<*n;i++){ if(strcmp(student[i].id,id_or_name)==0||strcmp(student[i].name,id_or_name)==0){ break; } } if(i==*n){ print_students(student,n); }else{ for(;i<*n-1;i++) { student[i]=student[i+1]; } (*n)--; } } void print_students(Student student[],int n) { int i; for(i=0;i<n;i++) { if(student[i].id[0] != '\0') printf("%s %d %s %.1f %.1f %.1f\n", student[i].id,student[i].cl,student[i].name,student[i].score1,student[i].score2,student[i].score3); } } void deletestudentinfo(char a,Student student[],int n){ if(a=='n'){ sort(student,n); print_students(student,n); }else if(a=='y'){ return; } } int main(){ Student student[3] = { {"10001", 11, "Zhang", 99.5, 88.5, 89.5, 99.5+88.5+89.5}, {"10002", 12, "Yang", 77.9, 56.5, 87.5, 77.9+56.5+87.5}, {"10003", 11, "Liang", 92.5, 99.0, 60.5, 92.5+99.0+60.5}, }; int n=3; char id_or_name[100]; sort(student, n);

scanf("%s",id_or_name);
printf("Are you sure(yes/no)?\n");

getchar();
char a;
scanf("%c",&a);

judgenew(student,&n,id_or_name);
deletestudentinfo(a,student,n);

return 0;

} 6. #include <stdio.h> #include <string.h> typedef struct Student{ char id[100]; int cl; char name[100]; float score1; float score2; float score3; float total_score; }Student; void inputStudentinfo(Student *student){ scanf("%s", &student->id); scanf("%d",&student->cl); scanf("%s",&student->name); scanf("%f", &student->score1); scanf("%f", &student->score2); scanf("%f", &student->score3); student->total_score = student->score1 + student->score2 + student->score3; } void sort(Student student[],int n){ int i,j; for(i=0;i<n-1;i++){ for(j=0;j<n-1-i;j++){ if(student[j].cl>student[j + 1].cl||(student[j].cl==student[j + 1].cl&&student[j].total_score<student[j + 1].total_score)){ Student temp=student[j]; student[j]=student[j+1]; student[j+1]=temp; } } } } int modifystudent(Student student[],int n,Student new_student){ int i; for(i=0;i<n;i++){ if(strcmp(student[i].id,new_student.id)==0){ student[i]=new_student; student[i].total_score=student[i].score1+student[i].score2+student[i].score3; sort(student,n); return 0; } } return 1; } void print_students(Student student[],int n,Student new_student,int isModified){ int last_cl=0,i; for(i=0;i<n;i++){ if(student[i].cl!=last_cl){ printf("%d ",student[i].cl); last_cl=student[i].cl; }else{ printf("%3s"," "); } printf("%s %s %.1f %.1f %.1f", student[i].id, student[i].name, student[i].score1, student[i].score2, student[i].score3); if(isModified==0&&strcmp(student[i].id,new_student.id)==0){ printf(" modified"); } printf("\n"); } } int main(){ Student student[3]={ {"10001", 11, "Zhang", 99.5, 88.5, 89.5, 99.5+88.5+89.5}, {"10002", 12, "Yang", 77.9, 56.5, 87.5, 77.9+56.5+87.5}, {"10003", 11, "Liang", 92.5, 99.0, 60.5, 92.5+99.0+60.5}, }; int n=3,i; Student new_student; inputStudentinfo(&new_student); int isModified=modifystudent(student,n,new_student); print_students(student,n,new_student,isModified); return 0;

} 7. #include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct Student{ char id[100]; int cl; char name[100]; float score1; float score2; float score3; float total_score; }Student; void getinput(int *type,int *p1,int *p2,int *p3){ scanf("%d",type); if(*type==1||*type==2){ scanf("%d-%d",p1,p2); }else if(*type==3){ char temp[20]; scanf("%s",temp); *p1=temp[0]; }else if(*type==5){ scanf("%d.%d-%d",p1,p2,p3); }else{ scanf("%d",p1); } } void query(Student *students,int numStudents,int type,int p1,int p2,int p3,Student *results,int *numResults){ int i; *numResults = 0; char temp1[20], temp2[20],temp3[20]; sprintf(temp1, "%d", p1); sprintf(temp2, "%d", p2);//格式化数据写入临时字符串 sprintf(temp3,"%d",p3); for(i=0; i<numStudents; i++){ students[i].total_score = students[i].score1 + students[i].score2 + students[i].score3; switch(type){

        case 1:
            if(students[i].cl>=p1&&students[i].cl<=p2){
                results[(*numResults)++] = students[i];//班级号在p1-p2内 
            }
            break;
        case 2:
            if(strcmp(students[i].id,temp1)>=0 && strcmp(students[i].id,temp2)<=0){
                results[(*numResults)++] = students[i];//学号在p1-p2内 
            }
            break;
        case 3:
            if(students[i].name[0]==p1){
                results[(*numResults)++] = students[i];//名字以特定字母开头的学生
            }
            break;
        case 4:
            if(students[i].total_score>=p1){
                results[(*numResults)++] = students[i];//总分大于等于特定分数的学生
            }
            break;
        case 5:
            if(students[i].cl==p1 && strcmp(students[i].id,temp2)>=0 && strcmp(students[i].id,temp3)<= 0){
                results[(*numResults)++] = students[i];//特定班级、特定学号范围的学生
            }
            break;
    }
}

} void sort(Student student[],int n){ int i,j; for(i=0;i<n-1;i++){ for(j=0;j<n-1-i;j++){ if(student[j].cl>student[j + 1].cl||(student[j].cl==student[j + 1].cl&&student[j].total_score<student[j + 1].total_score)){ Student temp=student[j]; student[j]=student[j+1]; student[j+1]=temp; } } } } void printResults(Student *results, int numResults){ int i; for(i=0; i<numResults; i++){ printf("%s %d %s %.1f %.1f %.1f\n", results[i].id, results[i].cl, results[i].name, results[i].score1, results[i].score2, results[i].score3); } } int main(){ Student students[7] = { {"10001", 11, "Zhang", 99.5, 88.5, 89.5}, {"10002", 12, "Yang", 77.9, 56.5, 87.5}, {"10003", 11, "Liang", 92.5, 99.0, 60.5}, {"10004", 11, "Cai", 89.6, 56.9, 90.5}, {"10005", 14, "Fu", 55.6, 67.9, 98.9}, {"10006", 12, "Mao", 22.1, 45.9, 99.2}, {"10007", 13, "Zhan", 35.6, 67.9, 88.0} }; int type; int p1,p2,p3; getinput(&type,&p1,&p2,&p3); Student results[7]; int numResults; query(students,7,type,p1,p2,p3,results,&numResults); sort(results,numResults); printResults(results,numResults);

return 0;

} 8. #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct Student{ char *id; int cl; char *name; float score1; float score2; float score3; float total_score; }Student; void mainmenu(){ printf("1.input\n"); printf("2.delete\n"); printf("3.select\n"); printf("4.order\n"); printf("5.output\n"); printf("6.quit\n"); printf("please input your option\n"); } void inputStudentinfo(Student *students,int *size){ printf("Id "); students[*size].id=(char *)malloc(sizeof(char)*10); scanf("%s",students[*size].id); printf("class "); scanf("%d",&students[*size].cl); printf("name "); students[*size].name=(char *)malloc(sizeof(char)*10); scanf("%s",students[*size].name); printf("score1 "); scanf("%f",&students[*size].score1); printf("score2 "); scanf("%f",&students[size].score2); printf("score3 "); scanf("%f",&students[size].score3); (size)++; } void deleteinfo(Student students, int size) { char id[10]; scanf("%s",id); int i; for (i=0;i<size;++i) { if (strcmp(students[i].id,id) == 0) { free(students[i].id); free(students[i].name); students[i]=students[--(size)]; return; } } } void select(Student students,int size){ char input[10]; int i,index=0; scanf("%s",input); if(strlen(input)<=2){ int cl=atoi(input); for(i=0;i<size;i++){ if(students[i].cl==cl){ printf("%s %d %s %.2f %.2f %.2f\n",students[i].id,students[i].cl,students[i].name,students[i].score1,students[i].score2,students[i].score3); index=1; } } }else{ for(i=0;i<size;i++){ if(strcmp(students[i].id,input)==0){ printf("%s %d %s %.2f %.2f %.2f\n",students[i].id,students[i].cl,students[i].name,students[i].score1,students[i].score2,students[i].score3); index=1; } } } if(!index){ printf("There is no eligible student.\n"); } } void sort(Student students,int size) { int i,j; for(i=0;i<size - 1;++i) { for(j=0;j<size-1-i;++j) { if(students[j].cl>students[j + 1].cl){ Student temp=students[j]; students[j]=students[j + 1]; students[j + 1]=temp; } } } } void output(Student students,int size){ int i; for(i=0;i<size;++i) { printf("%s %d %s %.2f %.2f %.2f\n", students[i].id, students[i].cl, students[i].name, students[i].score1, students[i].score2, students[i].score3); } } int main(){ Student students[100]; int size=0; int option; int lastop=-1; char continueFlag[10]; int runflag=1; while(runflag){ mainmenu(); if(lastop==-1){ scanf("%d",&option); }else{ option=lastop; } do{ switch (option) { case 1: inputStudentinfo(students,&size); break; case 2: deleteinfo(students,&size); output(students,size); break; case 3: select(students,size);

        	break;
    	case 4:
        	sort(students,size);
        	output(students,size);
        	mainmenu();
        	break;
    	case 5:
        	output(students,size);
        	mainmenu();
        	break;
    	case 6:
        	runflag=0;  
            break;
    	}
    	if(runflag){
    		printf("continue?\n");
        	scanf("%s", continueFlag);
        	if(strcmp(continueFlag,"yes")==0){
				lastop=option;
			}else{
				lastop=-1;
			}
		} 
    	
		
        
	}while(strcmp(continueFlag,"yes")==0&&runflag); 
}
return 0;

}