本文整理自博主本科大一《C/C++程序设计》专业课的课内实验报告,适合C语言初学者们学习、练习。
编译器:gcc 10.3.0
----
注:
1.虽然课程名为C++程序设计,但实际上当时校内该课的内容大部分其实都是C语言,C++的元素最多可能只是体现在输入输出。
2.博主当时给出的实验代码可能并不是最优解,这里只是整理并未重编,因此希望各位前来学习的小伙伴们注意辨别,独立思考。
目录
2、输入一个整数,将其插入一个有序整型数组,保证插入后依然有序,并输出插入后的数组。有序数组的内容可以通过数组赋初值设定。
4、删除字符串中某一个字符,如this is a boy.删除字符‘i’后,变成:ths s a boy.
一、实验目的
- 熟悉掌握一维数组的定义和使用。
- 掌握一维数组的常见算法(冒泡排序,有序数组的插入等)。
- 掌握利用字符数组存放字符串,以及字符串的常见操作(复制,比较,连接等)。
- 进一步学习调试程序。
二、实验内容
1、编写程序,键盘输入10个整数,对其进行冒泡排序。
源代码:
#include<iostream>
#define ARR_SIZE 10
using namespace std;
//编写程序,键盘输入10个整数,对其进行冒泡排序。
int main(){
int a[ARR_SIZE];
int i,j;
cout<<"please input 10 integer: "<<endl;
for(i=0;i<ARR_SIZE;i++){
cin>>a[i];
}
//升序排序
int xch;
for(i=0;i<ARR_SIZE-1;i++){
xch = 0;
for(j=0;j<ARR_SIZE-1-i;j++){
int tmp;
if(a[j]>a[j+1]){
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
xch = 1;
}
}
if(!xch){
break;
}
}
cout<<"After convert,the ordered array is: "<<endl;
for(i=0;i<ARR_SIZE;i++){
cout<<a[i]<<'\0';
}
return 0;
}
运行结果:
2、输入一个整数,将其插入一个有序整型数组,保证插入后依然有序,并输出插入后的数组。有序数组的内容可以通过数组赋初值设定。
源代码:
#include<iostream>
#define ARR_SIZE 6
using namespace std;
//输入一个整数,将其插入一个有序整型数组,保证插入后依然有序,并输出插入后的数组。
//有序数组的内容可以通过数组赋初值设定。
int main(){
int a[ARR_SIZE];
int i,j;
cout<<"please input 5 integer: "<<endl;
for(i=0;i<ARR_SIZE-1;i++){
cin>>a[i];
}
for(i=0;i<ARR_SIZE-2;i++){
for(j=0;j<ARR_SIZE-2-i;j++){
int tmp;
if(a[j]>a[j+1]){
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
cout<<"After convert,the ordered array is: "<<endl;
for(i=0;i<ARR_SIZE-1;i++){
cout<<a[i]<<'\0';
}
cout<<endl;
int n;
cout<<"please enter one more integer: ";
cin>>n;
for(i=ARR_SIZE-2;i>=0;i--){
if(n<a[i]){
a[i+1]=a[i];
}else{
a[i+1]=n;
break;
}
}
cout<<"the new array is: "<<endl;
for(i=0;i<ARR_SIZE;i++){
cout<<a[i]<<'\t';
}
return 0;
}
运行结果:
3、利用二维数组实现杨辉三角形的输出。
源代码:
#include<iostream>
#define NUMBER 15
using namespace std;
int main(){
int a[NUMBER][NUMBER];
int i,j;
a[0][0]=1;
a[1][0]=1;
a[1][1]=1;
cout<<a[0][0]<<endl;
cout<<a[1][0]<<'\t'<<a[1][1]<<endl;
for(i=2;i<NUMBER;i++){
a[i][0]=1;
a[i][i]=1;
cout<<a[i][0]<<'\t';
for(j=1;j<i;j++){
a[i][j]=a[i-1][j-1]+a[i-1][j];
cout<<a[i][j]<<'\t';
}
cout<<a[i][i]<<endl;
}
return 0;
}
运行结果:
4、删除字符串中某一个字符,如this is a boy.删除字符‘i’后,变成:ths s a boy.
说明:
- 通过字符数组实现
- 字符串和待删除字符都通过键盘输入
源代码:
#include<iostream>
#include<string.h>
using namespace std;
//删除字符串中某一个字符,如this is a boy.删除字符‘i’后,变成:ths s a boy.
//说明:1)通过字符数组实现
//2)字符串和待删除字符都通过键盘输入
int main(){
char str[101];
char c;
int i;
gets(str);
cout<<"您输入的字符串为:"<<endl;
puts(str);
cout<<"请输入您要删去的一个字符:"<<endl;
cin>>c;
char tmp=127;
for(i=0;str[i]!='\0';i++){
if(str[i]==c){
str[i]=tmp;
}
}
for(i=0;str[i]!='\0';i++){
cout<<str[i];
}
// 字符串中的第i个字符恰好是输入的字符
// 就把该字符替换成127
// 如果字符串中的第二个字符恰好是输入的字符
// 就把该字符替换成127
// 如果字符串中的第三个字符恰好是输入的字符
// 就把该字符替换成127
return 0;
}
运行结果:
三、实验总结
1.通过本次实验,我能够独立且顺畅地完成以上所有实验任务。
2.我熟悉掌握了一维数组、二维数组的定义和使用。
3.能掌握一维数组的常见算法(冒泡排序,有序数组的插入等)。
4.掌握利用字符数组存放字符串,以及字符串的常见操作(复制,比较,连接等)。
5.能够使用调试程序来debug寻找问题。