1. 程式人生 > 其它 >C++ 實驗十四結構程式設計

C++ 實驗十四結構程式設計

技術標籤:C語言實驗c++c語言

1.輸入一個時間數值,再輸入秒數n,輸出該時間再過n秒後的時間值,時間的表示形式為:時:分:秒,超過24時從0重新開始計時。
輸入輸出示例(括號內為說明)如下:
輸入:
11:59:40
30(秒數n=30)
輸出:
time:12:0:10(11:59:40加上30秒的新時間)

#include<stdio.h>        //構建結構體
struct time{
	int hour;
	char fu;
	int minute;
	char hao;
	int second;
};
int main()
{
	int n;
	struct time s1;
//定義結構體變數 printf("Input present time:"); scanf("%d%c%d%c%d",&s1.hour,&s1.fu,&s1.minute,&s1.hao,&s1.second); printf("Input n:"); scanf("%d",&n); if(s1.second+n>=60) {s1.minute=s1.minute+(s1.second+n)/60; //n值有可能大於60,故整除60得到增加的分鐘數
//printf("%d",(s1.second+n)/60); 驗證增加分鐘數;可不寫 s1.second=s1.second+n-((s1.second+n)/60)*60; } else s1.second=s1.second+n; if(s1.minute>=60) {s1.minute=s1.minute-60; s1.hour=s1.hour+1; } else s1.minute=s1.minute; if(s1.hour>=24) s1.hour=0; printf("now time:%d%c%d%c%d"
,s1.hour,s1.fu,s1.minute,s1.hao,s1.second); return 0; }

實驗結果:(1)n<60
(1)n<60
(2)n>60
在這裡插入圖片描述

2.輸入整數n(n<10),再輸入n個學生的基本資訊,包括序號。姓名和成績,要求計算並輸出他們的平均成績(保留2位小數)。
輸入輸出示例(括號內為說明)如下:
輸入:
3(n=3)
1 zhang 70
2 wang 80
3 qian 90
輸出:
average:80.00

#include<stdio.h>
struct student{
	int num;
	char name[20];
	int sroce;
};
int main()
{
	int i,n;
	float sum=0;
	struct student s1;
	printf("Input n:");
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		scanf("%d%s%d",&s1.num,&s1.name,&s1.sroce);
		sum=sum+s1.sroce;
	}
	printf("average:%.2f",sum/n);
}

3.輸入4個整數a1,b1,a2,b2,分別表示兩個複數的實部和虛部,求兩個複數之積(a1+b1i)(a2+b2i),乘積的實部為a1×a2-b1×b2,虛部為a1×b2+a2×b1。
輸入輸出示例(括號內為說明)如下:
輸入:
3 4 5 6
輸出:
(3+4i)*(5+6i)= -9+38i

#include<stdio.h>
struct fushu{
	int a1;
	int b1;
	int a2;
	int b2;
};
int main()
{
	struct fushu s1;
	int a,b;
	printf("兩個複數的實部和虛部:\n");
	scanf("%d%d%d%d",&s1.a1,&s1.b1,&s1.a2,&s1.b2);
	a=s1.a1*s1.a2-s1.b1*s1.b2;
	b=s1.a1*s1.b2+s1.a2*s1.b1;
	printf("(%d+%di)*(%d+%di)=%d+%di",s1.a1,s1.b1,s1.a2,s1.b2,a,b);
	return 0;
}

4.通訊錄排序。建立一個通訊錄,輸入n(n<10)個朋友的資訊,包括姓名、生日、電話號碼,生日包括年、月、日。並按照年齡從大到小的順序依次輸出通訊錄。

思路:結構體巢狀。

#include<stdio.h>
struct brith{
	int year;
	int month;
	int day;
};
struct friend{
	char name[20];
	struct brith age;
	char num[15];
	int sum;
};
int main()
{
	struct friend b[10],item;
	int i,j,k,n;
	printf("Input n(n<10):");
	scanf("%d",&n);
	printf("姓名 出生年月 電話:\n");
	for(i=0;i<n;i++)
	{
		scanf("%s%d%d%d%s",b[i].name,&b[i].age.year,&b[i].age.month,&b[i].age.day,b[i].num);
		b[i].sum=b[i].age.year*365+b[i].age.month*30+b[i].age.day;
	
	}
	for(j=0;j<n;j++)
		for(k=0;k<n-j;k++)
		if(b[k].sum>b[k+1].sum)
		{
			item=b[k];
			b[k]=b[k+1];
			b[k+1]=item;
		}
	printf("年齡由大到小輸出:\n");
	for(i=0;i<n;i++)
	   {
	   	printf("%s",b[i].name);
	   	printf("%5d%3d%3d",b[i].age.year,b[i].age.month,b[i].age.day);
		printf("%12s\n",b[i].num);
	   }
	return 0;	
}

實驗結果:
在這裡插入圖片描述