第四周

复数的加和×
#include<stdio.h>
struct complex add(struct complex c1,struct complex c2);
struct complex amass(struct complex c1,struct complex c2);
struct complex
{

 int real;
 int image;

};
main()
{
struct complex a,b;
while(scanf("%d%d%d%d",&a.real,&a.image,&b.real,&b.image)!=EOF)
{
add(a,b);
amass(a,b);
}
}
struct complex add(struct complex c1,struct complex c2)
{
printf("%d+(%di)\n",c1.real+c2.real,c1.image+c2.image);
return c1;
}
struct complex amass(struct complex c1,struct complex c2)
{
printf("%d+(%di)\n",(c1.realc2.real-c1.imagec2.image),(c1.realc2.image+c2.realc1.image));
return c1;
}

#include <stdio.h>
int daysOfMonth(int y,int m);
//计算任意两个日期之间的天数

//判断输入有效
int valiDate(int y,int m,int d){
if(y>3000||y<1900){
printf(“error year!\n”);
return 1;
}
if(m>12||m<1){
printf(“error month!\n”);
return 1;
}
if(d>daysOfMonth(y,m)||d<1){
printf(“error day!\n”);
return 1;
}
return 0;
}

//一个整月的天数
int daysOfMonth(int y,int m){
if(m2){
if(y%4
0&&y%100!=0||y%4000){
return 29;
}else{
return 28;
}
}else if(m
4||m6||m9||m==11){
return 30;
}else{
return 31;
}
}

//输入年份已经过的天数
int daysBefore(int y,int m,int d){
int i,result=0;
for(i=1;i<=12;i++){
if(i==m){
result += d;
return result;
}else{
result += daysOfMonth(y,i);
}
}
}

//计算每年天数
int daysOfYear(int y){
if(y%40&&y%400!=0||y%4000){
return 366;
}else return 365;
}
//主函数
int main(){
int y1,m1,d1,y2,m2,d2;
while(scanf("%d%d%d",&y1,&m1,&d1)!=EOF)
{

while(valiDate(y1,m1,d1)){
scanf("%d%d%d",&y1,&m1,&d1);
}
scanf("%d%d%d",&y2,&m2,&d2);
while(valiDate(y2,m2,d2)){
scanf("%d%d%d",&y2,&m2,&d2);

}

int i,result=0;
for(i=y1;i<y2;i++){
result += daysOfYear(i);
}
result = result - daysBefore(y1,m1,d1) + daysBefore(y2,m2,d2);
printf("%d/%d/%d-%d/%d/%d=%d\n",y2,m2,d2,y1,m1,d1,result);
}
return 0;
}

求最大公约数

#include<stdio.h>
int fum(long int x,long int y);
void main()
{
long int x,y,m,n;
while(scanf("%d%d",&x,&y)!=EOF)
{
m=fum(x,y);
n=x*y/m;
printf("%d %d\n",m,n);
}
}
int fum(long int x,long int y)
{
int m;
m=x<y?x:y;
while(x%m!=0||y%m!=0)
m–;
return m;
}

题目描述
定义学生结构体,包括学号、及三门功课的成绩和总分,按照总分从小到大输出学生学号与总分。

输入
输入包含n(n<20)个学生的信息, 第1行学生人数。
第2行–第n+1行为学生信息,包括学号、及三门功课的成绩。

输出
从小到大输出学生学号与总分。
#include<stdio.h>
struct stur
{
int num;
int fs1;
int fs2;
int fs3;
int zf;
}per[20];
main()
{
int n,p,i,j;
struct stur t;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&per[i].num);
scanf("%d",&per[i].fs1);
scanf("%d",&per[i].fs2);
scanf("%d",&per[i].fs3);
}
for(i=0;i<n;i++)
per[i].zf=per[i].fs1+per[i].fs2+per[i].fs3;
for(i=0;i<n;i++)
{
p=i;
for(j=i+1;j<n;j++)
if(per[j].zf<per[p].zf)
p=j;
if(i!=p)
{t=per[i];per[i]=per[p];per[p]=t;}
printf("%d %d\n",per[i].num,per[i].zf);
}
}

定义学生结构体,包括学号、及三门功课的成绩和总分,按照总分从小到大输出学生学号与总分。

输入
输入包含n(n<20)个学生的信息, 第1行学生人数。
第2行–第n+1行为学生信息,包括学号、及三门功课的成绩。

输出
从小到大输出学生学号与总分。
#include<stdio.h>
struct st
{
int num;
int fs1;
int fs2;
int fs3;
int s;
}q[20];
main()
{
int n,p,i,j;
struct st t;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&q[i].num);
scanf("%d",&q[i].fs1);
scanf("%d",&q[i].fs2);
scanf("%d",&q[i].fs3);
}
for(i=0;i<n;i++)
q[i].s=q[i].fs1+q[i].fs2+q[i].fs3;
for(i=0;i<n;i++)
{
p=i;
for(j=i+1;j<n;j++)
if(q[j].s<q[p].s)
p=j;
if(i!=p)
{t=q[i];q[i]=q[p];q[p]=t;}
printf("%d %d\n",q[i].num,q[i].s);
}
}

编写程序,输入某个人的出生日期和当天的日期,求他的实际年龄。

输入
输入数据有若干组。每组数据一行,有六个整数,表示某个人的出生日期和当天的日期,格式为:年月日。

#include<stdio.h>
struct date
{
int year;
int month;
int day;
};
struct date c[2];
void main()
{
int y,m,d;
while(scanf("%d%d%d%d%d%d",&c[0].year,&c[0].month,&c[0].day,&c[1].year,&c[1].month,&c[1].day)!=EOF)
{
y=c[1].year-c[0].year;
m=c[1].month-c[0].month;
d=c[1].day-c[0].day;
if(m==0)
{
if(d>=0)
printf("%d\n",y);
else
printf("%d\n",y-1);
}
if(m>0)
printf("%d\n",y);
if(m<0)
printf("%d\n",y-1);
}
}

简单计算器
#include <stdio.h>
main()
{
int a,b,d;
char c;
scanf("%d%c%d",&a,&c,&b);
switch©
{
case ‘+’: d=a+b; printf("%d",d);break;
case ‘-’: d=a-b; printf("%d",d);break;
case '’: d=ab; printf("%d",d);break;
case ‘/’: d=a/b; printf("%d",d);break;
default:printf(“有误,请重新输入”);
}
}

输入年月计算天数
#include <stdio.h>
int main()
{
int year, mounth, day;
while(scanf("%d%d", &year, &mounth)!=EOF)
{
if(1 <= mounth && mounth <= 12){
switch(mounth){
case 1:
case 3:
case 5:
case 7:
case 8 :
case 10:
case 12:day = 31; break;
case 4:
case 6:
case 9:
case 11:day = 30; break;
case 2:
if((year%4 == 0 && year%100 != 0) || year%400 == 0)day = 29;
else day = 28;
}
printf("%d\n", day);

	}

}
return 0;
}

#include <stdio.h>
int main()
{
int year, mounth, day;
printf(“请输入一个年份和一个月份\n”);
scanf("%d%d", &year, &mounth);
printf(“year=%d, mounth=%d\n”, year, mounth);
if(1 <= mounth && mounth <= 12){
switch(mounth){
case 1:
case 3:
case 5:
case 7:
case 8 :
case 10:
case 12:day = 31; break;
case 4:
case 6:
case 9:
case 11:day = 30; break;
case 2:
if((year%4 == 0 && year%100 != 0) || year%400 == 0)day = 29;
else day = 28;
}
printf(“此年的此月有%d天”, day);

	}
else printf("请确认你输入的值有实际意义"); 
return 0;

}

swap用法
#include<stdio.h>
swap(int *a,int *b)
{
int t ;
t=*a;
*a=*b;
*b=t;
}
int main()
{
int a=3;
int b=5;
swap(&a,&b);
printf("%d,%d\n",a,b);
}

递推求阶乘
#include <stdio.h>
long fac(int n)
{
long f;
if(n>1)
f=fac(n-1)*n;
else
f=1;
return(f);

}
main()
{
int n;long y;
while(scanf("%d",&n)!=EOF)
{

y=fac(n);
printf("%d\n",y);

}
}

正整数的数字根是将数位上的数字求和进行计算而来
。如果各位数字之和为一位的整数,那么这个整数就是这个数的数字根;
如果之后为多位数,那么重复运用此规则进行计算直至求出一个一位数。
例如12,那么它的数字根就为1+2=3;例如39那么它的数字根就为3+9=12,1+2=3,最终为3。

输入
每行输入一个正整数,输入0表示结束。

输出
#include <stdio.h>
int func(int a)
{
if(a < 10) return a;
int t = 0;
while(a)
{
t += a%10;
a /= 10;
}
return func(t);
}
int main()
{
int a;
while(1)
{
scanf("%d", &a);
if(a == 0)break;
printf("%d\n", func(a));
}
return 0;

}

输入数据有多行组成,首先是一个整数N,
表示测试实例的个数,然后是N行数据,每行有6个整数AH,AM,AS,BH,BM,BS,
分别表示时间A和B所对应的时分秒。题目保证所有的数据合法。
Output
对于每个测试实例,输出A+B,每个输出结果也是由时分秒3部分组成,
同时也要满足时间的规则(即:分和秒的取值范围在0~59),
每个输出占一行,并且所有的部分都可以用32位整数表示。
Sample Input
2
1 2 3 4 5 6
34 45 56 12 23 34
Sample Output
5 7 9
47 9 30
#include <stdio.h>
main()
{
int n,AH,AM,AS,BH,BM,BS;
scanf("%d",&n);
while(n–)
{
scanf("%d%d%d%d%d%d",&AH,&AM,&AS,&BH,&BM,&BS);
int a,b,c;
a=AH+BH;
b=AM+BM;
c=AS+BS;
a+=b/60,b%=60;
b+=c/60,c%=60;
printf("%d %d %d\n",a,b,c);
}
}

求今天是该年第几天
#include <stdio.h>
int main()
{
int m[13], year, month, day, i, d, leap;
for (i=1; i<=12; i++){
if (i1||i3||i5||i7||i8||i10||i12)
m[i]=31;
else if (i!=2)
m[i]=30;
else
m[i]=0;
}
while(scanf("%d%d%d", &year,&month, &day)!=EOF)
{
if (year%4
0){
if (year%1000){
if (year%400
0)
leap=1;
else
leap=0;
}
else
leap=1;
}
else
leap=0;
if (leap)
m[2]=29;
else
m[2]=28;
for (i=1, d=0; i<month; i++)
d+=m[i];
d+=day;

printf("%d\n",d);       

}
return 0;
}

输入一个数然后输入那么多个n,z,e,r要能组成0或1
#include <stdio.h>
main()
{
int n,i;
char ch;
scanf("%d",&n);
int c1=0,c2=0;
getchar();
for(i=1;i<=n;++i)
{
scanf("%c",&ch);
if(ch==‘n’)
++c1;
if(ch==‘z’)
++c2;
}
while(c1–)
printf(“1 “);
while(c2–)
printf(“0 “);
}
十进制转二进制统计1
#include<stdio.h>
main()
{
int i=0,n,x,a[100],d;
scanf(”%d”,&n);
while(n!=0)
{
d=0;
x=n%2;
a[i]=x;
i++;
n=n/2;
}
for(x=i-1;x>=0;x–)
{
if(a[x]==1)
d=d+1;
}
printf(”%d”,d);
}

输出所有形如aabb的四位完全平方数(
即前2位数字相等,后2位数字相等,且是另外一个数的平方)
// 即存在一个正整数n,使得n*n=aabb

#include<stdio.h>
#include<math.h>
int main()
{
int a,b;
for(a=1;a<=9;a++)
{
for(b=0;b<=9;b++)
{
int n=a1100+b11;
int m=sqrt(n)+0.5;//为了减小浮点数误差 的影响,一般四舍五入,在浮点数后面+0.5
if(m*m==n)
{
printf("%d",n);
}
}
}
return 0;
}

输入n (2<n<100) 和n个整数,编写函数,计算n个整数中的最大值和最小值。
#include<stdio.h>
void f(int *a,int n,int *min,int *max)
{
int *p,*a_end;
a_end=a+n;
*max=*min=*a;
for(p=a+1;p<a_end;p++ )
{
if(*p>*max)*max=*p;
if(*p<*min)*min=*p;}
}

int main()
{
int i,n,max,min,a[100];
while (scanf("%d",&n)!=EOF)
{ for (i=0; i<n; i++)
scanf("%d",&a[i]);
f(a,n,&min,&max);
printf("%d %d\n",min,max);
}
return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值