求一个C语言大程序

恩100行左右最好能给出解释解释清楚的可以追分不要百度随便搜就能搜出来的那种... 恩 100行左右 最好能给出解释 解释清楚的可以追分 不要百度随便搜就能搜出来的那种 展开
 我来答
匿名用户
2013-07-25
展开全部
#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)程序行和程序段须有注释。
匿名用户
2013-07-25
展开全部
1.这是自己写的2.这个是图书管理系统3.结构简单,功能也较简单,适用于不太懂c的人4.实现的功能有:图书信息录入,信息查看,按书名和按作者名查询5.程序不是很长,但也不短,不懂具体要介绍些什么,要解释的地方另外在说6.程序如下:#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>struct bookt
{
int num;
char name[20];//书名
char ater[6];//作者名
char codes[6];//分类号
char unit[20];//出版单位
char time[20];//出版时间
int price;//价格
};
struct bookt book[100];
int count=0;//用于数据的个数//**********************************************************主菜单
void mune()
{ system("cls");
printf("\n");
printf("__________________________________\n");
printf(" 1.录入 \n");
printf(" 2.查看 \n");
printf(" 3.查询(按书名) \n");
printf(" 4.查询(按作者) \n");
printf(" 5.退出 \n");
printf(" \n");
printf("__________________________________\n");}
//**********************************************************录入
void input(struct bookt stud[],int mm)
{
for(int i=0;i<mm;i++)
{
count++; //这里录入的数据是从stu[1]开始的,n++用于可以今后添加数据
printf("输入:\n",i+1);
printf("代号");
scanf("%d",&stud[count].num);
printf("书名");
scanf("%s",&stud[count].name);
printf("作者");
scanf("%s",&stud[count].ater);
printf("分类号");
scanf("%s",&stud[count].codes);
printf("出版单位");
scanf("%s",&stud[count].unit);
printf("出版时间");
scanf("%s",&stud[count].time);
printf("价格");
scanf("%d",&stud[count].price);
printf("___________________\n");
}

}//**********************************************************显示所有
void output(int mm)
{
printf("代号\t书名\t作者\t类别号\t出版单位\t出版时间\t价格\n");
for(int i=1;i<=mm;i++)
{
printf("%d\t%s\t%s\t%s\t%s\t%s\t%d\n",book[i].num,book[i].name,book[i].ater,book[i].codes,book[i].unit,book[i].time,book[i].price);
}
printf("___________________");
} //**********************************************************主函数
void main()
{
int num,n,i,m=0;
char name[40];
while(1){
mune();
scanf("%d",&n);
switch(n)
{
case 1:
printf("请输入人数:");
scanf("%d",&num);
input(book,num);
printf("___________________");
getch();
system("cls");
break;
case 2:
output(count);
getch();
system("cls");
break;
case 3:printf("请输入要查询书名:\n");
fflush(stdin);
scanf("%s",name);
printf("\n");
printf("代号\t书名\t作者\t类别号\t出版单位\t出版时间\t价格\n");
printf("_____________________________________________________________________\n\n");
for(i=1;i<=count;i++)
{
if(strcmp(book[i].name,name)==0)
{
printf("%d\t%s\t%s\t%s\t%s\t%s\t%d\n",book[i].num,book[i].name,book[i].ater,book[i].codes,book[i].unit,book[i].time,book[i].price);
m=1;
}
}
if(m==0) printf("没有找到 -_-||",name);
getch();
system("cls");
break;
case 4:
printf("请输入要查询的作者名:\n");
fflush(stdin);
scanf("%s",name);
printf("\n");
printf("代号\t书名\t作者\t类别号\t出版单位\t出版时间\t价格\n");
printf("_____________________________________________________________________\n\n");
for(i=1;i<=count;i++)
{
if(strcmp(book[i].ater,name)==0)
{
printf("%d\t%s\t%s\t%s\t%s\t%s\t%d\n",book[i].num,book[i].name,book[i].ater,book[i].codes,book[i].unit,book[i].time,book[i].price);
m=1;
}
}
if(m==0) printf("没有找到 -_-||",name);
getch();
system("cls");
break; case 5:exit(0);break; }

}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-25
展开全部
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <malloc.h>

#define WIDTHBYTES(i) ((i+31)/32*4)
//#pragma warning(disable: 4996)
int main()
{
BITMAPFILEHEADER bf; //BMP文件头结构体
BITMAPINFOHEADER bi; //BMP信息头结构体

FILE* fp; //指向文件的指针
RGBQUAD *ipRGB; //
DWORD LineByte,ImgSize;
DWORD NumColors;
unsigned char * * Imgdata;
int i,j;
char fileName[256];

//打开文件
printf("please enter filename:");
scanf("%s",fileName);
fp=fopen(fileName,"rb");
if(fp == NULL){
printf("Open file error!");
exit(0);
}

//读取信息头、文件头
fread(&bf,sizeof(BITMAPFILEHEADER),1,fp); //把指针fp所指向的文件的头信息写入bf(地址)
fread(&bi,sizeof(BITMAPINFOHEADER),1,fp);

LineByte=(DWORD)WIDTHBYTES(bi.biWidth*bi.biBitCount); //计算位图的实际宽度并确保它为32的倍数
ImgSize=(DWORD)LineByte*bi.biHeight;

if (bi.biClrUsed != 0 )
NumColors=(DWORD)bi.biClrUsed;
else
switch (bi.biBitCount)
{
case 1:NumColors=2;break;
case 4:NumColors=16;break;
case 8:NumColors=256;break;
case 24:NumColors=0;break;
}
//分配调色板内存
if(bi.biBitCount!=24){
ipRGB=(RGBQUAD *)malloc(NumColors*sizeof(RGBQUAD));
fread(ipRGB,sizeof(RGBQUAD),NumColors,fp);
}

Imgdata=new unsigned char*[bi.biHeight]; //声明一个指针数组
if(bi.biBitCount==24){
fseek(fp, 4, SEEK_CUR);//sizeof(RGBQUAD)

for ( i=(bi.biHeight)-1;i>=0;i--)
Imgdata[i]=new unsigned char[bi.biWidth*3]; //每个数组元素也是一个指针数组

for ( i=(bi.biHeight)-1;i>=0;i--)
for(j=0;j<bi.biWidth*3;j++)
fread(&Imgdata[i][j],1,1,fp);//每次只读取一个1字节,存入数组
} else {

for ( i=(bi.biHeight)-1;i>=0;i--)
Imgdata[i]=new unsigned char[bi.biWidth]; //每个数组元素也是一个指针数组

for ( i=(bi.biHeight)-1;i>=0;i--)
for(j=0;j<bi.biWidth;j++)
fread(&Imgdata[i][j],1,1,fp);//每次只读取一个1字节,存入数组
}

fclose(fp);
//写入另一个文件
fp=fopen("mybmp.bmp","wb");
fwrite(&bf,sizeof(BITMAPFILEHEADER),1,fp);
fwrite(&bi,sizeof(BITMAPINFOHEADER),1,fp);

if(bi.biBitCount!=24){
fwrite(ipRGB,sizeof(RGBQUAD),NumColors,fp);

for (i=(bi.biHeight)-1 ;i>=0;i--)
for (j=0 ;j<bi.biWidth;j++) {
Imgdata[i][j] = 255 - Imgdata[i][j];
fwrite(&Imgdata[i][j],1,1,fp);
}
}else{
for (i=(bi.biHeight)-1 ;i>=0;i--)
for (j=0 ;j<bi.biWidth*3;j++) {
Imgdata[i][j] = 255 - Imgdata[i][j];
fwrite(&Imgdata[i][j],1,1,fp);
}
}
free(Imgdata);
fclose(fp);
return 0;
}
bmp 图片的反色处理 特地加了注释 自己看看吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-25
展开全部
败笔技术论坛,国内最大的C语言论坛,那里有很多教程可以免费看的,建议你去那里学习吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式