c语言基本结构体编程题急!!

supportkitty 2015-09-28 08:48:41
1. 设有一组学生的成绩数据已经放在结构数组boy中,
1)计算不及格人数。
要求:使用结构指针变量作为函数参数编程。
struct stu
{ int num;
char name[20];
char sex;
float score;
}boy[6]={{101,“li ping ”,’m’,45},
{102,“zhang ping”,’m’,62.5},
{103,“he fang”,’m’,92.5},
{104,“cheng ling”,’f’,87},
{106,“wang ming”,’m’,58},};

2) 在学生wang ming之前添加一条记录“105, ma li, f, 20”,并输出所有学生信息。
3) 学生cheng ling已转学,请将其记录从数组中删除,并输出所有学生信息。
...全文
475 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bupt_ljh 2019-02-19
  • 打赏
  • 举报
回复
#include <iostream> #include <cstdio> using namespace std; struct stu{ int num; string name; char sex; float score; }boy[6]={ {101,"li ping",'m',45}, {102,"zhang ping",'m',62.5}, {103,"he fang",'m',92.5}, {104,"cheng ling",'f',87}, {106,"wang ming",'m',58}, }; typedef struct stu struct1;//自定义的第一种结构体类型struct1 /*struct1* edit(struct1*moumou) { moumou->num=105; moumou->name="ma li"; moumou->sex='f'; moumou->score=58; } */ void edit1(struct1*shuzu)//把结构体数组的地址传进来 结构体数组boy的地址是boy(指向第一个结构体) {//直接复制第5个结构体到第六个 用=赋值 *(shuzu+5)=*(shuzu+4); *(shuzu+4)={105,"ma li", 'f', 20};//要保留' "赋值 } void edit2(struct1*shuzu) { *(shuzu+3)=*(shuzu+4); *(shuzu+4)=*(shuzu+5); *(shuzu+5)={0}; } int main() { //1添加wang ming 号码换成105 //2将cheng ling弄走 //用结构体指针 //struct1*pstu=&boy[3]; edit1(boy); for(int i=0;i<=5;i++) { cout<<boy[i].num<<' '<<boy[i].name<<' '<<boy[i].sex<<' '<<boy[i].score<<endl; } edit2(boy); for(int i=0;i<=4;i++) { cout<<boy[i].num<<' '<<boy[i].name<<' '<<boy[i].sex<<' '<<boy[i].score<<endl; } }
gh_99 2015-09-30
  • 打赏
  • 举报
回复
引用 楼主 supportkitty 的回复:
1. 设有一组学生的成绩数据已经放在结构数组boy中, 1)计算不及格人数。 要求:使用结构指针变量作为函数参数编程。 struct stu { int num; char name[20]; char sex; float score; }boy[6]={{101,“li ping ”,’m’,45}, {102,“zhang ping”,’m’,62.5}, {103,“he fang”,’m’,92.5}, {104,“cheng ling”,’f’,87}, {106,“wang ming”,’m’,58},}; 2) 在学生wang ming之前添加一条记录“105, ma li, f, 20”,并输出所有学生信息。 3) 学生cheng ling已转学,请将其记录从数组中删除,并输出所有学生信息。
希望对你有帮助,代码如下:

#include <stdio.h>
#include <string.h>

struct stu 
{  int num; 
   char name[20]; 
   char sex; 
   float score; 
}boy[6]={{101,"li ping",'m',45},
		{102,"zhang ping",'m',62.5},
		{103,"he fang",'m',92.5},
		{104,"cheng ling",'f',87},
		{106,"wang ming",'m',58},};

int sea(char name[])
{
	int i;
	for(i=0;i<6;i++)
	{
		if(0==strcmp(name,boy[i].name))
		{
			return i;
		}
	}
	return -1;
}

void del(char name[])
{
	int i,j;
	i=sea(name);
	if(i!=-1)
	{
		
		for(j=i;j<5;j++)
		{
			strcpy(boy[j].name,boy[j+1].name);
			boy[j].num=boy[j+1].num;
			boy[j].sex=boy[j+1].sex;
			boy[j].score=boy[j+1].score;
		}
		strcpy(boy[5].name,"0");
		boy[5].num=0;
		boy[5].sex='d';
		boy[5].score=0;
		printf("操作成功!\n");
	}
	else
	{
		printf("操作失败!\n");
	}
}
void ins(int i,struct stu s)
{
	int j;
	for(j=5;j>i;j--)
	{
		strcpy(boy[j].name,boy[j-1].name);
		boy[j].num=boy[j-1].num;
		boy[j].sex=boy[j-1].sex;
		boy[j].score=boy[j-1].score;
	}
	strcpy(boy[j].name,s.name);
	boy[j].num=s.num;
	boy[j].sex=s.sex;
	boy[j].score=s.score;
	printf("操作成功!\n");

}
void main(void)
{
	int i,menu;
	bool flag=true;
	char name[20]={'\0'};
	while(flag)
	{
		
		printf("请输入正确的功能号(0:退出 1:添加 2:删除)");
		scanf("%d",&menu);
		switch(menu)
		{
		case 0:
			flag=false;
			break;
		case 1:
			printf("输入要插入在那个学生之前:");
			getchar();
			scanf("%[a-z ]",name);

			if(sea(name)!=-1)
			{
				struct stu s;
				printf("请输入要插入的学生信息");
				scanf("%d%[^,]%*[,]%f%c",&s.num,s.name,&s.score,&s.sex);
				ins(sea(name),s);
			}
			else
			{
				printf("操作失败!\n");
			}
			for(i=0;i<6;i++)
			{
				printf("name:%s,sex:%c,num:%d,score:%f\n",boy[i].name,boy[i].sex,boy[i].num,boy[i].score);
			}
			break;
		case 2:
			printf("输入要删除的学生姓名:");
			getchar();
			scanf("%[a-z ]",name);
			del(name);
			for(i=0;i<6;i++)
			{
				printf("name:%s,sex:%c,num:%d,score:%f\n",boy[i].name,boy[i].sex,boy[i].num,boy[i].score);
			}
			break;
		default :
			printf("功能号为(0:退出 1:添加 2:删除)\n");
		}
	}
}
楼上为测试时输入方法。
gh_99 2015-09-30
  • 打赏
  • 举报
回复
liubo_1993 2015-09-30
  • 打赏
  • 举报
回复
天天都能看到作业题
qq_30665499 2015-09-29
  • 打赏
  • 举报
回复
没有你这样直接贴问题求代码的吧亲!
leee7338 2015-09-29
  • 打赏
  • 举报
回复
先自己想想,看看书,查查资料。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧