博主:命运之光
专栏:算法修炼之练气篇
题目 1036: [编程入门]带参数宏定义练习
题目描述
定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。
输入格式
两个数,空格隔开
输出格式
交换后的两个数,空格隔开
样例输入
1 2
样例输出
2 1
intmain() { inta,b,t; scanf("%d %d",&a,&b); change(a,b); printf("%d %d",a,b); return0; }
题目 1051: [编程入门]结构体之成绩统计2
题目描述
有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)
输入格式
学生数量N占一行每个学生的学号、姓名、三科成绩占一行,空格分开。
输出格式
各门课的平均成绩 最高分的学生的数据(包括学号、姓名、3门课成绩)
样例输入
2
1 blue 90 80 70
b clan 80 70 60
样例输出
85 75 65
1 blue 90 80 70
intn,i,sum1=0,sum2=0,sum3=0,temp=0,cout=0; structstudent{ charid[100]; charname[100]; intscore[3]; intTotalscore; }s[100]; voidinput(inti){ scanf("%s %s %d %d %d",s[i].id,s[i].name,&s[i].score[0],&s[i].score[1],&s[i].score[2]); } voidaverage() { for(i=0;i<n;i++) { sum1=sum1+s[i].score[0]; sum2=sum2+s[i].score[1]; sum3=sum3+s[i].score[2]; } sum1=sum1/n;sum2=sum2/n;sum3=sum3/n; printf("%d %d %d\n",sum1,sum2,sum3); } voidheight() { for(i=0;i<n;i++) { s[i].Totalscore=s[i].score[0]+s[i].score[1]+s[i].score[2]; } for(i=0;i<n;i++) { if(temp<=s[i].Totalscore) { temp=s[i].Totalscore; cout=i; } } printf("%s %s %d %d %d\n",s[cout].id,s[cout].name,s[cout].score[0],s[cout].score[1],s[cout].score[2]); } intmain() { scanf("%d",&n); for(i=0;i<n;i++) { input(i); } average(); height(); return0; }
题目 1050: [编程入门]结构体之成绩记录
题目描述
现有有N个学生的数据记录,每个记录包括学号、姓名、三科成绩。 编写一个函数input,用来输入一个学生的数据记录。 编写一个函数print,打印一个学生的数据记录。 在主函数调用这两个函数,读取N条记录输入,再按要求输出。 N<100
输入格式
学生数量N占一行 每个学生的学号、姓名、三科成绩占一行,空格分开。
输出格式
每个学生的学号、姓名、三科成绩占一行,逗号分开。
样例输入
2
a100 clang 70 80 90
b200 dotcpp 90 85 75
样例输出
a100,clang,70,80,90
b200,dotcpp,90,85,75
structstudent{ charid[100]; charname[100]; intscore[3]; }s; voidinput(){ scanf("%s %s %d %d %d",s.id,s.name,&s.score[0],&s.score[1],&s.score[2]); } voidprint(){ printf("%s,%s,%d,%d,%d\n",s.id,s.name,s.score[0],s.score[1],s.score[2]); } intmain() { intn; scanf("%d",&n); while(n--) { input(); print(); } return0; }
题目 1049: [编程入门]结构体之时间设计
题目描述
定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。
输入格式
年月日
输出格式
当年第几天
样例输入
2000 12 31
样例输出
366
intmonth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31},i,sum=0; structtime{ intyear; intm; intday; }t; intmain() { scanf("%d %d %d",&t.year,&t.m,&t.day); if(t.year%100!=0&&t.year%4==0||t.year%400==0) { month[2]=29; } for(i=1;i<t.m;i++) { sum=sum+month[i]; } printf("%d",sum+t.day); return0; }
题目 1042: [编程入门]电报加密
题目描述
输入一行电报文字,将字母变成其下一字母(如’a’变成’b’……’z’变成’a’其它字符不变)。
输入格式
一行字符
输出格式
加密处理后的字符
样例输入
a b
样例输出
b c
usingnamespacestd; intmain() { chars[1000]; inti; gets(s); intlen=strlen(s); for(i=0;i<len;i++) { if(s[i]>='a'&&s[i]<='z') { if(s[i]=='z') { s[i]='a'; } else { s[i]=s[i]+1; } } printf("%c",s[i]); } return0; }