#include <stdioh>
#include <stringh>
#include <stdlibh>
typedef struct tagTeam {
struct tagTeam next;
char name[256];
int wins;
int draws;
int losses;
int goal;
int drop;
int goalDiff;
int points;
} Team;
void updateTeam(Team team, int goal, int drop)
{
team->wins += goal > drop 1 : 0;
team->draws += goal == drop 1 : 0;
team->losses += goal < drop 1 : 0;
team->goal += goal;
team->drop += drop;
team->goalDiff = team->goal - team->drop;
team->points = team->wins 3 + team->draws;
}
Team createEmptyTeam()
{
return (Team )malloc(sizeof(Team));
}
Team createTeam(const char name, int goal, int drop)
{
Team team = (Team )malloc(sizeof(Team));
team->next = NULL;
strcpy(team->name, name);
team->wins = 0;
team->draws = 0;
team->losses = 0;
team->goal = 0;
team->drop = 0;
team->goalDiff = 0;
team->points = 0;
updateTeam(team, goal, drop);
return team;
}
void deleteTeam(Team team)
{
free(team);
}
void appendTeam(Team list, Team team)
{
if (list != NULL)
team->next = list;
list = team;
}
Team findTeam(Team list, const char name)
{
Team team = list;
while (team != NULL) {
if (strcmp(team->name, name) == 0)
break;
team = team->next;
}
return team;
}
int saveTeamList(const Team list)
{
FILE file;
const Team team;
file = fopen("standingbin", "wb");
if (file == NULL) {
printf("Failed to open the file standingbin\n");
return 1;
}
team = list;
while (team != NULL) {
if (fwrite(team, sizeof(team), 1, file) != 1) {
printf("Failed to save the team infomation!\n");
return 2;
}
team = team->next;
}
fclose(file);
return 0;
}
int loadTeamList(Team list)
{
FILE file;
Team team;
file = fopen("standingbin", "rb");
if (file == NULL) {
printf("Failed to open the file standingbin\n");
return 1;
}
while (1) {
Team team = createEmptyTeam();
if (fread(team, sizeof(team), 1, file) == 1) {
team->next = NULL;
appendTeam(list, team);
} else {
deleteTeam(team);
break;
}
}
fclose(file);
return 0;
}
void printTeam(const Team team)
{
printf(
"Team: %s\n"
" wins: %d\n"
" draws: %d\n"
" losses: %d\n"
" goal: %d\n"
" drop: %d\n"
" goalDiff: %d\n"
" points: %d\n",
team->name, team->wins,
team->draws, team->losses,
team->goal, team->drop,
team->goalDiff, team->points
);
}
void printTeamList(const Team list)
{
const Team team = list;
int index = 1;
while (team != NULL) {
printf("%d ", index);
printTeam(team);
team = team->next;
index++;
}
}
void storeTeamInfo(
Team list,
const char name,
int goal,
int drop
)
{
Team team = findTeam(list, name);
if (team != NULL)
updateTeam(team, goal, drop);
else {
team = createTeam(name, goal, drop);
appendTeam(list, team);
}
}
void parseTeamInfo(
const char matchResult,
char aName,
int goal,
int drop,
char bName
)
{
sscanf(matchResult, "%s %d:%d %s", aName, goal, drop, bName);
}
int main(void)
{
Team teamList = NULL;
FILE file;
char matchResult[1024];
file = fopen("MatchResulttxt", "r");
if (file == NULL) {
printf("Failed to open the file MatchResulttxt\n");
return 1;
}
// 注意,仅支持文件一行不超过1024个字符
// 同时,每一行的格式必须正确。
while (fgets(matchResult, 1024, file)) {
char aName[256], bName[256];
int goal, drop;
parseTeamInfo(matchResult, aName, &goal, &drop, bName);
storeTeamInfo(&teamList, aName, goal, drop);
storeTeamInfo(&teamList, bName, drop, goal);
}
fclose(file);
if (saveTeamList(teamList)) {
printf("Failed to save the team list!\n");
return 2;
}
teamList = NULL;
if (loadTeamList(&teamList)) {
printf("Failed to load the team list!\n");
return 3;
}
printTeamList(teamList);
return 0;
}
------------------------
MatchResulttxt文件格式:
Abc 4:1 Def
Def 3:2 hij
限制:球队名中间不能加空格。 且球队名不长于256个字符。
如果球队名中间出现空格,可用“_”代替,或修改parseTeamInfo函数。
256是一个我直接使用的数字,可用宏替代之。
最后,我没有释放内存。
代码如下:
#include <stdioh>
int main(void)
{
printf("Hello, world!");
return 0;
}
一、首先,打开我们的Visual C++ 60软件,我使用的为中文版,软件主界面如下图所示:
1、然后点击上图工具栏中的文件,里面有个新建菜单,然后我们可以设置一下我们的工作空间,如下图所示:
2、然后在一步步默认点击确定,完成即可,此时工作空间就建立起来了。
二、接下来,再点击工具栏下的文件,里面有个新建菜单,点击它,出现下图的对话框:
1、点击确定即可,创建出一个helloworldc的小程序,然后我们就可以编写我们的Hello World小程序了。此时就需要我们的VC++ 60来编译此程序,编译无错误才运行此程序,编译按钮和运行按钮如下图的红色箭头处:
2、或者可以点击组建工具栏下的编译菜单项,然后再点击执行菜单项,也有快捷键,按Ctrl+F7编译此程序,按Ctrl+F5运行此程序。编译无错误的话,点击运行按钮后如下图所示:
扩展资料:
C语言的基本构成:
1、数据类型。C的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。
2、常量与变量。常量其值不可改变,符号常量名通常用大写。变量是以某标识符为名字,其值可以改变的量。标识符是以字母或下划线开头的一串由字母、数字或下划线构成的序列,请注意第一个字符必须为字母或下划线,否则为不合法的变量名。变量在编译时为其分配相应存储单元。
3、数组。如果一个变量名后面跟着一个有数字的中括号,这个声明就是数组声明。字符串也是一种数组。它们以ASCII的NULL作为数组的结束。要特别注意的是,方括内的索引值是从0算起的。
4、指针。
(1)、如果一个变量声明时在前面使用 号,表明这是个指针型变量。换句话说,该变量存储一个地址,而 (此处特指单目运算符 ,下同。C语言中另有 双目运算符 ) 则是取内容 *** 作符,意思是取这个内存地址里存储的内容。指针是 C 语言区别于其他同时代高级语言的主要特征之一
(2)、指针不仅可以是变量的地址,还可以是数组、数组元素、函数的地址。通过指针作为形式参数可以在函数的调用过程得到一个以上的返回值,不同于return(z)这样的仅能得到一个返回值。
(3)指针是一把双刃剑,许多 *** 作可以通过指针自然的表达,但是不正确的或者过分的使用指针又会给程序带来大量潜在的错误。
5、字符串。C语言的字符串其实就是以'\0'字符结尾的char型数组,使用字符型并不需要引用库,但是使用字符串就需要C标准库里面的一些用于对字符串进行 *** 作的函数。它们不同于字符数组。使用这些函数需要引用头文件<stringh>。
6、文件输入/输出在C语言中,输入和输出是经由标准库中的一组函数来实现的。在ANSI C中,这些函数被定义在头文件<stdioh>;中。
参考资料:
我在你调用库函数的makefile里没有看到你对libapia库的包含,就像你包含动态库用-lpthread一样,你需要包含一下libapia静态库,只是它的包含不需要在前面加-l或-L,直接把你的libapia的路径和名字加上即可。 形如 gcc -g -c test testo -lpthread /libapia
#include<iostream>
#include<typeinfo>
using namespace std;
const int PI=314;
template<typename T>
class Circle{
private:
T r;
public:
Circle(){r=0;}//无参构造函数
Circle(T x):r(x){}//带参构造函数
void show()
{
cout<<r<<endl;
}
T area()
{
return PIrr;
}
};
int main()
{
/int/
Circle<int> a(3);
ashow();//输出半径
cout<<aarea()<<endl;//输出面积
/double/
Circle<double> b(32);
bshow();//输出半径
cout<<barea()<<endl;//输出面积
return 0;
}
强制类型转换是把变量从一种类型转换为另一种数据类型。
例如,如果您想存储一个 long 类型的值到一个简单的整型中,您需要把 long 类型强制转换为 int 类型。您可以使用强制类型转换运算符来把值显式地从一种类型转换为另一种类型。
扩展资料:
举例说明
使用强制类型转换运算符把一个整数变量除以另一个整数变量,得到一个浮点数:
#include <stdioh>int main()
{
int sum = 17, count = 5;
double mean;
mean = (double) sum / count;
printf("Value of mean : %f\n", mean );
}
当上面的代码被编译和执行时,它会产生下列结果:
Value of mean : 3400000
-C语言
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)