C语言高手请帮忙!!!

来自:    更新日期:早些时候
急!!!请C语言高手帮忙解决!!!非常感谢!!!~

这个是比较大的C语言程序(个人认为)
你的这个C语言题不会出现在考试中
应该是客后题或者项目模拟吧?
我也懒得写。,。。太多了
如果有人有做好的类似程序才会给你发的

给你一个链接,里面有几个做的还不错的,参考一下吧
http://tieba.baidu.com/f?kz=37076140

===========================================
除了上面那个链接外,再给你一个,基本和你的要求差不多了,简单改一改就行。编译运行都没有问题。

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int shoudsave=0; //
struct student
{
char num[10];//学号
char name[20];
char sex[4];
int cgrade;
int mgrade;
int egrade;
int totle;
int ave;
char neartime[10];//最近更新时间
};

typedef struct node
{
struct student data;
struct node *next;
}Node,*Link;

void menu()
{
printf("********************************************************************************");
printf("1输入学生资料2删除学生资料
");
printf("3查询学生资料4修改学生资料
");
printf("5显示学生资料6统计学生成绩
");
printf("7排序学生成绩8保存学生资料
");
printf("9获取帮助信息0退出系统
");
printf("********************************************************************************
");
}

void printstart()
{
printf("-----------------------------------------------------------------------
");
}
void Wrong()
{
printf("
=====>提示:输入错误!
");
}

void Nofind()
{
printf("
=====>提示:没有找到该学生!
");
}

void printc() // 本函数用于输出中文
{
printf(" 学号 姓名 性别 英语成绩 数学成绩 C语言成绩 总分 平均分
");
}

void printe(Node *p)//本函数用于输出英文
{
printf("%-12s%s%s%d%d%d %d %d
",p->data.num,p->data.name,p->data.sex,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.totle,p->data.ave);
}

Node* Locate(Link l,char findmess[],char nameornum[]) //该函数用于定位连表中符合要求的接点,并返回该指针
{
Node *r;
if(strcmp(nameornum,"num")==0) //按学号查询
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.num,findmess)==0)
return r;
r=r->next;
}
}
else if(strcmp(nameornum,"name")==0) //按姓名查询
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.name,findmess)==0)
return r;
r=r->next;
}
}
return 0;
}

void Add(Link l) //增加学生
{
Node *p,*r,*s;
char num[10];
r=l;
s=l->next;
while(r->next!=NULL)
r=r->next; //将指针置于最末尾
while(1)
{
printf("请你输入学号(以'0'返回上一级菜单:)");
scanf("%s",num);
if(strcmp(num,"0")==0)
break;
while(s)
{
if(strcmp(s->data.num,num)==0)
{
printf("=====>提示:学号为'%s'的学生已经存在,若要修改请你选择'4 修改'!
",num);
printstart();
printc();
printe(s);
printstart();
printf("
");
return;
}
s=s->next;
}

p=(Node *)malloc(sizeof(Node));

strcpy(p->data.num,num);
printf("请你输入姓名:");
scanf("%s",p->data.name);
getchar();
printf("请你输入性别:");
scanf("%s",p->data.sex);
getchar();
printf("请你输入c语言成绩:");
scanf("%d",&p->data.cgrade);
getchar();
printf("请你输入数学成绩:");
scanf("%d",&p->data.mgrade);
getchar();
printf("请你输入英语成绩:");
scanf("%d",&p->data.egrade);
getchar();
p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;
p->data.ave=p->data.totle / 3;
//信息输入已经完成
p->next=NULL;
r->next=p;
r=p;
shoudsave=1;

}
}

void Qur(Link l) //查询学生
{
int sel;
char findmess[20];
Node *p;

if(!l->next)
{
printf("
=====>提示:没有资料可以查询!
");
return;
}
printf("
=====>1按学号查找
=====>2按姓名查找
");
scanf("%d",&sel);
if(sel==1)//学号
{
printf("请你输入要查找的学号:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("查找结果
");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else if(sel==2) //姓名
{
printf("请你输入要查找的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
printf("查找结果
");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else
Wrong();

}

void Del(Link l) //删除
{
int sel;
Node *p,*r;
char findmess[20];
if(!l->next)
{
printf("
=====>提示:没有资料可以删除!
");
return;
}
printf("
=====>1按学号删除
=====>2按姓名删除
");
scanf("%d",&sel);
if(sel==1)
{
printf("请你输入要删除的学号:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("
=====>提示:该学生已经成功删除!
");
shoudsave=1;
}
else
Nofind();
}
else if(sel==2)
{
printf("请你输入要删除的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("
=====>提示:该学生已经成功删除!
");
shoudsave=1;
}
else
Nofind();
}
else
Wrong();
}

void Modify(Link l)
{
Node *p;
char findmess[20];
if(!l->next)
{
printf("
=====>提示:没有资料可以修改!
");
return;
}
printf("请你输入要修改的学生学号:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("请你输入新学号(原来是%s):",p->data.num);
scanf("%s",p->data.num);
printf("请你输入新姓名(原来是%s):",p->data.name);
scanf("%s",p->data.name);
getchar();
printf("请你输入新性别(原来是%s):",p->data.sex);
scanf("%s",p->data.sex);
printf("请你输入新的c语言成绩(原来是%d分):",p->data.cgrade);
scanf("%d",&p->data.cgrade);
getchar();
printf("请你输入新的数学成绩(原来是%d分):",p->data.mgrade);
scanf("%d",&p->data.mgrade);
getchar();
printf("请你输入新的英语成绩(原来是%d分):",p->data.egrade);
scanf("%d",&p->data.egrade);
p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;
p->data.ave=p->data.totle/3;
printf("
=====>提示:资料修改成功!
");
shoudsave=1;
}
else
Nofind();

}

void Disp(Link l)
{
int count=0;
Node *p;
p=l->next;

if(!p)
{
printf("
=====>提示:没有资料可以显示!
");
return;
}
printf("显示结果
");
printstart();
printc();
printf("
");
while(p)
{
printe(p);
p=p->next;
}
printstart();
printf("
");
}

void Tongji(Link l)
{
Node *pm,*pe,*pc,*pt,*pa; //用于指向分数最高的接点
Node *r=l->next;
if(!r)
{
printf("
=====>提示:没有资料可以统计!
");
return ;
}
pm=pe=pc=pt=pa=r;
while(r!=NULL)
{
if(r->data.cgrade>=pc->data.cgrade)
pc=r;
if(r->data.mgrade>=pm->data.mgrade)
pm=r;
if(r->data.egrade>=pe->data.egrade)
pe=r;
if(r->data.totle>=pt->data.totle)
pt=r;
if(r->data.ave>=pa->data.ave)
pa=r;
r=r->next;
}
printf("------------------------------统计结果--------------------------------
");
printf("总分最高者:%s %d分
",pt->data.name,pt->data.totle);
printf("平均分最高者:%s %d分
",pa->data.name,pa->data.ave);

printf("英语最高者:%s %d分
",pe->data.name,pe->data.egrade);
printf("数学最高者:%s %d分
",pm->data.name,pm->data.mgrade);
printf("c语言最高者:%s %d分
",pc->data.name,pc->data.cgrade);
printstart();
}

void Sort(Link l)
{
Link ll;
Node *p,*rr,*s;

ll=(Link)malloc(sizeof(Node)); //用于做新的连表
ll->next=NULL;

if(l->next==NULL)
{
printf("
=====>提示:没有资料可以排序!
");
return ;
}
p=l->next;
while(p)
{
s=(Node*)malloc(sizeof(Node)); //新建接点用于保存信息
s->data=p->data;
s->next=NULL;

rr=ll;
while(rr->next!=NULL && rr->next->data.totle>=p->data.totle)
rr=rr->next;
if(rr->next==NULL)
rr->next=s;
else
{
s->next=rr->next;
rr->next=s;
}
p=p->next;
}
free(l);
l->next=ll->next;
printf("
=====>提示:排序已经完成!
");
}

void Save(Link l)
{
FILE* fp;
Node *p;
int flag=1,count=0;
fp=fopen("c:\\student","wb");
if(fp==NULL)
{
printf("
=====>提示:重新打开文件时发生错误!
");
exit(1);
}
p=l->next;

while(p)
{
if(fwrite(p,sizeof(Node),1,fp)==1)
{
p=p->next;
count++;
}
else
{
flag=0;
break;
}
}
if(flag)
{
printf("
=====>提示:文件保存成功.(有%d条记录已经保存.)
",count);
shoudsave=0;
}
fclose(fp);
}

void main()
{
Link l;//连表
FILE *fp; //文件指针
int sel;
char ch;
char jian;

int count=0;
Node *p,*r;

l=(Node*)malloc(sizeof(Node));
l->next=NULL;
r=l;

while(1)
{
menu();
printf("请你选择操作:");
scanf("%d",&sel);

if(sel==0)
{
if(shoudsave==1)
{ getchar();
printf("
=====>提示:资料已经改动,是否将改动保存到文件中(y/n)?
");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
Save(l);
}
printf("
=====>提示:你已经退出系统,再见!
");
break;
}
switch(sel)
{
case 1:Add(l);break; //增加学生
case 2:Del(l);break;//删除学生
case 3:Qur(l);break;//查询学生
case 4:Modify(l);break;//修改学生
case 5:Disp(l);break;//显示学生
case 6:Tongji(l);break;//统计学生
case 7:Sort(l);break;//排序学生
case 8:Save(l);break;//保存学生
case 9:printf("==========帮助信息==========
");break;
default: Wrong();getchar();break;
}
}
}

100分好诱人……我做吧,楼上说的对。好好学习……
回复1:(函数)
y=1 x>0
y= 0 x=0
y=-1 x<0
用if语句编程,输入x,输出y;
#include <stdio.h>
int main(void)
{
int x,y;
printf("\nInput x=");
scanf("%d",&x);
if(x>0) y=1;
else if(x==0) y=0;
else y=-1;
printf("y=%d\n",y);
getch();
return 0;
}

调试用例子:
输入:
x=10
输出:
y=1;
输入:
x=0
输出:
y=0
输入:
x=-1
输出:
y=-1
————————————————————
回复2:输入一个字符,如果它是大写字母,输出相应的小写字母;如果它是小写字母,输出相应的大写字母;否则,原样输出。
#include <stdio.h>
void main(void)
{
char ch;
printf("\nInput a char:_\b");
ch=getchar();
ch>='A'&&ch<='Z'?printf("%c\n",ch+32):(ch>='a'&&ch<='z'?printf("%c\n",ch-32):printf("%c\n",ch));
getch();
}
__________________________________________
回复3:输入一个正整数n (1<n≤10),再输入n个整数,要求
⑴ 求这n个数的平均值和最大值。
⑵ 按逆序输出这n个数。
⑶ 将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n个数。
#include <stdio.h>
#define N 10
main()
{
int array[N],n,i,max,min,temp;
float sum=0,ave;
printf("\nInput n=");
scanf("%d",&n);
printf("Input the n numbers of array:\n");
for(i=0;i<n;i++)
{
printf("array[%d]=",i);
scanf("%d",&array[i]);
}
printf("The array is:\n");
for(i=0;i<n;i++) printf("%d ",array[i]);
max=min=array[0];
for(i=1;i<n;i++)
if(array[i]>max) max=array[i];
else if(array[i]<min) min=array[i];
for(i=0;i<n;i++) sum+=array[i];
ave=sum/n;
printf("\nThe max number is:%d,the average is %f\n",max,ave);
printf("Disorder the array is:\n");
for(i=n-1;i>=0;i--) printf("%d ",array[i]);
printf("\nAfter exchange the array is:\n");
temp=max;max=array[n-1];array[n-1]=temp;
temp=min;min=array[0];array[0]=temp;
for(i=0;i<n;i++) printf("%d ",array[i]);
getch();
}
__________________________________________________________
回复4:输入一个正整数n (1<n≤10),再输入n个整数,将它们从大到小排序后输出
#define N 10
main()
{
int i,j,min,tem,a[N],n;
printf("\nInput n=");
scanf("%d",&n);
printf("please input %d num:\n",n);
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);}
printf("\nBefore sort:");
for(i=0;i<n;i++)
printf("%5d",a[i]);
printf("\n");
for(i=0;i<n-1;i++)
{min=i;
for(j=i+1;j<n;j++)
if(a[min]>a[j]) min=j;
tem=a[i];
a[i]=a[min];
a[min]=tem;
}
printf("After sorted \n");
for(i=n-1;i>=0;i--)
printf("%5d",a[i]);
getch();
}

————————————————————————————————
回复5:(第一次没看见忘了……)也给你发消息里了,注意查收。
#include <stdio.h>
#include <string.h>
main()
{
int i,h=0;
char a[80],*pa=a,ch;
printf("\nInput string a:\n");
gets(a);
printf("Input char ch:\n");
ch=getchar();
for(i=0;i<80;i++)
if(*(pa+i)==ch) h++;
printf("%c appers %d times in the string a\n",ch,h);
puts(a);
getch();
}
——————————————————————————————
回复6:定义函数void sort(int a[],int n),用选择法对数组a中的元素排序。自己定义main函数,并在其中调用sort函数。
#include <stdio.h>
#define N 100
void sort(int a[N],int n);
main()
{
int n,a[N];
printf("\Input n=");
scanf("%d",&n);
sort(a,n);
getch();
}
void sort(int a[N],int n)
{
int i,j,min,tem;
printf("please input ten num:\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);}
printf("\n");
for(i=0;i<n;i++)
printf("%5d",a[i]);
printf("\n");
for(i=0;i<n-1;i++)
{min=i;
for(j=i+1;j<n;j++)
if(a[min]>a[j]) min=j;
tem=a[i];
a[i]=a[min];
a[min]=tem;
}
printf("After sorted:\n");
for(i=0;i<n;i++)
printf("%5d",a[i]);
}


本来想刷分的,看了楼上的,算了。

其实我已经编到第5题了:(

基本的c入门,一般的学习书籍上都有类试的例子,楼主要好好学习喽

晕,谭浩强的书上都例子啊,你偷懒不做作业啊,不能帮你!!嘿嘿

练习一下java,hehe

import java.io.*;

class testC
{
static InputStreamReader in;
static BufferedReader reader;

static
{
in=new InputStreamReader(System.in);
reader=new BufferedReader(in);
}

public static void main(String[] args)
{

while(true)
{
switch(choose())
{
case 1:
testIf();break;
case 2:
testChar();break;
case 3:
testArray();break;
case 4:
testArraySe();break;
case 5:
testString();break;
default:
System.out.print("Game Over");
System.exit(0);
}
}
}

static int choose()
{
int n=1;
String tmp;
System.out.print("Input your choice:");
try
{
tmp=reader.readLine();
n=Integer.parseInt(tmp);
}
catch(Exception e)
{
System.exit(0);
}
return n;
}

static void testIf()
{
int x,y;
String tmp;
System.out.print("Input a number:");
try
{
tmp=reader.readLine();
x=Integer.parseInt(tmp);
if(x>0)
{
y=1;
} else if (x<0) {
y=-1;
} else {
y=0;
}
System.out.println(y);
}
catch(Exception e)
{
System.out.println("Error!!");
}
}

static void testChar()
{
char a;
String tmp;
System.out.print("Input a Char:");
try
{
tmp=reader.readLine();
a = tmp.charAt(0);
if(a>='a' && a<='z')
{
a-='a';
a+='A';
}
else if(a>='A' && a<='Z')
{
a-='A';
a+='a';
}
System.out.println(a);
}
catch(Exception e)
{
System.out.println("Error!!");
}
}

static int[] makeArray(int size)
{
int index=0;
int array[]=new int[size];
String tmp;
try
{
while(index<size)
{
System.out.print("Input a Number:");
tmp=reader.readLine();
array[index]=Integer.parseInt(tmp);
index++;
}
}
catch(Exception e)
{
System.out.println("Error!!");
}
return array;
}

static int avg(int array[],int size)
{
int a=0;
for(int i=0;i<size;i++)
{
a+=array[i];
}
a/=size;
return a;
}

static int max(int array[],int size)
{
int m=0;
for(int i=0;i<size;i++)
{
if(m<array[i])
{
m=array[i];
}
}
return m;
}

static void swap(int array[],int indexa,int indexb)
{
int tmp;
tmp=array[indexa];
array[indexa]=array[indexb];
array[indexb]=tmp;
}

static int findMin(int array[],int size)
{
int index=0,min=max(array,size);
for(int i=0;i<size;i++)
{
if(min>array[i])
{
min=array[i];
index=i;
}
}
return index;
}

static int findMax(int array[],int size,int start)
{
int index=0,max=0;
for(int i=start;i<size;i++)
{
if(max<array[i])
{
max=array[i];
index=i;
}
}
return index;
}

static void testArray()
{
int array[];
int size,averg,max,index;
String tmp;
System.out.print("Input ArraySize:");
try
{
tmp=reader.readLine();
size=Integer.parseInt(tmp);
array=makeArray(size);
averg=avg(array,size);
max=max(array,size);
System.out.print("avg=");
System.out.println(averg);
System.out.print("max=");
System.out.println(max);

index=findMin(array,size);
swap(array,0,index);
index=findMax(array,size,0);
swap(array,size-1,index);

for(int i=0;i<size;i++)
{
System.out.print(array[i]);
System.out.print(" ");
}
System.out.println();
}
catch(Exception e)
{
System.out.println("Error!!");
}
}

static void testArraySe()
{
int array[];
int size,averg,max,index;
String tmp;
System.out.print("Input ArraySize:");
try
{
tmp=reader.readLine();
size=Integer.parseInt(tmp);
array=makeArray(size);

sort(array,size);

for(int i=0;i<size;i++)
{
System.out.print(array[i]);
System.out.print(" ");
}
System.out.println();
}
catch(Exception e)
{
System.out.println("Error!!");
}
}

static void sort(int array[],int size)
{
int index;
for(int i=0;i<size;i++)
{
index=findMax(array,size,i);
swap(array,i,index);
}
}

static void testString()
{
char a;
String tmp,str;
int count=0;
try
{
System.out.print("Input a String:");
tmp=reader.readLine();
str=tmp;
System.out.print("Input a Char:");
tmp=reader.readLine();
a = tmp.charAt(0);
for(int i=0;i<str.length();i++)
{
if (a==str.charAt(i))
{
count++;
}
}
System.out.println(str);
System.out.print("There are ");
System.out.print(count);
System.out.print(" Character ");
System.out.println(a);
}
catch(Exception e)
{
System.out.println("Error!!");
}
}
}


C语言高手请帮忙!!!视频

相关评论:
  • 17144571128c语言高手帮帮忙!
    全先爽"王","李","赵"}; int i,t,n=N,cnt[4]={0},f=0,z=0,max=0; printf("当前共%d个投票人 ,请投张:1 王:2 李:3 赵:4 (输入-1结束投票)\\n",N); while(n--) { scanf("%d",&t); if(

  • 17144571128C语言高手的进来。。帮忙帮忙谢谢了啊、、、悬赏30分
    全先爽第一题:#include <stdio.h>void main (){ FILE *fp; char b[9], a[9]; char ch; int i=0; scanf("%s", b); fp = fopen("D:\\\\123.txt", "w"); if(fp == NULL) { printf("打开文件失败!\\n"); return; } fwrite(b, sizeof(char), 8, fp); fclose(fp); \/\/...

  • 17144571128C语言,求高手帮忙。明天要考试了,帮帮忙吧!不胜感激!
    全先爽只需要从头开始找到这个数之后把这个位置之后的元素依次前移一个位置就好 include <stdio.h>int main(){ int myarray[10]; int i, j, n; \/\/初始化数组 for (i = 0; i < 10; i ++) myarray[i] = i; printf("Please input a number between 0 ~ 9: "); sc...

  • 17144571128[急求助]C语言程序编程题,请高手帮忙解答下。!
    全先爽include<stdio.h> include<math.h> void fun(int a,int b,long c){ c=a%10*100+a\/10+b\/10*1000+b%10*10;\/*解释:a%10的意思是a除以10剩下的余数,即a的个位数,若a是45,a%10就是5,再乘以100即是500;a\/10就是十位数,即4,原因是它是向下取整,45\/10虽是4.5,但向下取整...

  • 17144571128C语言中请高手帮忙修改下下面程序,结果能使单词排序时,不区分大小写...
    全先爽如果本身是大写字母,则返回自身的ASCII码,然后在判断函数外面增加这个函数就可以了.不过估计strcmp是不能用的.还有一种方法,就是把你的字符串放到临时串里面转大写,然后再排序.这么多解决办法,为什么自己没想到还来问呢?=== stricmp是非标准函数~~...

  • 17144571128一个有关C语言(数据结构)程序设计题 高手请帮忙,高分!
    全先爽if(G.vexs[i]==c) return i;return -1;} \/\/创建无向网 void CreateUDN(MGraph &G){ int i,j,w,s1,s2;char a,b,temp;printf("输入顶点数和弧数:");scanf("%d%d",&G.vexnum,&G.arcnum);temp=getchar(); \/\/接收回车 G.vexs=(char *)malloc(G.vexnum*sizeof(char)); \/\/...

  • 17144571128C语言的问题 请高手帮忙回答 谢谢~!~急···
    全先爽肯定有15 while (i<15)if(++i%3!=0) continue;else printf(“%3d”,i);} 当i=14时,进入循环,先执行++i进行if判断,此时i变成15,if条件不满足(15%3==0),执行else,打印15

  • 17144571128一道c语言问题,请各位高手们帮帮忙,谢谢
    全先爽char p[][20]={“get”,”put”,”out”};p是一个有3个元素的数组,数组中的每个元素都是一个char[20]类型的数组。也就是说,p是一个二维数组。strlen(p[0])+strlen(p[1])+ strlen(p[2])即计算p中的三个字符串的长度总和,为3+3+3=9。

  • 17144571128c语言编程题,请高手帮忙做一下,拜谢,急急急急……
    全先爽1.include <stdio.h> double funcPi(int);int main(void){ int arg;printf("Input the argument: ");\/\/ \/\/ 无异常输入 \/\/ while (!scanf("%d", &arg)){ printf("Check your input and retry: ");while (getchar()!='\\n'){ continue;} } while (getchar()!='\\n'){ continue...

  • 17144571128急求c语言编程高手帮忙 急!!!
    全先爽include <stdio.h> int main(){ int i;int j;int sum;int num;for(i=1,num=0;i<701;i++){ sum = 0;for(j=1;j<=i;j++){ if(i%j==0)sum = sum + j;} if(sum%i==0){ num++;printf("%d\\n",i);} } printf("\\nnum = %d\\n",num);return 0;} ...

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网