c语言的代码,帮我完善一下

作者&投稿:赫妹 (若有异议请与网页底部的电邮联系)
C语言问题,帮我改对一下下面的代码不甚感激!我会加分~

#include#define N 3#define M 3//增加一个科目数定义Mstruct student{char sno[20];char name[20];char sex;int score[M]; //}s[N];double avg[N];void count(int*a,int n,int i) //加个参数,确定是算哪个人的平均值{int j;double sum=0; //结果为doublefor(j=0;javg[j+1] ){double dt=avg[j] ;//这个很关键,你比较的依据也要移动位置才可以!!avg[j]=avg[j+1];avg[j+1]=dt ;t=s[j];s[j]=s[j+1];s[j+1]=t;}}for(i=0;i<N;i++)//经排序以后的输出{printf("%s%s%c ",s[i].sno,s[i].name,s[i].sex);for(j=0;j<M;j++)printf("%d ",s[i].score[j]);printf("
");}}

#include
#include

typedef struct node{ //链表
float coef;
int exp;
struct node *next;
}Node;

Node *create(){
float a;
int b;
char c;
Node *pnew, *ptemp;
Node *root;
scanf("%f*X^%d",&a,&b);
root = (Node *)malloc(sizeof(Node));
if(root != NULL){
root->coef = a;
root->exp = b;
root->next = NULL;
}
ptemp = root;

while(1){
scanf("%c%f*X^%d",&c,&a,&b);
if(c == '-')
a = -a;
if(b < 0)
break;
pnew = (Node *)malloc(sizeof(Node));
if(pnew != NULL){
pnew->coef = a;
pnew->exp = b;
pnew->next = NULL;
}
ptemp->next = pnew;
ptemp = pnew;
}
return root;
}
Node *merge(Node *x,Node *y){
Node *p1, *p2, *p, *root;
p1 = x;
p2 = y;
if(p1->exp > p2->exp)
{
p = p2;
p2 = p2->next;
}
else if(p1->exp exp)
{
p = p1;
p1 = p1->next;
}
else
{
p = p1;
p->coef += p2->coef;
p1 = p1->next;
p2 = p2->next;
}
root = p;
while(p1 != NULL && p2 != NULL)
{
if(p1->exp > p2->exp)
{
p->next = p2;
p = p->next;
p2 = p2->next;
}
else if(p1->exp exp)
{
p->next = p1;
p = p->next;
p1 = p1->next;
}
else
{
p->next = p1;
p = p->next;
p->coef += p2->coef;
p1 = p1->next;
p2 = p2->next;
}
}
while(p1 != NULL){
p->next = p1;
p1 = p1->next;
}
while(p2 != NULL){
p->next = p2;
p2 = p2->next;
}
return root;
}
int main(){
Node *a, *b, *c;
printf("输入第一个多项式:");
a = create();
printf("输入第二个多项式:");
b = create();
c = merge(a, b);
printf("合并后的结果:");
while(c != NULL)
{
printf("%.2f*X^%d", c->coef, c->exp);
c = c->next;
if(c != NULL && c->coef >= 0)
printf("+");
}
putchar('
');
return 0;
}

我修改了一下你的代码,结果如上图所示,主要是修改了create()函数部分。

int getWeekDay(int,int,int);/*判断是周几*/
int getMonthDays(int,int);/*判断某年某月有几天*/
void printMonthCalender(int,int);/*输出某年某月的日历*/
int isLeapYear(int);/*判断是否是闰年*/

main()
{
int year;
int month;
int startDay,monthDays;

printf("input the year(YYYY):");
scanf("%d",&year);

for(month=1;month<=12;month++){
startDay=getWeekDay(year,month,1); /*计算出该月第一天是星期几。返回值为0~6,分别代表周日,周一~周六*/
monthDays=getMonthDays(year,month); /*计算出该月共有几天*/
printf("\t\t\t%d-%d\n",year, month);
printMonthCalender(startDay,monthDays);
}
system("pause");
}

/*输入年月日,判断是星期几。
输出:0:表示周日,1:表示周一,2:周二,。。。6:周六*/
int getWeekDay(int year,int month,int day)
{
int days1;/*从0001年到year-1年共有几天*/
int days2; /*从year年初到month-1月共有几天*/
long int totalDays; /*从0000年到year年month月1号共有几天*/
int i;

/*计算从0001年到year-1年年底共有几天:days1。能被400整除的年数为: (year-1)%400)
关键在于如何表示出能被4整除但是不能被100整除的年数。
设 0001年到year-1年年底 能被4整除的年数为x (x=(year-1)%4)
0001年到year-1年年底 能被4整除但是不能被100整除的年数为 y,
0001年到year-1年年底 能被4整除也能被100整除的年数为 z(z=(year-1)%100,因为能被100整除则肯定能被4整除)
则 y=x-z= (year-1)%4- (year-1)%100
故0001到year-1年内闰年总年数为:(year-1)%400)+(year-1)%4- (year-1)%100 */
days1= (year-1)*365+(year-1)/400+(year-1)/4-(year-1)/100; ; /*从0001年到year-1年的日子总数*/

/*计算从year年初到month-1月共有几天:days2*/
days2=0;
for(i=1;i<=month-1;i++)
days2+=getMonthDays(year,i); /*第二次用到该函数*/

/*计算总天数*/
totalDays=days1+days2+day;

return (totalDays%7);/*公元第一天是周一*/
}

/*判断指定的某年某月的天数*/
int getMonthDays(int year,int month)
{
int days;
switch(month){
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
days=31;break;
case 2:
if (isLeapYear(year))
days=29;/*闰年*/
else
days=28;
break;
case 4:case 6:case 9:case 11:
days=30;break;
}
return days;
}

/*函数功能:检测是否闰年。
入参:year。要检测的年;
返回值:0:不是闰年;1:是闰年*/
int isLeapYear(int year)
{
return(year%4==0 && year%100!=0 || year%400==0);
}

void printMonthCalender(int startDay,int days)
{
int i;
int count;/*控制换行*/

/*打印表头*/
printf("Sun.\tMon.\tTue.\tWed.\tThu.\tFri.\tSat.\n");

/*打印前面空格*/
for(i=1;i<=startDay;i++)
printf("\t");

count= startDay;/*已经打印了startDay个空格*/
for(i=1;i<=days;i++){
printf("%d\t",i);
count++;
if(count%7==0)
printf("\n");
}
printf("\n\n");
}

while((y <= 1900 || m >= 13 || d >= 32)) /*先做一个整体判断*/
{
printf("你的输入有误!\n");
printf("请重新输入年份,月份,日期:");
scanf("%d%d%d",&y,&m,&d); /*获取从键盘输入的值*/
}
//add
while((d==31)&&((m==2)||(m==4)||(m==6)||(m==9)||(m==11))) /*小月为31天的非法判断*/

while((m==2)&&(d>=30)) /*二月30天非法判断*/

while((m==2)&&!(y%4==0&&y%100||y%400==0)&&(d>=29)) /*非闰年的2月29天非法判断*/

//为了表达清楚,while条件做出分别判断,你可以将它们进行或操作,经VC++运行测试成功!
//另外,我个人认为你的switch语句并不影响程序简洁性,固未作简化


C语言课程设计,求帮忙写完代码
我的 C语言课程设计,求帮忙写完代码 100 自己写了一段,请高手帮忙啦#include<stdio.h>enumMajor{Soft=1,Net,Jike};\/\/专业enumMajormajor;#defineARRAYSIZE100\/\/数组大小typedefstruct{charszNo[11];charszName[21];enumMajo... 自己写了一段,请高手帮忙啦#include <stdio.h>enum Major{Soft=1, Net, Jik...

帮忙看下这个简单的c语言代码
include<stdio.h> int main(){ int p,n,m,i,j,a[10],jud;scanf("%d",&p);\/\/读入要测试的数 n=1234;for(;n<=98765;n++)\/\/n穷举到最大的98765 { jud=0;m=n; \/\/ 不能破坏循环变量n的值 for(i=4;i>=0;i--){ a[i]=m%10;m=m\/10;\/\/将n的5位数字分别存在数组中 }...

C语言一道简单的代码,麻烦帮我解析一下,我表示看不懂。。。
if(x<y) 由于10<20,所以 跳到if(!ok1) 这里ok1=5 表示非0 ,所以 !ok=0,所以程序接着执行else后面的 if(ok2) 因为ok2=0;所以接着执行a=-1 整个流程是:if (x<y)->if(!ok1)->else->if(ok2)->a=-1

求大神用matlab语言帮我完成下面的题目 谢谢
楼主,你好。程序如下:t=linspace(0,2*pi,50);%在区间[0:2π ]均匀的取 50个点 y1=sin(2*t-0.3); y2=3*cos(t+0.5);%y1=sin(2*t-0.3); y2=3cos(t+0.5);plot(t,y1,'r-.o',t,y2,'b:*')%绘制曲线 结果如图所示:希望对楼主有帮助,希望楼主采纳,欢迎交流。

急!帮我编写一个c语言的数据结构程序,关于串,提供要用的代码,只要...
\/\/str.c include"stdio.h"include"str.h"void main(){ int n,flag=0;int i=4,j=6;char *str,*sub;str=(char*)malloc(sizeof(char)*100);sub=(char*)malloc(sizeof(char)*100);printf(" 串子系统 \\n");printf("***\\n");printf("* 1---输入字串 ...

谁帮我写一个50行的C语言代码啊~
include<stdio.h> include<stdlib.h> int next[50]; \/\/存储next值的数组 int nextval[50];typedef struct { char *ch;int length; \/\/串长度 }HString;void StrAssign(HString *T,char *chars) \/\/生成一个值等于串常量chars的串T { int i,j;char *c;if(T->ch)free(T->ch); ...

C语言程序设计题目(帮帮我吧!)学生成绩管理系统
include"stdio.h"include"stdlib.h"include"string.h"define N 3 typedef struct z1 { char no[11];char name[15];int score[N];float sum;float average;int order;struct z1 *next;}STUDENT;STUDENT *init();STUDENT *create();STUDENT *del(STUDENT *h);void print(STUDENT *h);void ...

谁帮我详细解读一下下面这个c语言代码的每句代码的意思
include "stdio.h"include <stdlib.h> int main() \/\/主函数 {int i,j,n; \/\/定义整形变量i,j,n int fact,sum=0; \/\/定义整形变量fact,sum,并对sum赋初值 printf("n:"); \/\/输出字符n scanf("%d",&n); \/\/输入n的值 for(i=1;i<=n;i++)\/***这是一个循环,...

C语言,请大家帮帮我。
帮助的人:124万 我也去答题访问个人页 展开全部 教了多年《C程序设计》课程,大多学生觉的这门课程难学。其实,按照我们现在的教学大纲和教学要求,只要...编程其实一大部分工作就是分析问题,找到解决问题的方法,再以相应的编程语言写出代码。这就要求掌握算法,根据我们的《C程序设计》教学大纲中,只要求我们掌握...

请大神帮我写个易语言代码,我纯纯的小白,啥都不懂,还请详细点,感谢了...
.版本 2 .支持库 spec .子程序 _按钮1_被单击 .局部变量 设置行, 双精度小数型 .局部变量 实际行, 双精度小数型 .局部变量 直径, 双精度小数型 直径 = 到数值 (编辑框1.内容)设置行 = 到数值 (编辑框2.内容)实际行 = #pi × 直径 × 设置行 ÷ 360 编辑框3.内容 = 到文本 (...

临武县17554645417: 帮我完善下这个c语言的代码 -
昌胡夏天: 这类题碰过~以前也是像你那样做~不过最近参考了一个好的做法~!月里的日子用个一维数组保存 int m[12]={31,0,31,30,31,30,31,31,30,31,30,31} 如果是闰年的话m[1]=29,如果不是的话m[1]=28,大概的方法是这样吧~!好好加油~!

临武县17554645417: 帮我修改个 c语言 程序 -
昌胡夏天: 程序我帮你改了下半部分 首先 不改你的程序是不可能实现的了 你还没了解ASII码的转换 像你这样c[l]=a[l]+b[l]; c[l]=c[l]-48; 也减不对的 要减48*2 还要判断每一位加起来是不是大于10 所以说不改是不可能的了 现在我做的可以运行正确了 你仔细看...

临武县17554645417: C语言,谁能帮我改一下这段代码
昌胡夏天: #include <stdio.h> #include <conio.h> int money=0; char mima[]="000000"; void chaxun(); void qukuan(); void cunkuan(); void gaimi(); void quka(); void main() { char c[6]; printf("欢迎使用自动柜员机:\n\n"); while(true) { printf("请输入您...

临武县17554645417: C语言,高手帮我改一下这段代码,谢谢
昌胡夏天: main前面加个无返回值的void就可以了 #include<stdio.h> int average(int m,int n,int o) { return ((m+n+o)/3); }void main() { int a=2,b=3,c=4; int a2=4,b2=5,c2=6; int a3=6,b3=7,c3=8; int y,y2,y3; y=average(a,b,c); y2=average(a2,b2,c2); y3=average(a...

临武县17554645417: 帮改一下c代码 -
昌胡夏天: 整型/整型的结果还是整型..比如说1/2的结果是0,3/2的结果是1所以你的i,不能这样定义.可以改成sum+=1.0/j;#include void main(){ int i,j; float sum=1.0;for(i=1;i<=...

临武县17554645417: 请大家帮我编写几个C语言代码,非常感谢! -
昌胡夏天: #include<stdio.h> void ch(int a[][4]) { int i,j,t;for(i=0;i<4;i++)for(j=0;j<4;j++)if(i>j){t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;} } void main() {int a[4][4],i,j;printf("请输入16个数\n");for(i=0;i<4;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);printf("\n");for(i=...

临武县17554645417: 能帮我改一下这个代码么,C语言的!!!!!!!!!
昌胡夏天: 你这个太复杂,我给你写了个简单的. #include<stdio.h>int main(){ float c,k,g,v; printf("请输入长方体的长:"); scanf("%f",&c); printf("请输入长方体的宽:"); scanf("%f",&k); printf("请输入长方体的高:"); scanf("%f",&g); printf("长为%f,宽为%f,高为%f的长方体的体积为%f\n",c,k,g,(c*k*g));}

临武县17554645417: 帮我修改下c语言代码
昌胡夏天: if(b=="abc"||h==123)这一句的逻辑错了,换成这个`if(b=="abc"&&h==123)就OK啦` 另外..补充点`void dengru(struct s_cj x[])这个函数得先在MAIN函数前声明...要么就直接拿上去 你等几分钟,我帮你写个...

临武县17554645417: C语言 解决逻辑推理问题:我已经写出了代码,请帮我修正一下.谢谢 -
昌胡夏天: 这样要是题目变了,人数变了,哪不得重新写代码,看了都头晕 用集合运算算法可以适应大多数情况 可以看出 6种运算规则,先假设一个嫌疑人集合,开始为空 ( 1) A 、 B 至少有一人作案; ------- 集合中加入A,B (2)A 、 E 、 F 三人中至少有...

临武县17554645417: C语言 解决逻辑推理问题:我已经写出了代码,请帮我修正一下.谢谢
昌胡夏天: //罪犯不一定只有3个人,所以你的代码框架有点问题,直接帮你大换血了. //不太好编辑,可能看起来有点乱 #include &lt;stdio.h&gt; int main() { int A,B,C,D,E,F; //每个罪犯只有01两种情况,1是罪犯0清白 for(A=0;A&lt;2;A++) //A for(B=0;B&lt;2;...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网