关于#c语言#的问题,请各位专家解答!

img

img

这两个有什么区别
qwertyuioplkkjhgfxvhjgujxfjgthhdyy

第一个s的类型是根据a和b的类型来指定
第二个s的类型指定为float类型

  • 这篇博客: 学生信息管理系统(双向链表)(C语言)中的 登录密码是:qwerty 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    #define _CRT_SECURE_NO_WARNINGS 
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    typedef struct student
    {
    	int Student_number;
    	char Student_name[10];
    	int Student_grade;
    	char Student_major[10];
    	int Student_score_1;
    	int Student_score_2;
    	int Student_score_3;
    	int Student_average_score;
    	int Student_Sum_average;
    	struct student* pre;
    	struct student* next;
    }Student;
    typedef struct student_message
    {
    	int Student_Num;
    	Student* p;
    	Student* head;
    }Student_Message;
    
    void save_file(Student_Message* Stu);
    void show_student(Student_Message* Stu);
    void add_student(Student_Message* Stu);
    Student* search_student(Student_Message* Stu);
    int delete_student(Student_Message* Stu);
    int change_student(Student_Message* Stu);
    void Search_Student(Student_Message* Stu);
    void clean_student();
    void land();
    void keydowm(Student_Message* Stu);
    void sort(Student_Message*Stu);
    void readstudent(Student_Message*Stu);
    
    void save_file(Student_Message*Stu)
    {
    	Student* temp = Stu->head;
    	FILE* fp= NULL;
    	fp = fopen("学生信息.txt", "w+");
    	if (fp == NULL)
    		return;
    	//fprintf(fp, "学生学号   学生年级     学生年级   学生专业    学生成绩\n");
    	fprintf(fp, "%d ", Stu->Student_Num);
    	while (temp->next)
    	{
    		fprintf(fp, "%d\t%d\t%s\t%s\t%d\t", temp->Student_number, temp->Student_grade,
    			temp->Student_name, temp->Student_major, temp->Student_score_1);
    		temp = temp->next;
    	}
    	fprintf(fp, "%d\t%d\t%s\t%s\t%d", temp->Student_number, temp->Student_grade,
    		temp->Student_name, temp->Student_major, temp->Student_score_1);
    	fclose(fp);
    }
    void show_student(Student_Message* Stu)
    {
    	Student* temp = Stu->head;
    	while (temp->next)
    	{
    		printf("学生学号     学生年级     学生姓名      "
    			"学生专业    学生的成绩    \n%d\t%d\t%s\t%s\t%d\n", temp->Student_number, temp->Student_grade,
    			temp->Student_name, temp->Student_major, temp->Student_score_1);
    		temp = temp->next;
    	}
    	printf("学生学号     学生年级     学生姓名      "
    		"学生专业    学生的成绩    \n%d\t%d\t%s\t%s\t%d\n", temp->Student_number, temp->Student_grade,
    		temp->Student_name, temp->Student_major, temp->Student_score_1);
    }
    void add_student(Student_Message*Stu)
    {
    	Student* temp = NULL;
    	Student* new_temp = (Student*)malloc(sizeof(Student));
    	
    	printf("请输入学生学号          请输入学生年级                请输入学生的成绩 "
    		" 请输入学生姓名            请输入学生专业                \n");
    	scanf("%d%d%d%s%s", &(new_temp->Student_number),&(new_temp->Student_grade),
    		&(new_temp->Student_score_1),(new_temp->Student_name), (new_temp->Student_major));
    	/*printf("请输入学生学号    ,请输入学生年级   , 请输入学生姓名    , "
    		"请输入学生专业   ,请输入学生的成绩    \n%d\t%d\t%s\t%s\t%d\n", new_temp->Student_number, new_temp->Student_grade,
    		new_temp->Student_name, new_temp->Student_major, new_temp->Student_score_1);*/
    	if (Stu->head == NULL)
    	{
    		Stu->head = new_temp;
    		Stu->head->pre = NULL;
    		Stu->head->next = NULL;
    		/*Stu->p = Stu->head->next;
    		Stu->p->pre = Stu->head;*/
    		Stu->p = Stu->head;
    	}
    	else
    	{
    		//temp = new_temp;
    		new_temp->pre = Stu->p;
    		Stu->p->next = new_temp;
    		Stu->p = Stu->p->next;
    		Stu->p->next = NULL;
    	}
    	Stu->Student_Num++;
    	show_student(Stu);
    }
    Student* search_student(Student_Message*Stu)
    {
    	char name[12];
    	Student* temp=Stu->head;
    	printf("请输入你要查询学生的姓名\n");
    	scanf("%s", name);
    	while (temp->next != NULL && strcmp(name, temp->Student_name) != 0)
    		temp = temp->next;
    	if (strcmp(name, temp->Student_name) == 0)
    		return temp;
    	else
    		return NULL;
    }
    int delete_student(Student_Message*Stu)
    {
    	Student*temp=search_student(Stu);
    	if (temp == NULL)
    	{
    		printf("删除节点失败\n");
    		return 0;
    	}
    	else
    	{
    		if(temp->pre!=NULL)
    			temp->pre->next = temp->next;
    		free(temp);
    		printf("删除节点成功\n");
    		return 1;
    	}
    	show_student(Stu);
    	Stu->Student_Num--;
    }
    int change_student(Student_Message* Stu)
    {
    	Student* temp = search_student(Stu);
    	if (temp == NULL)
    	{
    		printf("修改失败\n");
    	}
    	else
    	{
    		printf("请输入学生学号,请输入学生年级,请输入学生姓名,"
    			"请输入学生专业,请输入学生的成绩\n");
    		scanf("%d%d%s%s%d", &temp->Student_number, &temp->Student_grade,
    			temp->Student_name, temp->Student_major, &temp->Student_score_1);
    		printf("修改成功\n");
    	}
    	show_student(Stu);
    }
    void Search_Student(Student_Message*Stu)
    {
    	Student *temp=search_student(Stu);
    	printf("请输入学生学号    ,请输入学生年级   , 请输入学生姓名    , "
    		"请输入学生专业   ,请输入学生的成绩    \n%d\t%d\t%s\t%s\t%d\n", temp->Student_number, temp->Student_grade,
    		temp->Student_name, temp->Student_major, temp->Student_score_1);
    }
    void clean_student()
    {
    
    }
    void land()
    {
    	int n = 0,flag=1;
    	printf("-----------------请输入你的密码,你有三次机会----------------\n");
    	char password[7] = {'q','w','e','r','t','y','\0'};
    	char userpassword[7];
    	while (n < 3)
    	{
    		printf("----------------请输入你的密码,你现在还有%d机会--------------\n",3-n);
    		scanf("%s", userpassword);
    		printf("%d",strcmp(userpassword, password));
    		if (strcmp(userpassword, password) == 0)
    			return;
    		n++;
    	}
    	exit(0);
    }
    void sort(Student_Message* Stu)
    {
    	Student temp;
    	Student* Phead = Stu->head;
    	Student* Ptail = Phead;
    	while (Phead)
    	{
    		Ptail = Phead;
    		while (Ptail)
    		{
    			if(Phead->Student_score_1>=Ptail->Student_score_1)
    				Ptail = Ptail->next;
    			else
    			{
    				temp.Student_score_1 = Phead->Student_score_1;
    				temp.Student_grade = Phead->Student_grade;
    				strcpy( temp.Student_major ,Phead->Student_major);
    				strcpy(temp.Student_name, Phead->Student_name);
    				temp.Student_number = Phead->Student_number;
    
    				Phead->Student_score_1 = Ptail->Student_score_1;
    				Phead->Student_grade = Ptail->Student_grade;
    				Phead->Student_number = Ptail->Student_number;
    				strcpy(Phead->Student_major, Ptail->Student_major);
    				strcpy(Phead->Student_name, Ptail->Student_name);
    
    				Ptail->Student_score_1 = temp.Student_score_1;
    				Ptail->Student_grade = temp.Student_grade;
    				Ptail->Student_number = temp.Student_number;
    				strcpy(Ptail->Student_major, temp.Student_major);
    				strcpy(Ptail->Student_name,temp.Student_name );
    
    				Ptail = Ptail->next;
    			}	
    		}
    		Phead = Phead->next;
    	}
    }
    void readstudent(Student_Message*Stu)
    {
    	Student* new_temp=(Student*)malloc(sizeof(Student));
    	FILE* fp = fopen("学生信息.txt", "r");
    	if (fp == NULL)
    	{
    		printf("读取文件失败\n");
    		return;
    	}
    	fscanf(fp,"%d ", &Stu->Student_Num);
    	fscanf(fp, "%d\t%d\t%s\t%s\t%d\t", &new_temp->Student_number, &new_temp->Student_grade,
    		new_temp->Student_name, new_temp->Student_major, &new_temp->Student_score_1);
    	if (Stu->head == NULL)
    	{
    		Stu->head = new_temp;
    		Stu->head->pre = NULL;
    		Stu->head->next = NULL;
    		/*Stu->p = Stu->head->next;
    		Stu->p->pre = Stu->head;*/
    		Stu->p = Stu->head;
    	}
    	for (int i = 0; i < Stu->Student_Num - 1; i++)
    	{
    		Student* temp=(Student*)malloc(sizeof(Student));
    		fscanf(fp, "%d\t%d\t%s\t%s\t%d\t", &temp->Student_number, &temp->Student_grade,
    			temp->Student_name, temp->Student_major, &temp->Student_score_1);
    		temp->pre = Stu->p;
    		Stu->p->next = temp;
    		Stu->p = Stu->p->next;
    		Stu->p->next = NULL;
    	}
    	fclose(fp);
    }
    void keydowm(Student_Message*Stu)
    {
    	int choice;
    	printf("------------------------学生信息管理系统---------------------------\n\n");
    	printf("1.添加学生信息                      2.查找学生信息\n");
    	printf("3.修改学生信息                      4.删除学生信息\n");
    	printf("5.展示学生信息                      6.退出\n");
    	printf("7.保存到txt文件                     8.依照学生成绩排序\n");
    	printf("请在键盘敲下你的命令\n");
    	printf("--------------------------------------------------------------------\n");
    	scanf("%d", &choice);
    	getchar();
    	switch (choice)
    	{
    	case 1:
    		add_student(Stu); break;
    	case 2:
    		Search_Student(Stu);
    		break;
    	case 3:
    		change_student(Stu);
    		break;
    	case 4:
    		delete_student(Stu);
    		break;
    	case 5:
    		show_student(Stu);
    		break;
    	case 6:
    		exit(0);
    		break;
    	case 7:
    		save_file(Stu);
    		break;
    	case 8:
    		sort(Stu);	
    		break;
    	default:
    		break;
    	}
    	system("pause");
    	system("cls");
    }
    
    int main()
    {
    	Student_Message Stu;
    	Stu.Student_Num = 0;
    	Stu.head = NULL;
    	Stu.p = Stu.head;
    	land();
    	system("cls");
    	readstudent(&Stu);
    	while (1)
    	{
    		keydowm(&Stu);
    	}
    	return 0;
    }
    
  • 以下回答由chatgpt基于相关博客总结生成:

    对不起,您的问题不太清楚,请提供更明确的信息和问题的上下文,以便我更好地帮助您解决问题。如果您需要关于C语言方面的问题,请详细说明您遇到的问题或困难,并提供相关的代码和错误提示。感谢您的合作!

如果是C语言, 如果s和sum的类型是float, 那么结果不同
整数相除还是整数, 舍去余数.
如 5/2 == 2
强制转换为float, 则以浮点方式运算
如 5.0/2 == 2.5