c语言程序设计 题目一道,求解
第一种:
#include
#include
#include
#include
struct student{
int id;
char name[10];
int age;
char sex[10];
char birthady[20];
int tel;
char nativeplace[50];
}st[50];
int i=0;
void shuru() {
char a;
do{
printf("
请输入学号:");
scanf("%d",&st[i].id);
fflush(stdin);
printf("
请输入姓名:");
gets(st[i].name);
printf("
") ;
printf("请输入年龄:");
scanf("%d",&st[i].age);
fflush(stdin);
printf("
请输入姓别:");
gets(st[i].sex);
fflush(stdin);
printf("
请输入生日:");
gets(st[i].birthady);
printf("
请输入电话:");
scanf("%d",&st[i].tel);
fflush(stdin);
printf("
请输入籍贯:");
gets(st[i].nativeplace);
printf("
是否继续输入另外一个学生信息?(y/n)");
fflush(stdin);
a=getchar();
i++;
}while(a=='y' && i<=50);
}
void xianshi()
{
int j;
printf("学号姓名年龄性别生日电话籍贯
");
for(j=0;j<i;j++)
printf("%d%s%d%s%s%d%s
",
st[j].id,st[j].name,st[j].age,st[j].sex,st[j].birthady,st[j].tel,st[j].nativeplace);
}
void paixu() //按年龄从大到小排序函数
{
int j,k;
int temp;
for(j=0;j<i;j++)
{
for(k=0;k<i-1-j;k++)
{
if(st[k].age<st[k+1].age)
{
temp=st[k].age;
st[k].age=st[k+1].age;
st[k+1].age=temp;
}
}
}
xianshi(); //排序后输出
}
void chazhao()
{
int m;
char name[20],b;
do
{
printf("
请输入想查找的学生姓名:");
fflush(stdin);
gets(name);
for(m=0;m<i;m++)
{
if(strcmp(name,st[m].name)==0)
{
printf("
您查找的学生在第%d个位置找到了!!!
",m+1);
break;
}
}
if(m>=20)
printf("
没有找到这个学生!!!
");
else
{
printf("学号姓名年龄性别生日电话籍贯
");
printf("%d%s%d%s%s%d%s
",
st[m].id,st[m].name,st[m].age,st[m].sex,st[m].birthady,st[m].tel,st[m].nativeplace);
}
printf("
是否查找另一个学生的信息?(y/n)");
fflush(stdin);
b=getchar();
}while(b=='y');
}
void shanchu()
{
char name[20],c;
int a,b;
do
{
printf("
请输入要删除的学生姓名:
");
fflush(stdin);
gets(name);
for(a=0;a<i;a++)
{
if(strcmp(name,st[a].name)==0)
break;
}
for(b=a;b<i;b++)
st[b]=st[b+1];
if(a>i)
printf("没有找到这个学生!!!
");
else
{
i--;
xianshi();
}
printf("
是否继续删除另一个学生信息?(y/n) ");
fflush(stdin);
c=getchar();
}while(c=='y');
}
void charu()
{
shuru();
paixu();
}
void main() //主函数
{
int change;
do{
system("cls");
printf("============================学生信息管理系统===================================
");
printf("一: 输入学生信息
");
printf("二: 显示学生信息
");
printf("三: 查找学生信息
");
printf("四: 删除学生信息
");
printf("五: 插入学生信息
");
printf("六: 退出程序
");
fflush(stdin);
printf("请输入功能选项:");
scanf("%d",&change);
switch(change)
{
case 1:
shuru(); break;
case 2:
xianshi(); break;
case 3:
chazhao(); break;
case 4:
shanchu(); break;
case 5:
charu(); break;
case 6:
break;
}
getch();
}while(change!=6);
}
第二种
#include
#include
#include
typedef struct STUDENT
{
char studentNumber[10];/*学生学号*/
char studentName[20];/*学生姓名*/
char studentSEX[10];/*学生性别*/
char className[20];/*班级名称*/
float mark1;/*第1门成绩*/
float mark2;/*第2门成绩*/
float mark3;/*第3门成绩*/
float mark4;/*第4门成绩*/
float mark5;/*第5门成绩*/
struct STUDENT *next;
}STUDENT;
STUDENT *headLink;/*链表表头指针*/
/*以下是函数声明*/
void ReadInfoFormFile(void);
void DesplayMenu(void);
void CreateHeadLink(void);
STUDENT *MallocNode(void);
void GetInformation(STUDENT *t);
void OutputInformation(void);
void DesplayInfoBystudentName(void);
void DesplayInfoBystudentNumber(void);
void DesplayOneNode(STUDENT *t);
void InsertOneNode(STUDENT *t);
void DeleteNodeBystudentNumber(void);
void ChangeMarkByName(void);
void ChangeMarkByNumber(void);
void SaveLinkToFile(void);
void DesplayMarkSegment(void);
void CompositorByTotalMark(void);
int choose;/*用于接受用户的选择*/
/*主函数*/
void main()
{
CreateHeadLink();
ReadInfoFormFile();
DesplayMenu();
}
/************************************
函数功能:从文件中读学生信息到链表中
************************************/
void ReadInfoFormFile(void)
{
FILE *fp;
STUDENT *p;
fp=fopen("student.txt","r");
if(!fp)
{
printf("文件不存在
");
return;
}
p=MallocNode();
while(fscanf(fp,"%s%s%s%s%f%f%f",p->studentNumber,p->studentSEX,p->studentName,p->className,&(p->mark1),&(p->mark2),&(p->mark3),&(p->mark4),&(p->mark5))>0)
{
InsertOneNode(p);
p=MallocNode();
}
fclose(fp);
}
/************************************
函数功能:显示菜单,根据用户的输入
完成相应的功能
************************************/
void DesplayMenu(void)
{
STUDENT *p;
printf("-------请选择相应功能------------
");
printf("| 1 显示所有学生的信息 |
");
printf("| 2 按姓名查询 |
");
printf("| 3 按学号查询 |
");
printf("| 4 增加学生 |
");
printf("| 5 删除学生 |
");
printf("| 6 按姓名修改学生成绩 |
");
printf("| 7 按学号修改学生成绩 |
");
printf("| 8 保存所有学生信息 |
");
printf("| 9 显示优秀和不及格学生成绩 |
");
printf("| 10 排序结果并输出成绩 |
");
printf("| 11 退出 |
");
scanf("%d",&choose);/*取得用户的选择*/
switch(choose)
{
case 1:
OutputInformation();/*显示所有学生的信息*/
break;
case 2:
DesplayInfoBystudentName();
break;
case 3:
DesplayInfoBystudentNumber();/*根据用户输入的学号显示该学生的信息*/
break;
case 4:
p=MallocNode();/*先申请一个新结点*/
GetInformation(p);/*要求用户输入信息到新结点中*/
InsertOneNode(p);/*将新结点加到链表中*/
break;
case 5:
DeleteNodeBystudentNumber();/*根据用户输入的学号删除该学生*/
break;
case 6:
ChangeMarkByName();/*根据用户输入的姓名修改学生成绩*/
break;
case 7:
ChangeMarkByNumber();/*根据用户输入的学号修改学生成绩*/
break;
case 8:
SaveLinkToFile();/*保存数据*/
break;
case 9:
DesplayMarkSegment();/*显示各分数段的学生成绩*/
break;
case 10:
CompositorByTotalMark();
break;
case 11:
SaveLinkToFile();/*保存数据后再退出*/
free(headLink);
exit(1);
break;
default:
break;
}
DesplayMenu();/*递归调用*/
}
/************************************
函数功能:建立链表表头
************************************/
void CreateHeadLink(void)
{
STUDENT *p;
p=(STUDENT*)malloc(sizeof(STUDENT));
headLink=p;
p->next=NULL;
}
/************************************
函数功能:申请一个新结点,并将其初始化
************************************/
STUDENT *MallocNode(void)
{
STUDENT *p;
int i;
p=(STUDENT*)malloc(sizeof(STUDENT));
if(p==NULL)
return NULL;
for(i=0;i<10;i++)
p->studentNumber[i]='\0';
for(i=0;i<20;i++)
p->studentName[i]='\0';
for(i=0;i<10;i++)
p->studentSEX[i]='\0';
for(i=0;i<20;i++)
p->className[i]='\0';
p->mark1=0.0;
p->mark2=0.0;
p->mark3=0.0;
p->mark4=0.0;
p->mark5=0.0;
p->next=NULL;
return p;
}
/************************************
函数功能:取得用户输入的学生信息
************************************/
void GetInformation(STUDENT *t)
{
printf("请输入学生学号:
");
scanf("%s",t->studentNumber);
printf("请输入学生姓名:
");
scanf("%s",t->studentName);
printf("请输入学生性别:
");
scanf("%s",t->studentSEX);
printf("请输入该生所在班级:
");
scanf("%s",t->className);
printf("请输入第1门成绩:
");
scanf("%f",&(t->mark1));
printf("请输入第2门成绩:
");
scanf("%f",&(t->mark2));
printf("请输入第3门成绩:
");
scanf("%f",&(t->mark3));
printf("请输入第4门成绩:
");
scanf("%f",&(t->mark4));
printf("请输入第5门成绩:
");
scanf("%f",&(t->mark5));
}
/************************************
函数功能:在链表的结尾处增加一个结点
************************************/
void InsertOneNode(STUDENT *t)
{
STUDENT *p;
p=headLink;
while(p->next)
{
p=p->next;
}
p->next=t;
}
/************************************
函数功能:根据用户输入的学生姓名显示该学生的信息
************************************/
void DesplayInfoBystudentName(void)
{
STUDENT *p;
char studentName[20];
char flag=0;
p=headLink->next;
printf("请输入学生姓名:
");
scanf("%s",studentName);
while(p)
{
if(strcmp(p->studentName,studentName)==0)
{
printf("学号姓名性别班级成绩1成绩2成绩3成绩4成绩5总成绩平均成绩
");
DesplayOneNode(p);
flag=1;
break;
}
p=p->next;
}
if(!flag)
printf("对不起,不存在姓名为 %s 的学生
",studentName);
}
/************************************
函数功能:根据用户输入的学号显示该学生的信息
************************************/
void DesplayInfoBystudentNumber(void)
{
STUDENT *p;
char studentNumber[10];
char flag=0;
p=headLink->next;
printf("请输入学生学号:
");
scanf("%s",studentNumber);
while(p)
{
if(strcmp(p->studentNumber,studentNumber)==0)
{
printf("学号姓名性别班级成绩1成绩2成绩3成绩4成绩5总成绩平均成绩
");
DesplayOneNode(p);
flag=1;
break;
}
p=p->next;
}
if(!flag)
printf("对不起,不存在学号为 %s 的学生
",studentNumber);
}
/************************************
函数功能:输出一个结点的信息
************************************/
void DesplayOneNode(STUDENT *t)
{
printf("%s",t->studentNumber);
printf("%s",t->studentName);
printf("%s",t->studentSEX);
printf("%s",t->className);
printf("%.2f",t->mark1);
printf("%.2f",t->mark2);
printf("%.2f",t->mark3);
printf("%.2f",t->mark4);
printf("%.2f",t->mark5);
printf("%.2f",t->mark1+t->mark2+t->mark3+t->mark4+t->mark5);
printf("%.2f
",(t->mark1+t->mark2+t->mark3+t->mark4+t->mark5)/5);
}
/************************************
函数功能:根据用户输入的学号删除该学生
************************************/
void DeleteNodeBystudentNumber(void)
{
char studentNumber[10];
STUDENT *p,*q;
char flag=0;
printf("请输入要删除的学生学号:");
scanf("%s",studentNumber);
p=headLink;
q=headLink->next;
while(q)
{
if(strcmp(q->studentNumber,studentNumber)==0)
{
p->next=q->next;
free(q);
flag=1;
break;
}
p=p->next;
q=q->next;
}
if(!flag)
{
printf("不存在该学号的学生
");
return;
}
printf("成功删除
");
}
/************************************
函数功能:显示所有学生的信息
************************************/
void OutputInformation(void)
{
STUDENT *p;
p=headLink->next;
if(p==NULL)
{
printf("现在没有学生信息,请先输入学生信息
");
return;
}
printf("学号姓名性别班级成绩1成绩2成绩3成绩4成绩5总成绩平均成绩
");
while(p)
{
DesplayOneNode(p);
p=p->next;
}
}
/************************************
函数功能:根据输入的姓名修改成绩
************************************/
void ChangeMarkByName(void)
{
STUDENT *p;
char studentName[20];
char flag=0;
float mark1,mark2,mark3,mark4,mark5;
p=headLink->next;
printf("请输入学生姓名:
");
scanf("%s",studentName);
while(p)
{
if(strcmp(p->studentName,studentName)==0)
{
printf("请输入新的第1门成绩:
");
scanf("%f",&mark1);
printf("请输入新的第2门成绩:
");
scanf("%f",&mark2);
printf("请输入新的第3门成绩:
");
scanf("%f",&mark3);
printf("请输入新的第4门成绩:
");
scanf("%f",&mark4);
printf("请输入新的第5门成绩:
");
scanf("%f",&mark5);
p->mark1=mark1;
p->mark2=mark2;
p->mark3=mark3;
p->mark4=mark4;
p->mark5=mark5;
flag=1;
printf("修改成功
");
break;
}
p=p->next;
}
if(!flag)
printf("对不起,不存在姓名为 %s 的学生
",studentName);
}
/************************************
函数功能:根据输入的学号修改成绩
************************************/
void ChangeMarkByNumber(void)
{
STUDENT *p;
char studentNumber[20];
char flag=0;
float mark1,mark2,mark3,mark4,mark5;
p=headLink->next;
printf("请输入学生学号:
");
scanf("%s",studentNumber);
while(p)
{
if(strcmp(p->studentNumber,studentNumber)==0)
{
printf("请输入新的第1门成绩:
");
scanf("%f",&mark1);
printf("请输入新的第2门成绩:
");
scanf("%f",&mark2);
printf("请输入新的第3门成绩:
");
scanf("%f",&mark3);
printf("请输入新的第4门成绩:
");
scanf("%f",&mark4);
printf("请输入新的第5门成绩:
");
scanf("%f",&mark5);
p->mark1=mark1;
p->mark2=mark2;
p->mark3=mark3;
p->mark4=mark4;
p->mark5=mark5;
flag=1;
printf("修改成功
");
break;
}
p=p->next;
}
if(!flag)
printf("对不起,不存在学号为 %s 的学生
",studentNumber);
}
/************************************
函数功能:保存链表数据到文件中
************************************/
void SaveLinkToFile(void)
{
STUDENT *p;
FILE *fp;
p=headLink->next;
if(p==NULL)
{
printf("现在没有学生信息,请先输入学生信息
");
return;
}
fp=fopen("student.txt","w+");
if(!fp)
{
printf("文件不存在
");
return;
}
while(p)
{
fprintf(fp,"%s %s %s %s %f %f %f %f %f
",p->studentNumber,p->studentName,p->studentSEX,p->className,p->mark1,p->mark2,p->mark3,p->mark4,p->mark5);
p=p->next;
}
fclose(fp);
}
/************************************
函数功能:显示优秀和不及格学生成绩
************************************/
void DesplayMarkSegment(void)
{
STUDENT *p;
int count=0;
p=headLink->next;
printf("60分以下(不及格)的学生成绩如下:
");
printf("学号姓名性别班级成绩1成绩2成绩3成绩4成绩5总成绩平均成绩
");
while(p)
{
if((6>((int)(p->mark1/10)))||(6>((int)(p->mark2/10)))||(6>((int)(p->mark3/10)))||(6>((int)(p->mark4/10)))||(6>((int)(p->mark5/10))))/*只要有一科不及格就认为该生不及格*/
{
count++;
DesplayOneNode(p);
}
p=p->next;
}
printf("不及格的学生一共有%d人
",count);
p=headLink->next;
printf("成绩优秀的学生成绩如下:
");
printf("学号姓名性别班级成绩1成绩2成绩3成绩4成绩5总成绩平均成绩
");
count=0;
while(p)
{
if((8mark1/10)))&&(8mark2/10)))&&(8mark3/10)))&&(8mark4/10)))&&(8mark5/10))))
{
count++;
DesplayOneNode(p);
}
p=p->next;
}
printf("成绩优秀的学生一共有%d人
",count);
}
/************************************
函数功能:按总成绩排序
************************************/
void CompositorByTotalMark(void)
{
STUDENT exchange,*r,*p,*q;
r=headLink->next;
if(r==NULL)
{
printf("现在还没学生信息,请先输入学生信息
");
return;
}
while(r)/*两层while循环实现排序*/
{
p=r;
q=r->next;
while(q)
{
if((q->mark1+q->mark2+q->mark3+q->mark4+q->mark5)>(p->mark1+p->mark2+p->mark3+p->mark4+p->mark5))
{
strcpy(exchange.studentNumber,q->studentNumber);/*先复制q结点信息到exchange*/
strcpy(exchange.studentName,q->studentName);
strcpy(exchange.className,q->className);
exchange.mark1=q->mark1;
exchange.mark2=q->mark2;
exchange.mark3=q->mark3;
exchange.mark4=q->mark4;
exchange.mark5=q->mark5;
strcpy(q->studentNumber,p->studentNumber);/*再复制p结点信息到q*/
strcpy(q->studentName,p->studentName);
strcpy(q->studentSEX,p->studentSEX);
strcpy(q->className,p->className);
q->mark1=p->mark1;
q->mark2=p->mark2;
q->mark3=p->mark3;
q->mark4=p->mark4;
q->mark5=p->mark5;
strcpy(p->studentNumber,exchange.studentNumber);/*最后复制exchange结点信息到p*/
strcpy(p->studentName,exchange.studentName);
strcpy(p->className,exchange.className);
p->mark1=exchange.mark1;
p->mark2=exchange.mark2;
p->mark3=exchange.mark3;
p->mark4=exchange.mark4;
p->mark5=exchange.mark5;
}
q=q->next;
}
r=r->next;
}
OutputInformation();
}
我比较倾向于第二种,因为是自己调试的,呵呵~~
你只要把"成绩"改成你需要的其他信息就OK了~~
#include
int fun(char *s, int *n) //注意,传进来的得是一个字符串数组!
{
char *t,max;
*n = 0;
t = s;
max = *t;
t++;
while(*t)
{
if(*t == '0')
{
*n+=1;
}
if(max < *t)
{
max = *t;
}
t++;
}
return (max - '0'); //返回的是数字字符相对0字符的值差,也恰好是他的数值
}
void main(){
char *s="30800";
int n=0,m;
m = fun(s, &n);
printf("各位上数字值最大的是:%d,零的个数为:%d
",m,n);
}
这是你要的函数,我是直接在这个网页的窗口编写的,可能哪里会有些小错误,这就要靠你自己修改啦
^_^
把12只球分为这三组球分别编号为 A组、B组、C组。
首先,选任意的两组球放在天平上称。例如,我们把A、B两组放在天平上称。这就会出现两种情况:
第一种情况,天平两边平衡。那么,不合格的坏球必在c组之中。
其次,从c组中任意取出两个球 (例如C1、C2)来,分别放在左右两个盘上,称第二次。这时,又可能出现两种情况:
1·天平两边平衡。这样,坏球必在C3、C4中。这是因为,在12个乒乓球中,只有一个是不合格的坏球。只有C1、C2中有一个是坏球时,天平两边才不平衡。既然天平两边平衡了,可见,C1、C2都是合格的好球。
称第三次的时候,可以从C3、C4中任意取出一个球(例如C3), 同另一个合格的好球(例如C1)分别放在天平的两边,就可以推出结果。这时候可能有两种结果:如果天平两边平衡,那么,坏球必是C4;如果天平两边不平衡,那么,坏球必是C3。
2·天平两边不平衡。这样,坏球必在C1、C2中。这是因为,只有C1、C2中有一个是坏球时,天平两边才不能平衡。这是称第二次。
称第三次的时候,可以从C1、C2中任意取出一个球(例如C1), 同另外一个合格的好球(例如C3),分别放在天平的两边,就可以推出结果。道理同上。
以上是第一次称之后出现第一种情况的分析。
第二种情况,第一次称过后天平两边不平衡。这说明,c组肯定都是合格的好球,而不合格的坏球必在A组或B组之中。
我们假设:A组 (有A1、A2、A3、A4四球)重,B组(有B1、B2、B3、B4四球)轻。这时候,需要将重盘中的A1取出放在一旁,将A2、A3取出放在轻盘中,A4仍留在重盘中。同时,再将轻盘中的B1、 B4取出放在一旁,将B2取出放在重盘中,B3仍留在轻盘中,另取一个标准球C1也放在重盘中。经过这样的交换之后,每盘中各有三个球: 原来的重盘中,现在放的是A4、B2、C1,原来的轻盘中,现在放的是A2、A3、B3。
这时,可以称第二次了。这次称后可能出现的是三种情况:
1·天平两边平衡。这说明A4B2C1=A2A3B3,亦即说明,这六只是好球,这样,坏球必在盘外的A1或B1或B4之中。已知A盘重于B盘。所以,A1或是好球,或是重于好球;而B1、B4或是好球,或是轻于好球。
这时候,可以把B1、B4各放在天平的一端,称第三次。这时也可能出现三种情况:(一)如果天平两边平衡,可推知A1是不合格的坏球,这是因为12只球只有一只坏球,既然B1和B4重量相同,可见这两只球是好球,而A1为坏球;(二)B1比B4轻,则B1是坏球;(三) B4比B1轻,则B4是坏球,这是因为B1和B4或是好球,或是轻于好球,所以第三次称实则是在两个轻球中比一比哪一个更轻,更轻的必是坏 球。
2·放着A4、B2、C1的盘子(原来放A组)比放A2、A3、B3的盘子(原来放B组)重。在这种情况下,则坏球必在未经交换的A4或B3之中。这是因为已交换的B2、A2、A3个球并未影响轻重,可见这三只球都是好球。
以上说明A4或B3这其中有一个是坏球。这时候,只需要取A4或B3同标准球C1比较就行了。例如,取A4放在天平的一端,取C1放在天平的另一端。这时称第三次。如果天平两边平衡,那么B3是坏球; 如果天平不平,那么A4就是坏球 (这时A4重于C1)。
3.放A4、B2、C1的盘子(原来放A组)比放在A2、A3、B3的盘 子(原来放B组)轻。在这种情况下,坏球必在刚才交换过的A2、A3、B23球之中。这是因为,如果A2、A3、B2都是好球,那么坏球必在A4或B3之中,如果A4或B3是坏球,那么放A4、B2、C1的盘子一定 重于放A2、A3、B3的盘子,现在的情况恰好相反,所以,并不是A2、A3、B2都是好球。
以上说明A2、A3、B2中有一个是坏球。这时候,只需将A2同A3相比,称第三次,即推出哪一个是坏球。把A2和A3各放在天平的一端 称第三次,可能出现三种情况:(一)天平两边乎衡,这可推知B2是坏球;(二)A2重于A3,可推知A2是坏球;(三)A3重于A2,可推知A3是坏球。
天平分左右:
1:分3份,任取两份称“第一次”(结果是一定可以找到有坏球的那一份)
2:天平左边放3个正常的球,右边在有问题的四个里面任取3个称“第二次”
2-1:如果平衡,说明问题球是剩余的一个,可以用“第三次”判断轻还是重(3-1)
2-2:如果不平衡说明问题球在刚取的那3个里,并且此时已经可以知道是重还是轻(因为左边是正常的球,右边低则问题球重,高则问题球轻)3-2
3-1:随便拿个正常的和问题球一比就知道轻重了
3-2:前提:2-2已经确定了3个有可能的问题球并且已经知道问题球的轻重了。
任取问题球里的两个放天平上
3-2-1 : 平衡 说明问题球是剩余的一个,并根据2-2知道轻还是重
3-2-2 : 不平衡,说明问题球两个中的一个,根据2-2已经知道问题球是轻还是重了。看天 平倾斜的方向就知道了那个是问题球了
坑爹啊 ,请问好、坏球的区别是什么?是好球重还是坏球重?
你这问题有问题,不知道轻重的话三次不可能称出来
调试过了,都正确,只要知道了算法,根据算法一步一步来就是了。
#include <stdio.h>
int solve(int *p,int low,int high)
{
int a1=0,a2=0,i;
int middle=(low+high-1)/2;
for (i=low;i <= middle;i ++)
{
a1+=p[i];
}
for (;i <= high;i++)
{
a2+=p[i];
}
if (a1 == a2)
return 1;
else if (a1 > a2)
return -1;
else
return -2;
}
main()
{
int i,a[13]={0};
for (i=1;i < 13;i ++)
scanf("%d",&a[i]);
if ( solve(a,1,8) == 1)
{
if ( solve(a,6,11) == 1)
{
if (a[11] > a[12])
printf("the bad is 12:light");
else
printf("the bad is 12:weight");
}
else
{
if (solve(a,6,11) == -1)
{//light
if (a[9] == a[10])
printf("the bad is 11:light");
else if (a[9] > a[10])
printf("the bad is 10:light");
else
printf("the bad is 9:light");
}
else
{//weight
if (a[9] == a[10])
printf("the bad is 11:weight");
else if (a[9] > a[10])
printf("the bad is 9:weight");
else
printf("the bad is 10:weight");
}
}
}
else if (solve(a,1,8) == -1)
{//1-4 weight
if (a[1]+a[9]+a[10]+a[11] == a[2]+a[3]+a[4]+a[5])
{//6,7,8 bad ,light.
if (a[6] == a[7])
printf("the bad is 8:light");
else if (a[6] > a[7])
printf("the bad is 7:light");
else
printf("the bad is 6:light");
}
else if (a[1]+a[9]+a[10]+a[11] > a[2]+a[3]+a[4]+a[5])
{
if (a[1] == a[9])
printf("the bad is 5:light");
else
printf("the bad is 1:weight");
}
else
{
if (a[2] == a[3])
printf("the bad is 4:weight");
else if (a[2] > a[3])
printf("the bad is 2:weight");
else
printf("the bad is 3:weight");
}
}
}
塔悦丹奥: 题目没说清.1.输入仅限于小写字母还是所有字符;2 y,z输出a,b还是也按ASCII码向后推两位.#include <stdio.h>#include <string.h> int main() { char iword; char oword; while(iword = getchar()) { if(iword == '\n') break; oword = (iword - 95) % 26 + 97; printf("%c",oword); } printf("\n"); return 0; } 输入:abcdefxyz 输出:cdefghzab 此程序仅限输入小写字母.
阜宁县13272808306: c语言程序设计 题目一道,求解 - ?
塔悦丹奥: 天平分左右:1:分3份,任取两份称“第一次”(结果是一定可以找到有坏球的那一份)2:天平左边放3个正常的球,右边在有问题的四个里面任取3个称“第二次”2-1:如果平衡,说明问题球是剩余的一个,可以用“第三次”判断轻还是...
阜宁县13272808306: c语言的一道编程题目,求解~~~ - ?
塔悦丹奥: c语言一道题目,求解 悬赏分:0 - 离问题结束还有 14 天 23 小时 题目是:把一个链表按反序排序,即将原链头当作链尾,原链尾当作链头.将链表的数据保存在文中,并能读取出来,用函数实现.我把程序写成如下了,可是为什么保存不了呢...
阜宁县13272808306: 求解一道C语言程序设计题?
塔悦丹奥: C规定: 在含“||”和“&”的式子中,在第一个符号如果为“||”(“&&”),当“||”(“&&”)的左边一旦出现1(0),后面的式子就不用再计算了;如果为0(1),则后面的式子接着计算;比如你的题++x=1(x=1),1或任何数等于1,所以“||”右边的一切都不用管啦,++y,++z简单的说都是不存在的y,z仍为以前默认的0;但如果“||”左边为0的话,答案就不同了.好好领会,希望我的答案对你有帮助!
阜宁县13272808306: 求解一道C语言编程题 - ?
塔悦丹奥: #include #define ARR_LEN 30 //数组长度 void main() { int num[ARR_LEN]; //数组 用来保存1到40之间的数 int index; //循环索引 int minNum=40; //将最小值初始化为40 int place; //位置 for(index=1;index { //如果输入的数不在范围内 则重新输...
阜宁县13272808306: 求解一道C语言基础编程题. - ?
塔悦丹奥: #include <stdio.h> void GetNums(const int n[3], int res[3]) { if (NULL == n || NULL == res) { return; } memmove(res, n, sizeof(int) * 3);#define BACK_MOVE(src, dst) (src) += (dst >>= 1); BACK_MOVE(res[2], res[0]); BACK_MOVE(res[1], res[2]); ...
阜宁县13272808306: 求解一道C语言程序题~~ - ?
塔悦丹奥: 这道题主要牵涉到指针:1)第一个printf 的值:有 struct str1 *p[2]; p[0]=&s1[0];p[1]=&s1[1]; 可得到*(p+1)指向s1[1](即 "IJK","LMN").又因为 ++ (*(p+1))->s意思是指向字符串 "IJK" 的指针自增1,所以打印值为 JK2)第二个printf的打印值:有 struct str2 { struct str1 sr; int d; }s2={"OPQ","RST",0}; 和 s2.sr.c[2] 是指向字符串 "RST" 的第三个字符 T,(因为数组从0开始,c[2]为第三个字符),即结果为 T.故输出为 JKT
阜宁县13272808306: 求解一道简单的C语言题 - ?
塔悦丹奥: 一:输入十进制,输出八、十、十六进制.#include <stdio.h> int main(void) { int n;scanf("%d", &n);printf("八进制:%o\n", n); printf("十进制:%d\n", n); printf("十六进制:%x\n", n); return 0; } 例子:16 八进制:20 十进制...
阜宁县13272808306: 关于C语言程序设计一道题目…… - ?
塔悦丹奥: #include <stdio.h> int main() { int hour, minute; scanf("%d:%d", hour, minute); if(hour <12) printf("%d:%d AM\n", hour, minute); else { if(hour > 12) hour -= 12; printf("%d:%d PM\n", hour, minute); } return 0; }
阜宁县13272808306: C语言的一道题目...求解?
塔悦丹奥: #include<stdio.h> void main() { int a=1,b=2,c=3;if(a--)//因这里是后减减要是这里的条件还是为真,执行IF里面的语句,运行后A为0;b++,c++;elseb--,c--;printf("a=%d,b=%d,c=%d\n",a,b,c); } 所以 a=0,b=3,c=4;