C语言的编程题,大家谁帮帮我啊,老师出的题目,我实在做不出来啊。
发布网友
发布时间:2022-04-23 06:22
我来回答
共5个回答
热心网友
时间:2023-09-11 03:11
可以考虑用结构体数组——不如你自己先想想该怎么编吧、首先、输入、该怎么输入成绩和学号、、然后、排序用什么算法?——最后、输出就简单了——要多自己思考程序的流程、最好画画流程图——
热心网友
时间:2023-09-11 03:11
#include <stdio.h>
struct student
{
int place;
int no;
int grade;
};
void input(struct student stu[],int *p)
{
int i = 1;
scanf("%d%d", &stu[0].no, &stu[0].grade);
while (!(stu[i-1].no == -1 && stu[i-1].grade == -1))
{
scanf("%d%d", &stu[i].no, &stu[i].grade);
i++;
}
*p = i;
}
void output(struct student stu[],int y)
{
int i;
for (i = 0; i < y - 1; i++)
{
printf("%d %d %d\n", stu[i].place, stu[i].no, stu[i].grade);
}
}
void set(struct student stu[], int y)
{
int i, j;
struct student temp;
for (i = 0; i < y - 1; i++)
{
for (j = i + 1; j < y - 1; j++)
{
if (stu[i].grade < stu[j].grade)
{
temp = stu[i];
stu[i] = stu[j];
stu[j] = temp;
}
if (stu[i].grade == stu[j].grade)
{
if (stu[i].no > stu[j].no)
{
temp = stu[i];
stu[i] = stu[j];
stu[j] = temp;
}
}
}
}
stu[0].place = 1;
for (i = 1; i < y - 1; i++)
{
if (stu[i].grade == stu[i - 1].grade)
{
stu[i].place = stu[i - 1].place;
}
else
{
stu[i].place = i + 1;
}
}
}
int main(void)
{
struct student stu[100];
int y;
input(stu, &y);
set(stu, y);
output(stu, y);
return 1;
}
本来人家回答过的,不好插嘴的,但是,他们的感觉或多或少没有满足要求,有的是用的c++,有的在输入的时候没有使用函数,所以,我把我自己认为更符合要求的放在这里了
热心网友
时间:2023-09-11 03:12
#include <iostream>
#define MAX_STUDENT_NUM 10
#define INCREATMENT 5
using namespace std;
struct student
{
int id; //学号
int ach;//成绩
};
void Create(student *&stu,int &n);
void Sort(student *stu,int n);
void Change(student &a,student &b);
void Print(student *stu,int n);
int main()
{
student *stu;
int stu_num;
Create(stu,stu_num);
Sort(stu,stu_num);
Print(stu,stu_num);
return 0;
}
void Create(student *&stu,int &n)
{
printf("请输入学生学号、成绩:\n");
int id;
int grade;
scanf("%d",&id);
scanf("%d",&grade);
stu = (student *)malloc(sizeof(student)*MAX_STUDENT_NUM);
int i = 0;
while(id!=-1)
{
if(i>=MAX_STUDENT_NUM)
stu = (student *)realloc(stu,sizeof(student)*MAX_STUDENT_NUM);
stu[i].id = id;
stu[i].ach = grade;
i++;
scanf("%d",&id);
scanf("%d",&grade);
}
n = i;
}
void Sort(student *stu,int n)
{
int max;
for(int i = 0;i<n-1;i++)
{
max = i;
for(int j = i+1;j<n;j++)
{
if(stu[max].ach<stu[j].ach)
max = j;
}
if(max != i)
{
Change(stu[max],stu[i]);
}
}
}
void Print(student *stu,int n)
{
for(int i = 0,rank = 1;i<n;i++)
{
printf("%d %d %d\n",rank,stu[i].id,stu[i].ach);
if(i<n-1)
if(stu[i].ach!=stu[i+1].ach)
rank++;
}
}
void Change(student &a,student &b)
{
int tempid;
int tempach;
tempid = a.id;
a.id = b.id;
b.id = tempid;
tempach = a.ach;
a.ach = b.ach;
b.ach = tempach;
}
热心网友
时间:2023-09-11 03:12
#include <stdio.h>
struct stu
{
int num;
int score;
}a[5];
void input(stu a[],int i)
{
for(i=0;i<5;i++)
{
printf("输入第%d个学生的学号和成绩:",i);
scanf("%d,%d",a[i].num,a[i].score);
}
}
void output(stu a[],int i)
{
for(i=0;i<5;i++)
{
printf("%d,%d\n",a[i].num,a[i].score);
}
}
void order(stu a[],int i)
{
int p,p1,p2;
for(i=0;i<5;i++)
{
if(a[i].score<a[i+1].score)
{
p1=a[i].score;
a[i].score=a[i+1].score;
a[i+1].score=p1;
p2=a[i].num;
a[i].num=a[i+1].num;
a[i+1].num=p2;
}
if(a[i].score==a[i+1].score)
{
if(a[i].num>a[i].num)
{
p=a[i].num;
a[i].num=a[i+1].num;
a[i+1].num=p;
}
}
}
}
void main()
{
input(a,5);
printf("原始数据:");
output(a,5);
order(a,5);
printf("排序之后的数据:");
output(a,5);
}
大致就是这样吧
希望对你有帮助
热心网友
时间:2023-09-11 03:13
#include "stdio.h"
#define MAX_NUM 2000
typedef struct _STUDENT
{
int no;
int grade;
}STUDENT;
void sort(STUDENT *stu, int len);
void output(STUDENT *stu, int len);
int main(void)
{
STUDENT stu[MAX_NUM];
int no, grade;
int i = 0;
while (scanf("%d%d", &no, &grade) && !(no == -1 && grade == -1))
{
stu[i].no = no;
stu[i].grade = grade;
++i;
}
sort(stu, i);
output(stu, i);
return 0;
}
void sort(STUDENT *stu, int len)
{
int i, j;
for (i=0; i<len; i++)
{
for (j=0; j<len-i-1; j++)
{
if (stu[j].grade < stu[j + 1].grade)
{
int swap, no;
swap = stu[j].grade;
no = stu[j].no;
stu[j].grade = stu[j + 1].grade;
stu[j].no = stu[j + 1].no;
stu[j + 1].grade = swap;
stu[j + 1].no = no;
}
else if (stu[j].grade == stu[j + 1].grade)
{
if (stu[j].no > stu[j + 1].no)
{
int swap, no;
swap = stu[j].grade;
no = stu[j].no;
stu[j].grade = stu[j + 1].grade;
stu[j].no = stu[j + 1].no;
stu[j + 1].grade = swap;
stu[j + 1].no = no;
}
}
}
}
}
void output(STUDENT *stu, int len)
{
int i;
for (i=0; i<len; i++)
{
printf("%d %d %d\n", i + 1, stu[i].no, stu[i].grade);
}
}
按你的要求写的 看看行不行!
C语言程序设计 我是C语言初学者,有一道看程序的题我有些弄不懂,还请...
答案:C A:是如果a>b,则一程序一直执行到“b=c;”,效果是换a与b的值;B:是如果a>b,则执行{ }里的语句,效果是交换a与b的值;C:是如果a>b,则执行c=a; 无论a是否大于b,c的值都要给a,a-b;没什么作用;D:是如果a>b,则效果是交换a与b的值,c相当于中转站,a-b;没什么作...
C语言练习 求大师帮我看看错误在哪里,/(ㄒoㄒ)/~~半天搞不出来!
当一个实数 按照float存储的时候 会存成一个近似数 这个就是精度问题 比如 如果输入一个 1.23 可能实际存的是1.23000002 这样按照你的写法 输出的就不是 1 23 而是1 23000002 所以这个题的思路 是不能直接存成float的 而是直接存成int 如果确定输入中有小数部分那么 scanf("%d.%d", &x, &y)...
C语言编程题,急,请大家帮忙啊,不会的也试试啊,急
1.include"stdio.h"defineL100 defineU200 defineFACTOR5 voidmain(){inti;printf("%5d之间%5d不能被%5d蒸出的数如下:\n",L,U,FACTOR);for(i=L;i<=U;i++)if(i%FACTOR)printf("%-4d",i);} 2.include"stdio.h"voidmain(){ intx[12]={2,45,67,12,3,9,76,45,23,42,6,5}...
一道相当棘手的C语言题目,希望朋友们帮帮我
第一层:x=3 if 语句成立,进入第二层 第二层:x=1 if 语句不成立 输出 x=1 第二层结束,返回第一层 输出x=3 第一层结束,放回主函数
有几道C语言题请大家帮我解答一下,各位哥哥姐姐帮帮忙啊!小弟感激不...
1. 变量名 2. 逗号表达式,其值取最后一项。78/5 = 15(小数部分不要)3.选A,--x相当于x=x-1;4.321。求余运算 5.printf("格式控制", [输出参数1,...])scanf("格式控制", [&输入参数1,...])6.没题目
C语言程序设计题,哥哥姐姐帮帮我 啊
请输入一个不大于5位的数字:1234 这是一个4位数 逆序输出:4 3 2 1 其他3位,2位,1位的效果同上。源程序如下:include<stdio.h> main(){ int a;printf("请输入一个不大于5位的数字:\n");scanf("%d",&a);if(a/10000){printf("这是一个5位数\n");printf("逆序输出:%d %d...
C语言编程,1到100,求质数,谁能帮帮我啊,网上找的,不完整,看不懂,毫无...
return 0; } return 1;}int main(){ int i,k=0; printf("1至100之间的素数从小到大分别为:\n"); for(i=2;i<=100;i++) { //依次判断所有数字是否为素数 if(f(i)) { k++; printf("%d\t",i); } } printf("\n总共%d个。\n",k ); return 0;} ...
求帮忙~计算机C语言的编程题!大学选的辅修课没去过,要考试了不会呀...
有些题别人已经给出了,我引用一下啊(懒得重写了),大家不要喷我哦~~~第一题 include<stdio.h> int main(){ int d1,d2,d3,n=253;d1=n%10;d2=n/10%10;d3=n/100%10;printf("253的:\n个位数为%d\n十位数为%d\n百位数为%d\n",d1,d2,d3);return 0;} 第二题 include<s...
我是大一的学生 老师让我们做一个c语言课程设计 现在给出三道 希望大家...
我是大一的学生 老师让我们做一个c语言课程设计 现在给出三道 希望大家 帮帮忙 编写一个工资管理的程序。这边的是第二和三题编写一个学生成绩管理的程序。由键盘输入数据(最好要考虑输入数据输入的格式及输入数据的有效性),然后进行以下的功能实现。程序要求主函数是一个功能选择菜单,... 这边的是第二和三题...
求C语言编程大佬帮忙!这道题的逻辑哪里出错了!找了几个小时了没搞明白...
思路如下:这个问题实际上是生成0~9的全排列,然后根据每个数在格子里的位置判断每个排列是否符合要求。百度了一个全排列算法稍做修改,得到以下代码,输出的有效方案数是1580,在我这里输出大约在70ms到100ms左右。百度这个代码排版垃圾得无以复加,vs里面排得好好复制过来全乱,不再重排了。另外,生成...