关于C语言程序设计(考查课)期末测试

完成一个小型学生信息管理系统,要求分别用函数实现以下功能:

  1. 输入10个学生的姓名和学号;
  2. 按学号由小到大顺序排序,姓名顺序也随之调整,并分行输出排好序的学号和姓名;
  3. 输入一个学号,用折半查找法找出该学号的学生姓名,在主函数输入要查找的学号,并输出该学生姓名;
  4. 用主函数分别调用以上函数。

让我考虑考虑肿木写

然后我做了个小小界面

详情模块见下:

1、输入10个学生的姓名和学号:

效果:

代码:

void Shuru()    //输入函数 
{
		int i;
		printf("请输入10个学生的姓名和学号(中间空格):\n");
		for(i=0;i<10;i++)      // 使用for语句经行多次输入 
		{
			scanf("%s %lld",&student[i].name,&student[i].num);
		}
		printf("\n");
}

2、按学号由小到大顺序排序,姓名顺序也随之调整,并分行输出排好序的学号和姓名:

效果:

代码:

void Paixu()  //排序函数(按要求我选择冒泡法排序) 
{
		int i,j;
		printf("排完的顺序为:\n");
		for(i=0;i<9;i++)  
			for(j=0;j<9-i;j++)  //按学号对学生信息经行排序 
			{
				if(student[j].num > student[j+1].num)   //整型数字的比较 
			{
				student1=student[j];
				student[j]=student[j+1];
				student[j+1]=student1;
			}
		}
		for(i=0;i<10;i++)  // 使用for语句经行多次输出 
			printf("%lld %s\n",student[i].num,student[i].name);			
		printf("\n");	
}

3、 输入一个学号,用折半查找法找出该学号的学生姓名,在主函数输入要查找的学号,并输出该        学生姓名:

效果:(分为找到和找不到,我就随便输入了一个(没找到)就不演示找到了)

代码:

void Chazhao()  //查找函数(还是按照要求用的是折半法查找)     
{
		int top,bot,find,mid,i;
		find=0;top=0;bot=9;
		while(top<=bot && find==0)
		{
			mid=(top+bot)/2;   //找到位于中间的学号 
			if(num == student[mid].num)  
				find=1;                 //如果在中间就直接找到 
			else if(num < student[mid].num)  
                bot=mid-1;              //如果不在中间就向前一个寻找或后一个寻找 
			else top=mid+1;
		}	
		if(find==0)
			printf("%ld 输入有误或没有该名学生\n",num);
		else
		i=mid;	//将找到的位置赋值给i 
		printf("查询的这位学生姓名为:%s\n",student[i].name);	
		printf("\n");
}

4、用主函数分别调用以上函数:

效果见上:(懒得再发

直接献上代码:

#include<stdio.h>
//定义函数 
void Shuru();
void Paixu();
void Chazhao();
long long num;            //我是按照我们学号的长度(11位)超过long(长整型),我使用 
						  //Dev-C++ 。经查验VC++ 6.0未有录入long long(双长型)
struct students    	      //函数体 
{
	long long num; 	      //用双长型定义学号 
	char name[20];  	  //用字符型定义姓名数组 
}student[10],student1;	  //student[10]是结构体数组 ,student1 时结构体初始化 
	
int main()
{
		printf("********************\n");
		printf("*本程序所含一下项目*\n");
		printf("********************\n");
		printf("*****   菜单   *****\n");
		printf("*****  1.输入  *****\n"); 
		printf("*****  2.排序  *****\n");
		printf("*****  3.查找  *****\n");
		printf("********************\n");
		printf("\n");
		//主函数调用子函数	 	 	
  		Shuru();
  		Paixu();
		Printf(“请输入要查询的学号:”);
		scanf(“%lld”,&num);  
 		Chazhao();
		return 0;
}

好了思路解决接下来进入重点(直接献上全部代码)

#include<stdio.h>
//定义函数 
void Shuru();
void Paixu();
void Chazhao();
long long num;            //我是按照我们学号的长度(11位)超过long(长整型),我使用 
 					      //Dev-C++ 。经查验VC++ 6.0未有录入long long(双长型)
 										 
struct students           //函数体 
{
	long long num;        //用双长型定义学号 
	char name[20];        //用字符型定义姓名数组 
}student[10],student1;    //student[10]是结构体数组 ,student1 时结构体初始化 

int main()
{

	printf("************************************\n");
	printf("*********本程序所含一下项目*********\n");
	printf("************************************\n");
	printf("*************   菜单   *************\n");
	printf("*************  1.输入  *************\n"); 
	printf("*************  2.排序  *************\n");
	printf("*************  3.查找  *************\n");
	printf("************************************\n");
	printf("\n");
	//主函数调用子函数
	printf("------------------------------------\n");	 	 	
    Shuru();
    printf("------------------------------------\n");
    Paixu();
    printf("------------------------------------\n");
	printf("请输入要查询的学号:");
	scanf("%lld",&num);  
  Chazhao();
	return 0;
}

void Shuru()  //输入函数 
{
	int i;
	printf("请输入10个学生的姓名和学号(中间空格):\n");
	for(i=0;i<10;i++)// 使用for语句经行多次输入 
	{
		scanf("%s %lld",&student[i].name,&student[i].num);
	}
	printf("\n");
}

void Paixu()  //排序函数(冒泡法排序) 
{
	int i,j;
	printf("排完的顺序为:\n");
	for(i=0;i<9;i++)  
		for(j=0;j<9-i;j++)  //按学号对学生信息经行排序 
		{
			if(student[j].num > student[j+1].num) //整型数字的比较 
			{
				student1=student[j];
				student[j]=student[j+1];
				student[j+1]=student1;
			}
		}
	for(i=0;i<10;i++)  // 使用for语句经行多次输出 
		printf("%lld %s\n",student[i].num,student[i].name);			
	printf("\n");	
}

void Chazhao()  //查找函数(折半法查找)     
{	   
	int top,bot,find,mid,i;
	find=0;top=0;bot=9;
	while(top<=bot && find==0)
	{
		mid=(top+bot)/2;   //找到位于中间的学号 
		if(num == student[mid].num)  
			find=1;                    //如果在中间就直接找到 
		else if(num < student[mid].num)  
			bot=mid-1;                 //如果不在中间就向前一个寻找或后一个寻找 
		else top=mid+1;
	}	
	if(find==0)
		printf("%lld 输入有误或没有该名学生\n",num);
	else
	{
		i=mid;	//将找到的位置赋值给i 
		printf("查询的这位学生姓名为:%s\n",student[i].name);
	}
	printf("\n");
}

小白第一次写文章,有点小

如果有错误的地方,还请大佬斧正​​​​​​​ 

如果大家喜欢这篇文章,请一键三联(帅的坑定)

感谢大家的支持。

 

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
C语言程序设计是一门电大2021期末考试的科目。它是一门面向过程的编程语言,广泛应用于软件开发、嵌入式系统和操作系统等领域。在电大2021期末考试中,我们将会学习和测试一些与C语言相关的知识和技能。以下是一些可能涉及到的考点和题型。 首先,我们需要掌握C语言的基础知识,如变量的定义与使用、常量的定义与使用、数据类型的选择与转换等。这些基础知识是程序设计的基石,也是大多数问题的解决核心。 其次,我们需要了解C语言的控制语句,如条件语句(if-else)、循环语句(for、while)和跳转语句(break、continue)。这些语句能够帮助我们实现程序的流程控制和决策。 此外,我们还需要掌握C语言的数组和指针的使用方式。数组是一种存储多个相同类型元素的数据结构,而指针则可以用来操作内存地址。通过掌握数组和指针的使用,我们可以更方便地处理一些复杂的数据结构和算法。 在考试中,我们可能会遇到一些简单的编程题或者程序的改错题。这些题目旨在考察我们对C语言基本语法和常见程序错误的熟悉程度。 此外,我们还需要了解如何读写文件、使用预处理指令以及如何进行函数的定义与调用等高级特性。这些特性能够帮助我们提高程序的效率、可读性和可维护性。 总之,C语言程序设计是一门重要且实用的编程语言,在电大2021期末考试中,我们需要通过学习和练习来熟练掌握C语言的基础知识和编程技巧。希望以上回答能够对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值