当前位置:首页 » 编程语言 » c语言60行程序详解
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言60行程序详解

发布时间: 2022-11-21 04:09:10

A. 急求,一个简单的c语言程序,要求至少60行,要有些知识点,最好是有创意的。

显示年日历的程序
1、 main1.cpp文件清单:
#include <iostream.h>
#include "head1.h"
#include <iomanip.h>//setw()函数的头文件
extern int year;//全局变量
void main()
{
int i;
cout<<"请输入您要查询的年份:";
cin>>year;
int n=weekday(year);//调用weekday函数
for(i=1;i<=12;i++)//总共的月份 12
{
int lemp=1;
cout<<endl<<year<<"年"<<setw(27)<<i<<"月"<<endl;
cout<<"-----------------------------------"<<endl;
char weekd[7][20]={"Mon","Tue","Wed","Thu","Fri","Sta","Sun"};//记录星期一到星期日
for(int j=0;j<7;j++)
cout<<setw(5)<<weekd[j];//setw(5)表示紧跟其后的数据项的输出占5个字符宽
cout<<endl<<"-----------------------------------"<<endl;
for(int k=1;k<n;k++,lemp++)//输入每月第一天的起始位置,用空格补充
cout<<setw(5)<<" ";
int m=monthday(i);//调用monthday函数
for(int d=1;d<=m;d++,lemp++) //输出每月的天数
{
cout<<setw(5)<<d;
if(lemp==7) //控制一行输出到星期天,如果到星期天则重新计数
{
cout<<endl;
lemp=0;
}
}
n=lemp%7; //当输出完一个月后,记录这个月的最后一天在哪,寻找下个月的
if(n==0) //第一天的起始位置
n=7;
cout<<endl<<"-----------------------------------"<<endl<<endl<<endl;
}
}
2、isl.cpp文件清单:
#include <iostream.h>
int isleapyear(int year)
{
if(year%4==0&&year%100!=0||year%400==0)
return 1;//闰年返回值为1
else
return 0;
}
3、weekday.cpp文件清单:
#include <iostream.h>
int weekday(int year)
{
int n=year-2007;//已知2007年的元旦刚好是星期一
n=n+(n-1)/4+1;// 判断,以每年52个整星期计算该年比2007年多出来的天数
n=n%7;
if(n==0)
return 7; //返回输入的年份的元旦是星期几
else
return n;
}
4、monthday.cpp文件清单:
#include <iostream.h>
#include "head1.h"//需要调用head1中的函数
int year;
int monthday(int i)
{
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
return 31;
else if(i==2)
{
if(isleapyear(year)==1)//调用isleapyear函数
return 29;
else return 28;
}
else return 30;

}5、head1.h文件清单:
int isleapyear(int year);//函数原型声明
int weekday(int year);//函数原型声明
int monthday(int i);//函数原型声明

B. C语言70行程序,在线求。要简单点的。最好附上解释说明该函数什么作用

#include<stdio.h>
#include<ctype.h>
#include<string.h>
#include<stdlib.h>
#defineLIM_LEN30
voidbad_exit(void);
/*-----十六进制字符串转化为十进制-------chapter2_2.3---------------*/
/*-------首先定义一个返回值为int型的幂函数pow1-------*/
intpow1(intm,intn)
{
inti;
intx=1;
for(i=0;i<n;i++)
{
x*=m;
}
returnx;
}
/*-------首先定义一个返回值将十六进制转化为int型的函数htoi-------*/
inthtoi(chars[])
{
intn,m,i;
intcount=0;
intmzs=0;//控制幂函数的指数
charc;
intch[LIM_LEN];
enummark{NO,YES};//定义标记符号
enummarkflag;

i=0;
n=strlen(s);//字符串的长度,属于string.h头文件库中
//printf("n=%d ",n);
if(s[i]=='0')//除去字符串中的0X或者0x
{
i++;
if(s[i]=='x'||s[i]=='X')
{
i++;
}
}
//printf("i=%d ",i);
//printf("%d ",i);
flag=YES;
//printf("%d ",YES);
for(i,m=0;i<n&&flag==YES;i++)//将字符串转化为相应的十六进制数字并放入一个int数组中
{
c=s[i];
if(isdigit(c))
{
ch[m]=s[i]-'0';
}
elseif(c>='a'&&c<='f')
{
ch[m]=s[i]-'a'+10;
}
elseif(c>='A'&&c<='F')
{
ch[m]=s[i]-'A'+10;
}
else
{
flag=NO;
atexit(bad_exit);//参数为函数指针,虽然在内部定义但是还需要在文件中函数声明,要不就是错误
exit(EXIT_FAILURE);//参数EXIT_FAILURE和EXIT_SUCCESS
//puts("theinputisn't0-9ora-f!");//打印但是会计算一个溢出错误值,上述方法可避免
}
m++;
}
//printf("i=%d ",i);
//printf("m=%d ",m);
m=m-1;//m多计数一次,需要退回一次--------------->每次一定考虑是否多计数!!!
for(m;m>=0;m--)//累加来求出int型的值
{
count+=ch[m]*pow1(16,mzs);
mzs++;
}
returncount;
}
/*-------错误退出注册函数给atexit()使用-------*/
voidbad_exit(void)
{
puts("theinputisn't0-9ora-f!");
}
/*-------首先定义一个返回值将十六进制转化为int型的函数htoi的驱动函数-------*/
voidhtoi_test()
{
intcount;
charn_nums[]="0X12a";//298
count=htoi(n_nums);
printf("%d ",count);
}
/*-----十六进制字符串转化为十进制-------chapter2_2.3------over---------*/

C. c语言程序详解

while(a<15)a++; 出循环时a为15
while(b++<15); b++为后加,当b为15是退出循环,之后因为b++,所以b还会再自加1变为16
所以结果即为15,16

D. 大家帮忙看看c语言程序,最好写上每行注释

#include<stdio.h>// 系统函数
#include<time.h>//时间函数
#define MAX 32 //定义函数MAX=32
long queen[MAX]={0},queenl = 1; // 长数组queen MAX内元素为全零,queenl 这个函数为1
int count =0,label = 0;//整形 函数 定义数值
FILE *txt; 文件格式
void Answers(long row, long ml, long mr)
无返回值函数(long是一种数字的格式,有long short double float)
{
if(row != queenl)//条件
{
long pos = queenl & ~(row|ml|mr);同时满足两个条件下 pos等于这个结果
while(pos)//循环
{
long p = pos & -pos;// p等于同时正负pos,也就是说,怎么说好呢,你就理解为它是一个无法满足的条件,使之变成0,因为只有0是+-一体的
pos-=p; // pos=pos -p
Answers(row|p, (ml|p)>>1, (mr|p)<<1);
}
}
else
count++; count= count +1
}

void Answersp(int n,long row, long ml, long mr)//同理
{
if(row != queenl)
{
long pos = queenl & ~(row|ml|mr);
while(pos)
{
long p = pos & -pos;
pos-=p;
int i = 0;
while(p>>i)i++; //当满足p>>0时 i=i+1,但是注意这句话有点问题,你少了一对大括号,循环语句没有循环的范围,这样的话循环的只有queen【n】=i这句话
queen[n] = i;
Answersp(n+1, row|p, (ml|p)>>1, (mr|p)<<1);
queen[n] = 0;
}
}
else
{
count++;
for(int j=0; j<label; j++)
fprintf(txt,"%d.",queen[j]);//出指令printf(“ “)是格式
fprintf(txt," ");
if(count%3 == 0)fprintf(txt,"\n");
}
}

int main()main函数,程序主体
{
double f,f1; 定义双精度浮点函数
char print= 'n' ,flag; 字符函数
printf("请输入1~32的之间的整数:"); 输出
while(label == 0 || label <= 1 || label >= 32) 同时满足三个条件执行循环,这个循环,其实就是流文件读取确保里面有东西
{
scanf("%d",&label); 读入
while((flag = getchar()) != 10);
这句循环条件2 steps| 1) flag = grther() 2) flag所获得的值不能等于10
if(label <= 0 || label <= 1 || label >= 32)
printf("非法输入!\n请输入1~31的之间的整数:\n");
}
printf("将%d皇后的解输出到answer.txt?(Y确定,任意键继续)\n",label);
scanf("%c",&flag);
print = flag;
while(flag != 10)flag = getchar();
printf("程序计算中,所需时间依问题规模而定,请耐心等待....\n");

for(int i=1; i<label; i++) 循环
queenl=1+(queenl<<1);
if(print == 'y' || print == 'Y')
{
if((txt=fopen("answer.txt","w"))==NULL) fopen是流文件读取
printf("answer.txt文件打开出错!\n");
else
{
f=time(NULL); null是系统函数,似乎是空值,这个记不清了,很多年没编辑C了,忘了
Answersp(0, 0, 0, 0);
f1=time(NULL);
f1 = f1-f;
fprintf(txt,"\n==%d问题的解总数有%d种==\n",label,count);
fprintf(txt,"用时%d分%d秒\n",(int)(f1/60),(int)((int)f1%60));
fclose(txt);流文件读取关闭
}
}
else
{
f=time(NULL);
Answers(0, 0, 0);
f1=time(NULL);
f1 = f1-f;
printf("\n==%d问题的解总数有%d种==\n",label,count);
printf("用时%d分%d秒\n",(int)(f1/60),(int)((int)f1%60));
}
printf("Program end.\nPress Enter key to exit!");
while((flag = getchar()) != 10);
}
大概的进行了标注,相同格式的语句就没有重复标记,希望你能理解

E. C语言程序设计,求各行程序的含义和意思,答辩用的,蟹蟹大佬

C语言实现简单的翻译功能

2018年04月25日 16:48:30火炎焱燚OOK阅读数 3813

题目描述:编写一个程序,依次输入英文与汉语拼音,输入两个“ * ”表示输入结束,再输入一段英语句子,打印出其对应汉语拼音。

要求:不得使用<string.h>头文件

题目中要求不得使用<string.h>提醒我们使用其中的函数来编写代码,不过函数的实现需要自己来思考,根据自己的需要可以调整原函数的功能。思路大致是:输入完毕后拿原结构体记录的英文内容与 a 中的单词逐个相比,若相同,则输出结构体中对应的汉语拼音。

#include <stdio.h>#include <stdlib.h>#define M 100struct tran //建立结构体,将英文与对应的汉语拼音存储在一起{char English[M];char Chinese[M];}n[M];int my_strlen(char a[]); //声明自定义测量数组长度的函数int my_strcmp(char* str1,char* str2); //声明自定义判断两个字符串是否相同的函数int main(){int i=1,j,k;char a[M],*p=a;printf("请首先输入英文,然后输入汉语拼音: ");while(n[i-1].English[0]!='*'||n[i-1].Chinese[0]!='*') //当输入两个“ * ”时输入终止{printf("请输入第%d组 ",i);scanf("%s%s",n[i].English,n[i].Chinese);i++;}printf("请输入一个句子 ");getchar(); //接收上一个回车,避免下一个scanf()无法输入scanf("%[^ ]",a);for(i=0;a[i]!='';i++){if(my_strcmp(p,n[i].English)==1){p=p+my_strlen(n[i].English)+1; //使p指针后移,指向第二个单词printf("%s ",n[i].Chinese);i=-1; //使下次循环 i = 0}}printf(" ");system("pause");return 0;}int my_strcmp(char* str1,char* str2){int flag=0;while(*str1==*str2){str1++;if(*str1==''||' '){flag=1;return 1;}elsestr2++;}if(flag==0)return 0;}int my_strlen(char a[]){int i,k=0;for(i=0;a[i]!='';i++){k++;}return k;}

下面是程序示例:


F. 求一个c语言程序设计,大约60行左右就可以

给你一个学生成绩管理的系统,有成绩的录入,分数的排序,删除,修改等功能。

struct__stu{

intstuNum;

charname[20];

intScoreMath;

};

__stustu[50];

intnumberSTU=0;

voidprintinfo(void)

{

printf("1成绩录入 ");

printf("2成绩显示 ");

printf("3成绩修改 ");

printf("4成绩统计 ");

printf("5成绩排序 ");

printf("6显示菜单 ");

printf("7退出 ");

}

voidinputinfo(intn)

{

printf("第%d个学生的学号:",n);

scanf("%d",&stu[n-1].stuNum);

getchar();

printf("第%d个学生的姓名:",n);

gets(stu[n-1].name);

printf("第%d个学生数学成绩:",n);

scanf("%d",&stu[n-1].ScoreMath);

getchar();

}

voiddisplayinfo(intn)

{

inti=0;

printf("学号 姓名 分数 ");

for(i=0;i<n;i++)

{

printf("%d %s %d ",stu[i].stuNum,stu[i].name,stu[i].ScoreMath);

}

}

voidcountNum(intn)

{

inti=0;

inttempNum=0;

for(i=0;i<n;i++)

{

if(stu[i].ScoreMath<60)

{

tempNum++;

}

}

printf("及格的人数为:%d 不及格的人数为:%d ",n-tempNum,tempNum);

}

voidmodify(intstuNumber)

{

inti=0;

for(i=0;i<numberSTU;i++)

{

if(stu[i].stuNum==stuNumber)

{

printf("你想修改的分数为:");

scanf("%d",&stu[i].ScoreMath);

getchar();

printf("修改成功 ");

return;

}

}

printf("学号错误,修改失败 ");

}

voidsoucemath_from_higt_to_low(intn)

{

intindexi;

intindexj;

__stu_temp;

for(indexi=0;indexi<n;indexi++)

{

for(indexj=indexi+1;indexj<n;indexj++)

{

if(stu[indexi].ScoreMath<stu[indexj].ScoreMath)

{

_temp=stu[indexj];

stu[indexj]=stu[indexi];

stu[indexi]=_temp;

}

}

}

printf("数学分数从高到低排列: ");

displayinfo(numberSTU);

}

intmain(intargc,char*argv[])

{

charcasechar=0;

intstudentNUm=1;

printinfo();

while(1)

{

printf("输入指令:");

scanf("%c",&casechar);

getchar();

switch(casechar)

{

case'1':

numberSTU++;

inputinfo(numberSTU);

//printf("输入信息 ");

break;

case'2':

displayinfo(numberSTU);

//printf("显示成绩 ");

break;

case'3':

printf("输入你想修改的学生学号:");

scanf("%d",&studentNUm);

getchar();

modify(studentNUm);

break;

case'4':

countNum(numberSTU);

break;

case'5':

soucemath_from_higt_to_low(numberSTU);

break;

case'6':

printinfo();

break;

case'7':

return0;

}

}

return0;

}

G. 我要写一个C语言程序,关于文本转换的,转换出来的文本每行不超过60个字符,详细如下……

把输入塞到一个string里...输出的那个string定为60,把输入的string往里面传,没满60就往里面送,到了60可是下一个不是空格就吐出来退到上一个空格...这样你输出的string就是不超过60个字符的尽可能多的单词...这时候你可以找个变量定位下输入string的位置或者干脆把前面的去掉...输入换行...然后重复进行...再输出...

H. 寻找一个C语言程序 60行到100行左右 注释详细

#include <stdio.h> /*头函数*/
int main(void) /*主函数*/
{
char c; /*指定c成为字符变量*/
printf("请输入0到9的任意一个数字\n"); /*输出请输入0到9的任意一个数字*/
c=getchar(); /*输入一个字符*/
while(c>=48&&c<=57) /*c的取值范围*/
{
getchar();
switch(c) /*根据c的值转换*/
{
case '0': printf("你喜欢奋斗吗?\n"); /*假如c=0,输出你喜欢奋斗吗?*/
break; /*中断跳出,执行c=getchar()*/
case '1': printf("你喜欢当模特吗?\n"); /*假如c=1,输出你喜欢当模特吗?*/
break; /*中断跳出,执行c=getchar()*/
case '2': printf("你喜欢和谐吗?\n"); /*假如c=2,输出你喜欢和谐吗?*/
break; /*中断跳出,执行c=getchar()*/
case '3': printf("你喜欢道家吗?\n"); /*假如c=3,输出你喜欢道家吗?*/
break; /*中断跳出,执行c=getchar()*/
case '4': printf("你是广东人吗?\n"); /*假如c=4,输出你是广东人吗?*/
break; /*中断跳出,执行c=getchar()*/
case '5': printf("你喜欢武术吗?\n"); /*假如c=5,输出你喜欢武术吗?*/
break; /*中断跳出,执行c=getchar()*/
case '6': printf("祝你一帆风顺!\n"); /*假如c=6,输出祝你一帆风顺!*/
break; /*中断跳出,执行c=getchar()*/
case '7': printf("观察等待好机会!\n"); /*假如c=7,输出观察等待好机会!*/
break; /*中断跳出,执行c=getchar()*/
case '8': printf("你喜欢交际吗?\n"); /*假如c=8,输出你喜欢交际吗?*/
break; /*中断跳出,执行c=getchar()*/
case '9': printf("追求完美吧!\n"); /*假如c=9,输出追求完美吧!*/
break; /*中断跳出,执行c=getchar()*/
}
c=getchar(); /*再输入一个字符*/
}
return 0; /*返回值*/
}

I. 谁提供一原创C语言完整程序,50行以上,有程序注释,急用

#include<reg52.h>
#define uchar unsigned char //宏定义
#define uint unsigned int
sbit rs=P2^6; //液晶引脚位定义
sbit rw=P2^5;
sbit en=P2^7;
sbit k5=P2^3; //独立键盘位定义
sbit k6=P2^2;
sbit k7=P2^4;
sbit sda=P2^1; //EEPROM位定义
sbit scl=P2^0;
sbit JD=P1^4;
uchar i,tt,a;
char shi,fen,miao;
uchar code D[]=" 2011-3-24";
uchar code D1[]=" : : ";
void delay1() //延时函数,延时时间约4us
{;;}
void start() //EEPROM中开始信号
{
sda=1;
delay1();
scl=1;
delay1();
sda=0;
delay1();

}
void stop() //EEPROM中停止信号
{
sda=0;
delay1();
scl=1;
delay1();
sda=1;
delay1();}
void response() //EEPROM中应答信号
{
uint i;
scl=0;
delay1();
scl=1;
delay1();
while((sda==1)&&(i<250))i++)
scl=0;
delay1();
}
void write_byte(uchar shu)//在EEPROM中写8位2进制数
{
uint i;
uchar temp;
temp=shu;
for(i=0;i<8;i++)
{
temp=temp<<1;
scl=0;
delay1();
sda=CY;
delay1();
scl=1;
delay1();
}
scl=0;
delay1();
sda=1;
delay1();
}
uchar read_byte()//从EEPROM中读8位2进制数
{
uint i;
uchar a;
scl=0;
delay1();
sda=1;
delay1();
for(i=0;i<8;i++)
{
scl=1;
delay1();
a=(a<<1)|sda;
delay1();
scl=0;
delay1();
}
return a;
}
void write(uchar address,uchar date)//在EEPROM指定地址写入数据
{
start();
write_byte(0xa0);
response();
write_byte(address);
response();
write_byte(date);
response();
stop();}
uchar read(uchar address) //从EEPROM中指定地址读数据
{
uchar date;
start();
write_byte(0xa0);
response();
write_byte(address);
response();
start();
write_byte(0xa1);
response();
date=read_byte();
stop();
return date;
}
void delay(uchar z) //延时函数
{
uchar x,y;
for(x=z;x>0;x--)
for(y=120;y>0;y--);
}
write_com(uchar com) //给液晶写指令
{
en=0;
rs=0;
rw=0;
P0=com;
delay(5);
en=1;
delay(5);
en=0;
}
write_date(uchar date) //给液晶写数据
{
en=0;
rs=1;
rw=0;
P0=date;
delay(5);
en=1;
delay(5);
en=0;
}
void write_sfm(uchar add,char date)//液晶在指定位置开始写指定的数
{ char x,y;
x=date/10;
y=date%10;
write_com(0x80+0x40+add);
write_date(0x30+x);
write_date(0x30+y);
}
void init()
{ TMOD=0x01; //定时器0的初始化
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;ET0=1;
TR0=1;
write_com(0x38); //液晶的初始化
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(i=0;i<12;i++) //显示液晶的第一行
{write_date(D[i]);<br> delay(20);<br> }
write_com(0x80+0x40);//显示液晶的第二行
for(i=0;i<12;i++)
{write_date(D1[i]);<br> delay(20);<br> }
shi=read(4);//从eeprom中读值分别赋给时分秒
fen=read(5);
miao=read(2);
write_sfm(4,shi);//液晶第二行显示时分秒
write_sfm(7,fen);
write_sfm(10,miao);}
void main()
{
init();
while(1)
{
if(k5==0)
{
delay(5);
if(k5==0)
{
while(!k5);//松手检测
delay(5);
while(!k5);
a++;
TR0=0;
if(a==4)
{
a=0;
TR0=1;
tt=0;
}

}
}
switch(a)
{
case 1: //秒的调整
{ write_com(0x80+0x40+11);//调光标到秒的位置
write_com(0x0f); //光标闪烁
if(k6==0)
{
delay(5);
if(k6==0)
{ while(!k6);
delay(5);
while(!k6);
miao++;
if(miao==60)
miao=0;
write(2,miao);
write_sfm(10,miao);
write_com(0x80+0x40+11);
}
}
if(k7==0)
{
delay(5);
if(k7==0)
{ while(!k7);
delay(5);
while(!k7);
miao--;
if(miao<0)
miao=59;
write(2,miao);
write_sfm(10,miao);
write_com(0x80+0x40+11);
}
}
} break;
case 2: //分钟的调整
{ write_com(0x80+0x40+8);//调光标到分的位置
if(k6==0)
{
delay(5);
if(k6==0)
{ while(!k6);
delay(5);
while(!k6);
fen++;
if(fen==60)
fen=0;
write(5,fen);
write_sfm(7,fen);
write_com(0x80+0x40+8);
}
}
if(k7==0)
{
delay(5);
if(k7==0)
{ while(!k7);
delay(5);
while(!k7);
fen--;
if(fen<0)
fen=59;
write(5,fen);
write_sfm(7,fen);
write_com(0x80+0x40+8);
}
}
} break;
case 3: //小时的调整
{ write_com(0x80+0x40+5);//调光标到小时的位置
if(k6==0)
{
delay(5);
if(k6==0)
{ while(!k6);
delay(5);
while(!k6);
shi++;
if(shi==24)
shi=0;
write(4,shi);
write_sfm(4,shi);
write_com(0x80+0x40+5);
}
}
if(k7==0)
{
delay(5);
if(k7==0)
{ while(!k7);
delay(5);
while(!k7);
shi--;
if(shi<0)
shi=23;
write(4,shi);
write_sfm(4,shi);
write_com(0x80+0x40+5);
}
}
} break;
case 0:
{
write_com(0x0c); //开液晶显示,不显光标,光标不闪
if(tt==20) //每过一秒时钟走一秒
{
tt=0;
miao++;
if(miao==60)
{
JD=0;
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
shi=0;
write_sfm(4,shi);
write(4,shi);
}
write_sfm(7,fen);
write(5,fen);
}
write_sfm(10,miao);
write(2,miao);
if(miao==30)
JD=1;
}
}
}
}

}
void timer0() interrupt 1 //定时器0函数
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;

}
C++的~~LCD时钟程序

J. C语言程序求讲解

这个程序应该是计算一个班级人员排名的小程序.好久没有看过C代码了,只能勉强下了!
#include"stdio.h" //引入stdio.h头文件
#include"string.h" //引入字符类头文件
struct stu //定义结构体stu
{ int num; //结构体变量 num
char name[20]; //结构体变量 字符数组name
int score[3];} //结构体变量 整形数组
a[3];
main() //主方法 main
{int i,j,z=0,s=0;int ave; //定义整形变量
for(i=0;i<3;i++) //循环
{printf("input %d num:",i+1); //循环打印 input 0 num:,input 1 num:,input 2 num:
scanf("%d",&a[i].num); //取得输入的值
getchar(); //从stdio流中读字符,相当于getc(stdin),它从标准输入里读取下一个字符,该函数声明在stdio.h头文件中,使用的时候要包含stdio.h头文件
printf("input name:"); //打印 input name:
gets(a[i].name); //从a[i].name中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串。
printf("input score:" ); //打印 input score:
for(j=0;j<3;j++) //循环
scanf("%d",&a[i].score[j]);} //取得输入的值
for(i=0;i<3;i++) //循环
{for(j=0;j<3;j++) //循环
s+=a[i].score[j];
ave=s/3; //求平均数
printf("ave=%d ",ave); //打印平均数
s=0;
if(ave>=85&&ave<=90) //如果平均数>=85且平均数小于90
printf("%d,%s\n",a[i].num,a[i].name);} //打印排名 和 名字
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
if(a[i].score[j]<60) //如果分数小于60
{ z++;
if(z>=2) //如果有两个分数都小于60
{printf("%d ",a[i].num); //打印该排名
if(a[i].score[j]<60) //如果当前的分数小于60
printf("%d ",a[i].score[j]);}} //则打印出当前的分数
z=0; //z重新赋值为0
}
}