1#include<iostream>
#include<cmath>
using namespace std;
int main()
{double a,b,c,s,area;
cout<<"please input a,b,c:";
cin>>a>>b>>c;
if(a+b<=c)
cerr<<"a+b<=c,error!"<<endl;
else if(b+c<=a)
cerr<<"b+c<=a,error!"<<endl;
else if(c+a<=b)
cerr<<"c+a<=b,error!"<<endl;
else
{s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
cout<<"area="<<area<<endl;}
return 0;
}
2(1)#include<iostream>
#include<iomanip>
using namespace std;
int main()
{float a[5];
cout<<"input data:";
for(int i=0;i<5;i++)
cin>>a[i];
cout<<setiosflags(ios::fixed)<<setprecision(2);
for(int i=0;i<5;i++)
cout<<setw(10)<<a[i]<<endl;
return 0;
}
(2)#include<iostream>
using namespace std;
int main()
{float a[5];
int i;
cout<<"input data:";
for(i=0;i<5;i++)
cin>>a[i];
cout.setf(ios::fixed) ;
cout.precision(2);
for(i=0;i<5;i++)
{cout.width(10);
cout<<a[i]<<endl;}
return 0;
}
3#include<iostream>
#include<fstream>
using namespace std;
void fun1()
{int a[10];
ofstream outfile1("f1.dat"),outfile2("f2.dat");
if(!outfile1)
{cerr<<"open f1.dat error!"<<endl;
exit(1);
}
if(!outfile2)
{cerr<<"open f2.dat error!"<<endl;
exit(1);
}
cout<<"enter 10 integer numbers:"<<endl;
for (int i=0;i<10;i++)
{cin>>a[i];
outfile1<<a[i]<<" ";}
cout<<"enter 10 integer numbers:"<<endl;
for(int i=0;i<10;i++)
{cin>>a[i];
outfile2<<a[i]<<" ";}
outfile1.close();
outfile2.close();
}
void fun2()
{ifstream infile("f1.dat");
if(!infile)
{cerr<<"open f1.dat error!"<<endl;
exit(1);
}
ofstream outfile ("f2.dat",ios::app);
if(!outfile)
{cerr<<"open f2.dat error!"<<endl;
exit(1);
}
int a;
for(int i=0;i<10;i++)
{infile>>a;
outfile<<a<<" ";
}
infile.close();
outfile.close();
}
void fun3()
{ifstream infile("f2.dat");
if(!infile)
{cerr<<"open f2.dat error!"<<endl;
exit(1);
}
int a[20];
int i,j,t;
for(i=0;i<20;i++)
infile>>a[i];
for(i=0;i<19;i++)
for(j=0;j<19-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
infile.close();
ofstream outfile("f2.dat",ios::out);
if(!outfile)
{cerr<<"open f2.dat error!"<<endl;
exit(1);}
cout<<"data in f2.dat:"<<endl;
for(i=0;i<20;i++)
{outfile<<a[i]<<" ";
cout<<a[i]<<" ";}
cout<<endl;
outfile.close();
}
int main()
{fun1();
fun2();
fun3();
return 0;
}
4#include<iostream>
#include<fstream>
using namespace std;
struct staff
{
int num;
char name[20];
int age;
double pay;
};
int main()
{
staff staf[7] =
{
2101,"Li",34,1203,
2104,"Wang",23,674.5,
2108,"Fun",54,778,
3006,"Xue",45,476.5,
5101,"Ling",39,656.6
}, staf1;
ofstream outfile1("staff.dat");
if (!outfile1)
cerr << "open staff.dat error!" << endl;
exit(1);
}
ofstream outfile("staff.dat", ios::out);
fstream iofile("staff.dat", ios::in | ios::out | ios::binary);
if (!iofile)
{
cerr << "open error!" << endl;
abort();
}
int i, m, num;
cout << "Five staff:" << endl;
for (i = 0; i < 5; i++)
{
cout << staf[i].num << " " << staf[i].name << " " << staf[i].age << " " << staf[i].pay << endl;
iofile.write((char*)&staf[i], sizeof(staf[i]));
}
cout << "please input 2 staff data you want to insert:" << endl;
iofile.seekp(0, ios::end);
for (i = 0; i < 2; i++)
{
cin >> staf1.num >> staf1.name >> staf1.age >> staf1.pay;
iofile.write((char*)&staf1, sizeof(staf1));
}
cout << "Seven staff:" << endl;
iofile.seekg(0, ios::beg);
for (i = 0; i < 7; i++)
{
iofile.read((char*)&staf[i], sizeof(staf[i]));
cout << staf[i].num << " " << staf[i].name << " " << staf[i].age << " " << staf[i].pay << endl;
}
bool find;
cout << "enter number you want search,enter 0 to stop.";
cin >> num;
while (num)
{
find = false;
iofile.seekg(0, ios::beg);//ios::beg 从开头开始
for (i = 0; i < 7; i++)
{
iofile.read((char*)&staf[i], sizeof(staf[i]));
if (num == staf[i].num)
{
m = iofile.tellg();
cout << num << " is No." << m / sizeof(staf1) << endl;
cout << staf[i].num << " " << staf[i].name << " " << staf[i].age << " " << staf[i].pay << endl;
find = true;
break;
}
}
if (!find)
cout << "not found the stuff" << endl;
cout << "enter number you want search,enter 0 to stop.";
cin >> num;
}
iofile.close();
return 0;
}
C实验代码.rar
需积分: 0 116 浏览量
更新于2022-12-13
收藏 8KB RAR 举报
在"C实验代码.rar"这个压缩包中,我们看到包含了多个以“实验代码”命名的文本文件,这些文件很可能是用于教学或自我学习目的的C语言编程实验代码。每个文件名代表了一个特定的实验,按照数字顺序排列,从实验1到实验9。下面我们将对C语言编程的一些关键知识点进行详细讲解,这些知识点可能会在这些实验代码中出现。
1. **基本语法**:C语言的基础包括变量声明、数据类型(如int、char、float、double等)、运算符(算术、比较、逻辑等)、流程控制(if-else、switch-case、for、while等)以及函数定义和调用。
2. **输入与输出**:C语言使用`printf`和`scanf`函数进行标准输入输出,例如`printf("Hello, World!");`用于打印欢迎信息,`scanf("%d", &num);`用于从用户处获取整数输入。
3. **数组与指针**:数组是相同类型元素的集合,可以是一维、二维或多维。指针存储变量的地址,允许直接访问和修改内存中的值。数组名实际上就是指向其首元素的指针,如`int arr[5]; int *ptr = arr;`。
4. **结构体与联合体**:结构体允许将不同类型的数据组合在一起,如`struct Student { char name[20]; int age; };`。联合体则共享同一块内存,适合存储大小不固定的类型。
5. **函数指针**:函数指针可以指向一个函数,使得函数可以作为参数传递或存储在变量中,如`void (*func_ptr)(int); func_ptr = &my_function; func_ptr(5);`。
6. **文件操作**:C语言提供`fopen`、`fclose`、`fread`、`fwrite`等函数来读写文件,用于实验数据的持久化存储和读取。
7. **内存管理**:通过`malloc`、`calloc`、`realloc`分配内存,`free`释放内存,理解内存管理对于避免内存泄漏至关重要。
8. **预处理指令**:`#include`用于包含头文件,`#define`用于常量定义,`#ifdef/#endif`进行条件编译,这些在编写实验代码时经常用到。
9. **错误处理**:使用`errno`和`perror`检查并报告系统错误,`assert`用于断言检查程序的正确性。
10. **位运算**:C语言支持位运算,如按位与(&)、按位或(|)、按位异或(^)、按位非(~)以及左移(<<)和右移(>>),这些在低级别编程或优化时常见。
11. **递归与循环**:递归是函数自身调用自身,如`factorial(n)`;循环包括for、while、do-while,用于重复执行某段代码。
12. **排序与查找算法**:常见的如冒泡排序、选择排序、插入排序、快速排序、二分查找等,这些算法在实验中常被用作练习。
13. **数据结构**:链表、栈、队列、树等抽象数据类型在C语言中可以通过结构体和指针实现,是高级算法的基础。
14. **指针技巧**:指针的指针、多级指针、指针数组等复杂用法可以实现更高级的功能,如动态创建二维数组。
15. **异常处理**:C语言没有内置的异常处理机制,但可以借助setjmp/longjmp库实现类似功能。
这些知识点构成了C语言编程的核心,通过完成一系列实验,学生可以深入理解和掌握C语言的特性和应用。每个实验可能侧重于一个或多个主题,通过编写、运行和调试代码,提高编程技能和问题解决能力。在实验代码中,我们可以期待看到如何应用这些概念来解决实际问题。