‘壹’ 求一个c语言大程序
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<stdlib.h>
#define NULL 0
#define LEN sizeof(struct student)
struct student
{
int num;
char name[10];
int score;
struct student *next;
};
int n;
struct student *creat()
{
struct student *head;
struct student *p1,*p2;
p1=p2=(struct student *)malloc(LEN);
printf("请输入数据:\n");
printf("-学号---姓名---成绩-\n");
scanf("%d%s%d",&p1->num,p1->name,&p1->score);
head=NULL;
n=0;
while(p1->num!=NULL)
{
n=n+1;
if(n==1) head=p1;
else p2->next=p1;
p2=p1;
p1=(struct student *)malloc(LEN);
scanf("%d%s%d",&p1->num,p1->name,&p1->score);
}
p2->next=NULL;
return(head);
}
void print(struct student *head)
{
struct student *p;
p=head;
if(head!=NULL)
{
printf("-学号---姓名---成绩-\n");
while(p!=NULL)
{
printf("%d %s %d\n",p->num,p->name,p->score);
p=p->next;
}
}
else printf("没有数据 !\n");
}
struct student *del(int num,struct student *head)
{
int a=0;
struct student *p1,*p2;
do
{
p1=head;
if(head==NULL)
{
printf("没有数据 !\n");
goto end;
}
while(p1->num!=num&&p1->next!=NULL)
{
p2=p1;p1=p1->next;
}
if(p1->num==num)
{
if(p1==head) head=p1->next;
else p2->next=p1->next;
printf("删除记录学号为N0.%d\n",num);
n=n-1;
a++;
}
}while(p1->next!=NULL);
if(a==0)
printf("学号未找到 !\n");
end:
return(head);
}
struct student *add(int num,char name[],int score,struct student *head)
{
struct student *p0,*p1,*p2;
p0=(struct student *)malloc(LEN);
p0->num=num,strcpy(p0->name,name),p0->score=score;
p1=head;
if(num==0)
return(head);
if(head==NULL)
{
head=p0;
p0->next=NULL;
}
while(p0->num>p1->num&&p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(p0->num<=p1->num)
{
if(p1==head) head=p0;
else p2->next=p0;
p0->next=p1;
}
else
{
p1->next=p0;
p0->next=NULL;
}
printf("增加记录学号为:%d\n",num);
n=n+1;
return(head);
}
void num(struct student *head)
{
int num,a=0;
struct student *p;
printf("------请输入 \"0\" 结束输入--------\n");
do
{
p=head;
printf("请输入要查找的学号:");
scanf("%d",&num);
if(num!=0)
printf("-学号---姓名---成绩-\n");
while(p!=NULL)
{
if(p->num==num)
{
printf("%d %s %d\n",p->num,p->name,p->score);
a++;
}
p=p->next;
}
if(a==0&num!=0)
printf("学号没找到!\n");
a=0;
}while(num!=0);
system("cls");
}
void name(struct student *head)
{
char name[10],a=0;
struct student *p;
printf("------请输入 \"0\" 结束输入------\n");
do
{
p=head;
printf("请输入要查找的名字:");
scanf("%s",name);
if(name[0]!='0')
printf("-学号---姓名---成绩-\n");
while(p!=NULL)
{
if(strcmp(p->name,name)==0)
{
printf("%d %s %d\n",p->num,p->name,p->score);
a++;
}
p=p->next;
}
if(a==0&&name[0]!='0')
printf("名字未找到 !\n");
a=0;
}while(name[0]!='0');
system("cls");
}
void search(struct student *head)
{
int a;
struct student *p;
p=head;
do
{
printf("1.按学号查找\n2.按名字查找\n3.退出\n");
scanf("%d",&a);
system("cls");
switch(a)
{
case 1:num(p);break;
case 2:name(p);break;
}
}while(a!=3);
}
struct student *sort(struct student *head)
{
struct student *p1,*p2;
int i,j;
int num0,score0;
char string[10];
for(i=0;i<n-1;i++)
{
p1=head;
for(j=n-1;j>0;j--)
while(p1->next!=NULL)
{
p2=p1;p1=p1->next;
if(p2->score>p1->score)
{
num0=p1->num;
p1->num=p2->num;
p2->num=num0;
strcpy(string,p1->name);
strcpy(p1->name,p2->name);
strcpy(p2->name,string);
score0=p1->score;
p1->score=p2->score;
p2->score=score0;
}
}
}
return(head);
}
void main()
{
struct student *head=NULL;
int num,score,a;
char name[10];
do
{
printf("1.创建记录\n2.删除记录\n3.增加记录\n4.查找记录\n5按成绩排序\n6.显示当前记录\n7.退出\n");
scanf("%d",&a);
system("cls");
switch(a)
{
case 1:printf("------请输入 \"0 0 0\" 结束输入------\n");head=creat();print(head);getch();system("cls");break;
case 2:printf("------请输入 \"0\" 结束输入--------\n");do{printf("请输入要删除记录的学号:");scanf("%d",&num);head=del(num,head);print(head);}while(num!=0);system("cls");break;
case 3:printf("------请输入 \"0 0 0\" 结束输入------\n");do{printf("请输入要增加的记录数据:\n");printf("-学号---姓名---成绩-\n");scanf("%d%s%d",&num,name,&score);head=add(num,name,score,head);print(head);}while(num!=0);system("cls");break;
case 4:search(head);break;
case 5:head=sort(head);print(head);getch();system("cls");break;
case 6:print(head);getch();system("cls");break;
}
}while(a!=7);
以前C语言作业课程设计,希望认真仔细看后反复自己思考,这个只是参考!C语言程序设计大作业
1题目:学生信息管理系统
2 程序要求:
(1)学生信息录入功能
1)用户从键盘输入每个学生的信息:学号、姓名、性别、数学、英语、政治、语文四门课成绩。
2)可插入一个或多个学生信息到当前编辑的班级数据中。
(2)文件保存功能
1)学生信息每一班存为一个数据文件,数据文件可在程序中打开、编辑和重新保存;
2)用户输入学生信息可随时保存数据文件。
(3)文件打开功能
1)程序只能对当前打开的数据文件进行编辑。
(4)查询功能
1)浏览所有学生信息;
2)按学号查询学生信息;
3)按姓名查询学生信息;
4) 查询一个班总成绩和平均成绩;
5) 查询一个班某一门课总成绩和平均成绩;
6)查询某一门课分数段(<60,60-69,70-79,80-89,>90)学生数。
(5)报表输出功能
1) 按学号输出一个班学生信息:学号、姓名、性别、数学、英语、政治、语文成绩、总成绩,到屏幕和文件。
2) 按总成绩输出从高到低输出学号、姓名信息。
注:以上功能以菜单形式供用户使用,并有一定的容错功能。
3 开发语言环境:
Macrosoft VC++6.0或Turbo C2.0
4 数据结构:
数组或链表
5 程序源代码要求:
(1)函数名、变量名采用英文缩写,使用匈牙利命名法进行自说明;
(2)源代码的书写采用递进格式;
(3)程序行和程序段须有注释。
‘贰’ 我编了一个比较大的C语言程序,运行的时候占内存非常大,这是为什么呢
我晕,您都说了。。。大量的递归,。。。
1000个结构体。。。
这些都放在栈区,如果你用了动态内存(放在堆栈区)可能会好些。
‘叁’ 关于比较大小的C语言程序,不太理解,我是新新新的新手,希望能得到各位的帮助,谢谢!
1、C/C++语言一般由多个函数组成,每个函数功能的侧重点不同,所以完成的工作也不同。将这些函数的功能集中在一个函数中实现也是可以的,没有人硬性规定必须将各个功能模块分别用函数来完成,但试想,如果某个程序有上万条语句组成,调试这个代码时,你会发现,简单的笔误错误带来的错误远比想象的复杂,逻辑性错误就更别说了,足以让人发疯。
若按功能分成多个函数来完成,调试起来就轻松多了,还有,各个函数的功能是单一、独立的,这样的函数还可以为将来的代码所利用,以上说的是所谓的“模块化”编程的主要优点。
2、在现代C语言中,函数的声明格式为
[函数类型] <函数名>([参数表]);
[函数类型] : 是函数的返回值类型,可以是内置类型,比如int,double等,也可以是构造类型。
<函数名> : 遵循变量名的命名规则。
[参数表] : 是要传递给函数的变量,可以是内置类型,也可以是构造类型,还可以是函数指针。声明函数时,只需告诉编程程序的类型,是否给出变量名并不重要,就你的代码中max()函数而言,int max(int a,int b);是可以的,int max(int x,int y);也行,int max(int, int);也是对的,这个不重要,重要的是定义函数式,形参一定给出类型和名称。
以上问题都是刚接触C语言时遇到的,大家都有这个过程。以上介绍的不够专业,在以后的学习过程中再逐步加深吧。
‘肆’ C语言中头文件怎么用,如果要写一个比较大的程序怎么安排
包含什么文件要看你的C代码用到了什么系统函数,然后把它的都文件包含到你的头文件里就行,除了包含系统头文件外,基本把宏,函数声明等代码也包含在头文件里,C代码主要是些业务逻辑
‘伍’ 用c语言如何编写一个比较两个数大小的程序
C语言是一门重要的计算机编程基础课,我们怎么样利用C语言的知识来设计程序比较两个数的大小呢?
一、如何只是比较大小的话,直接一个判断就ok了。
代码如下:
#include <stdio.h>
int main()
{
int a=0,b=0;
scanf("%d %d",&a,&b);
if(a>b)
printf("%d > %d\n",a,b);
else if (a<b)
printf("%d < %d\n",a,b);
else
printf("相等\n");
return 0;
}
分析:定义两个变量,然后输入它们,用if判断它们的大小然后用输出语句输出结果。
二、步骤
1、首先,打开vc。
2、点击文件,新建。
3、选择win32 console application 并在右侧输入工程的名称和地址,确定。
4、选择一个空的工程,完成。
5、再次点击文件,新建。
6、选择c++ source file 并在右侧输入文件的名字,确定。
7、输入如图所示的代码,注意代码的输入要在英文输入法的环境下。
8、点击右上角的编译运行按钮。
9ok!得到了ij中的最大值并且完成了输出。这里以i=5 j=6为例,其他需要比较的数字改成相应的数字即可
注意事项
注意代码的输入要在英文输入法下。
字母注意大小写,符号不要错
‘陆’ 关于用 C语言编写比较大小的程序
这个是比较三个数的大小的,你看看有用不?
#include
<stdio.h>
void
main()
{
int
a;
int
b;
int
c;
int
d;
scanf("%d
%d
%d",&a,&b,&c);
//读入数据
if
(a>b)
d=a;
else
d=b;
//取a、b中的最大值
if
(d<c)
d=c;
printf("%d",d);
//输出三个数中的最大值
}
‘柒’ 如何用c语言编写一个程序 就是有三个数 求最大的一个
程序如下:
#include<stdio.h>
int main()
{
int a,b,c,max;
scanf("%d,%d,%d",&a,&b,&c);
max=a;
if(b>a) max=b;
if(b>c) max=b;
else if (c>a) max=c;
printf("max=%d ",max);
return 0;
}
基本思想:依次选出数组最小的数放到数组的前面。首先从数组的第二个元素开始往后遍历,找出最小的数放到第一个位置。再从剩下数组中找出最小的数放到第二个位置。以此类推,直到数组有序
(7)c语言一个比较大的程序扩展阅读:
C语言经典排序算法
一、交换排序
1、冒泡排序
基本思想:比较相邻的两个数,如果前者比后者大,则进行交换。每一轮排序结束,选出一个未排序中最大的数放到数组后面。
2、快速排序
基本思想:选取一个基准元素,通常为数组最后一个元素(或者第一个元素)。从前向后遍历数组,当遇到小于基准元素的元素时,把它和左边第一个大于基准元素的元素进行交换。在利用分治策略从已经分好的两组中分别进行以上步骤,直到排序完成。下图表示了这个过程。
二、插入排序
1、希尔(shell)排序
基本思想为在直接插入排序的思想下设置一个最小增量dk,刚开始dk设置为n/2。进行插入排序,随后再让dk=dk/2,再进行插入排序,直到dk为1时完成最后一次插入排序,此时数组完成排序。
三、选择排序
1、堆(Heap)排序
基本思想:先把数组构造成一个大顶堆(父亲节点大于其子节点),然后把堆顶(数组最大值,数组第一个元素)和数组最后一个元素交换,这样就把最大值放到了数组最后边。
把数组长度n-1,再进行构造堆,把剩余的第二大值放到堆顶,输出堆顶(放到剩余未排序数组最后面)。依次类推,直至数组排序完成。
四、归并排序
基本思想:归并算法应用到分治策略,简单说就是把一个答问题分解成易于解决的小问题后一个个解决,最后在把小问题的一步步合并成总问题的解。这里的排序应用递归来把数组分解成一个个小数组,直到小数组的数位有序,在把有序的小数组两两合并而成有序的大数组。
‘捌’ c语言一个大程序,用基本语句,100句左右
# include "stdio.h"
# include "stdlib.h"
# include "string.h"
# define NULL 0
struct xiangcun
{
char num[4]; //乡村的编号
char name[20]; //村名
int people; //总人数
int relieve; //救济人数
float amount; //救济总金额
struct xiangcun *next;
};
struct jiating
{
char num[10]; //乡村编号
char candidate[20]; //身份证号码
char fname[20]; //户主名字
char sex[2]; //性别
int fpeople; //家庭人数
float insert; //年收入
int time; //接受救助次数
struct jiating * next;
};
struct out
{
char candidate[20]; //户主身份证号码
char goodsname[20]; //商品名字
char date[15]; //发放日期
char unit[10]; //单位
float price; //单价
int count; //发放数量
float money; //金额
struct out *next;
};
struct xiangcun *h1,*tail1;
struct jiating *h2,*tail2;
struct out *h3,*tail3;
struct xiangcun * rebuilt1() //构建乡村链表
{
int n1=0;
struct xiangcun *p1,*p2,*head;
p1=p2=(struct xiangcun *)malloc(sizeof(struct xiangcun));
printf("\n\n\n\n\n\n 请输入以下信息:\n 乡村的编号:\n 村名:\n 总人数:\n 救济人数:\n 就系总金额:\n");
scanf("%s%s%d%d%f",p1->num,p1->name,&p1->people,&p1->relieve,&p1->amount);
while(strcmp(p1->num,"0")!=0)
{
n1++;
if(n1==1)
h1=p1;
else
p2->next=p1;
p2=p1;
p1=(struct xiangcun *)malloc(sizeof(struct xiangcun));
scanf("%s%s%d%d%f",p1->num,p1->name,&p1->people,&p1->relieve,&p1->amount);
}
p2->next=NULL;
return h1;
}
struct jiating * rebuilt2() //构建家庭信息链表
{
int n2=0;
struct jiating *p1,*p2,*head;
p1=p2=(struct jiating *)malloc(sizeof(struct jiating));
printf("\n\n\n\n\n\n 请输入以下信息:\n 乡村名字: \n 户主身份证号码: \n 户主名字:\n 户主性别:\n 家庭人数:\n 年收入:\n 接受救助的次数:\n");
scanf("%s%s%s%s%d%f%d",p1->num,p1->candidate,p1->fname,p1->sex,&p1->fpeople,&p1->insert,&p1->time);
while(strcmp(p1->candidate,"0")!=0)
{
n2++;
if(n2==1)
h2=p1;
else
p2->next=p1;
p2=p1;
p1=(struct jiating *)malloc(sizeof(struct jiating));
scanf("%s%s%s%s%d%f%d",p1->num,p1->candidate,p1->fname,p1->sex,&p1->fpeople,&p1->insert,&p1->time);
}
p2->next=NULL;
return h2;
}
struct out * rebuilt3() //构建物资信息链表
{
struct out *p1, *p2,*head;
int n3=0;
p1=p2=(struct out *)malloc(sizeof(struct out));
printf("\n\n\n\n\n\n 请输入以下信息:\n 户主身份证号码:\n 商品名字:\n 发放日期:\n 单位:\n 单价:\n 发放数量:\n 金额:\n");
scanf("%s%s%s%s%f%d%f",p1->candidate,p1->goodsname,p1->date,p1->unit,&p1->price,&p1->count,&p1->money);
while(strcmp(p1->candidate,"0")!=0)
{
n3++;
if(n3==1)
h3=p1;
else
p2->next=p1;
p2=p1;
p1=(struct out *)malloc(sizeof(struct out));
scanf("%s%s%s%s%f%d%f",p1->candidate,p1->goodsname,p1->date,p1->unit,&p1->price,&p1->count,&p1->money);
}
p2->next=NULL;
return h3;
}
int change1(xiangcun *head1,char *num) //对乡村信息的修改
{
struct xiangcun *p;
p=head1->next;
printf("\n\n\n\n\n\n");
while(1)
{
if(p==NULL)
{
return 1;
}
if(strstr(p->num,num))
{
printf(" 请重新输入要修改乡村的各项:");
scanf("%s%s%d%d%d",p->num,p->name,&p->people,&p->relieve,&p->amount);
return 1;
}
p=p->next;
}
}
int change2(jiating *head2,char *num) //对家庭信息的修改
{
struct jiating *p;
p=head2->next;
printf("\n\n\n\n\n\n");
while(1)
{
if(p==NULL)
{
return 1;
}
if(strstr(p->fname,num))
{
printf(" 请重新输入要修改家庭的各项:");
scanf("%s%s%s%s%d%f%d",p->num,p->candidate,p->fname,p->sex,&p->fpeople,&p->insert,&p->time);
return 1;
}
p=p->next;
}
}
int change3(out *head3,char *name) //对物资信息的修改
{
struct out *p;
p=head3->next;
printf("\n\n\n\n\n\n");
while(1)
{
if(p==NULL)
{
return 1;
}
if(strstr(p->goodsname,name))
{
printf(" 请重新输入要修改物资的各项:");
scanf("%s%s%s%s%f%d%f",p->candidate,p->goodsname,p->date,p->unit,&p->price,&p->count,&p->money);
return 1;
}
p=p->next;
}
}
void Csearch(xiangcun* head1) /* 查询全部乡村中每个村的救济总户数*/
{
struct xiangcun *p;
p=head1->next;
printf("\n\n\n\n\n\n");
if(p==NULL)
{
printf(" 全乡没有被救济的人!\n");
return ;
}
while(p!=NULL)
{
printf(" %s救济人数为:%d\n",p->name,p->relieve);
p=p->next;
}
return ;
}
int Esearch(xiangcun * head1,char *name) /*查询全部乡村中某个村的村救济总金额*/
{
struct xiangcun *p;
p=head1->next;
while(1)
{
if(p==NULL)
{
return 0;
}
if(strstr(p->name,name))
{
printf("\n\n\n\n\n\n %s的受救济总金额是:%g\n",p->name,p->amount);
return 1;
}
p=p->next;
}
}
int Fsearch(jiating* head2,char * name) /*查询某救济户 (如:张三)基本信息*/
{
struct jiating *p;
p=head2->next;
while(1)
{
if(p==NULL)
{
return 0;
}
if(strstr(p->fname,name))
{
printf("\n\n\n\n\n\n 户主的乡村编号:%s\n 户主的身份证号码:%s\n",p->num,p->candidate);
printf(" 户主名字是:%s\n 户主性别是:%s\n",p->fname,p->sex);
printf(" 家庭人数:%d\n 年收入:%g\n /接受救助次数:d\n",p->fpeople,p->insert,p->time);
return 1;
}
p=p->next;
}
}int frelieve(jiating *head2,out *head3,char * name)/*查询某救济户 (如:张三)救济户物资发放的全部信息*/
{
struct jiating * p;
p=head2->next;
while(1)
{
if(p==NULL)
{
return 0;
}
if(strstr(p->fname,name))
{
struct out *p1;
p1=head3->next;
printf("\n\n\n\n\n\n %s的物资信息:\n",p->fname);
while(1)
{
if(p1==NULL)
{
return 1;
}
if(strstr(p->candidate,p1->candidate))
{
printf("物资名字:%s\n发放日期:%s\n物资的量的单位:%s\n",p1->goodsname,p1->date,p1->unit);
printf(" 物资单价:%g\n 发放数量:%d\n 发放金额:%g\n",p1->price,p1->count,p1->money);
}
p1=p1->next;
}
}
p=p->next;
}
}
int Relieve(jiating * head2,out *head3,char * name,char *name2)/*查询某救济户 (如:张三)是否发放了某种救济物资 (如:矿泉水)的信息*/
{
struct jiating * p;
p=head2->next;
while(1)
{
if(p==NULL)
{
return 0;
}
if(strstr(p->fname,name))
{
out *p1;
p1=head3->next;
while (1)
{
if(strstr(p->candidate,p1->candidate)&&strstr(p1->goodsname,name2))
{
return 1;
}
p1=p1->next;
if(p1==NULL)
{
return 0;
}
}
}
p=p->next;
}
}
void tprint(xiangcun * head1)/*统计并输出全乡的人口总数、救济总户数、救济总金额*/
{
int peo_sum=0,re_sum=0;
float re_cost=0;
xiangcun *p=h1;
while(p!=NULL)
{
peo_sum+=p->people;
re_sum+=p->relieve;
re_cost+=p->amount;
p=p->next;
}
printf("\n\n\n\n\n\n 人口总数:%d\n 救济总户数:%d\n 救济总金额:%g\n",peo_sum,re_sum,re_cost);
}
‘玖’ 用C语言编写一个比较数的大小并排序的程序
#include<stdio.h>
void BubbleStort()
{
int i,j;
int arr[7];
printf("请输入要排数字:\n");
for(i=0;i<=6;i++)
scanf("%d",&arr[i]);
for(i=1;i<=6;i++)
{
for (j=0;j<=6-i;j++)
{
if(arr[j]>arr[j+1])
{
int t;
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
printf("排序后的数:\n");
for(i=0;i<=6;i++)
printf("%4d",arr[i]);
}
void SelectStort()
{
int i,j;
int arr[7];
printf("请输入要排数字:\n");
for(i=0;i<=6;i++)
scanf("%d",&arr[i]);
for(i=0;i<=5;i++)
{
int k;
k=i;
for(j=i+1;j<=6;j++)
{
if(arr[k]<arr[j])
k=j;
}
if(i!=k)
{
int t;
t=arr[i];
arr[i]=arr[k];
arr[k]=t;
}
}
printf("排序后的数:\n");
for(i=0;i<=6;i++)
printf("%4d",arr[i]);
}
void InsertSort()
{
int i,j;
int arr[7];
printf("请输入要排数字:\n");
for(i=0;i<=6;i++)
scanf("%d",&arr[i]);
for( i=1;i<=6;i++)
{
int t;
t = arr[i];
for(j=i;j>0 && arr[j-1]>arr[j];j--)
{
arr[j]=arr[j-1];
arr[j-1]=t;
}
}
printf("排序后的数:\n");
for(i=0;i<=6;i++)
printf("%4d",arr[i]);
}
void main(){
printf("----------------------------\n");
printf("---------1.选择排序---------\n");
printf("---------2.冒泡排序---------\n");
printf("---------3.插入排序---------\n");
printf("----------------------------\n");
printf("请输入你的选择(1,2,3):");
int c;
scanf ("%d",&c);
if (c==1)
BubbleStort();
if(c==2)
SelectStort();
if(c==3)
InsertSort();
}写的是7个 要是还有的话 你改下参数有几种方法排序
‘拾’ C语言中用可变参数编写一个比较大小的程序
#include <stdio.h>
int i,j,a[10],n,t;
void sort(int n)
{for(j=0;j<n-1;j++)
for(i=0;i<n-1-j;j++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
}
void main()
{
printf("请输入十个数:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("请输入你要到第几个数排序:\n");
scanf("%d",&n);
sort(n);
printf("输出排序结果:\n");
for(i=0;i<n;i++)
printf("%d ",&a[i]);}