C/C++程序设计实验报告综合作业 | 小小计算器

本文整理自博主本科大一《C/C++程序设计》专业课的课内实验报告,适合C语言初学者们学习、练习。

编译器:gcc 10.3.0

----

注:

1.虽然课程名为C++程序设计,但实际上当时校内该课的内容大部分其实都是C语言,C++的元素最多可能只是体现在输入输出。

2.博主当时给出的实验代码可能并不是最优解,这里只是整理并未重编,因此希望各位前来学习的小伙伴们注意辨别,独立思考。

源码仓库:https://github.com/wyd333/HENU_experiment_report

目录

一、实验目的

二、实验内容

1、菜单

2、 加减乘除运算

3、数位位数计算

4、 圆形面积计算

5、判断闰年

6、成绩转换

7、计算从1到输入数区间内的奇数和

8、计算从1到输入数区间内的偶数和

9、输出从1到输入数之间所有3的倍数

10、求区间内既被3整除又被5整除的数 

11、求水仙花数

12、求两个数的最大值

13、求两个数的最大值与最小值

14、冒泡排序

15、矩阵转置

16、求对角线和

17、统计单词个数

18、创建静态链表

(1)创建学生结构体

(2)创建静态链表

19、创建动态链表

(1)定义相关的结构体类型

(2)创建动态链表 

(3)输出链表与释放链表

20、结构体排序

(1)定义结构体

(2)结构体排序(冒泡排序)

21、main函数流程控制逻辑

三、完整源码

四、运行结果

功能11-15

功能16-20 

功能21-22

五、实验总结


一、实验目的

  1. 掌握设计开发一个小程序的流程。
  2. 能够将本学期各个重要知识点进行综合运用

二、实验内容

1、菜单

void menu(){cout<<"  ******************************************"<<endl;cout<<"  *             【小小计算器】             *"<<endl;cout<<"  *    1 加法                              *"<<endl;cout<<"  *    2 减法                              *"<<endl;cout<<"  *    3 乘法                              *"<<endl;cout<<"  *    4 除法                              *"<<endl;cout<<"  *    5 判断数字的位数                    *"<<endl;cout<<"  *    6 计算圆面积                        *"<<endl;cout<<"  *    7 判断闰年                          *"<<endl;cout<<"  *    8 成绩转换                          *"<<endl;cout<<"  *    9 计算从1到输入数间奇数和           *"<<endl;cout<<"  *    10 计算从1到输入数间偶数和          *"<<endl;cout<<"  *    11 输出从1到输入数之间所有3的倍数   *"<<endl;cout<<"  *    12 求既被3整除又被5整除的数         *"<<endl;cout<<"  *    13 求水仙花数                       *"<<endl;cout<<"  *    14 求最大值                         *"<<endl;cout<<"  *    15 求最大值与最小值                 *"<<endl;cout<<"  *    16 指针冒泡排序                     *"<<endl;cout<<"  *    17 矩阵转置                         *"<<endl;cout<<"  *    18 求对角线和                       *"<<endl;cout<<"  *    19 统计单词个数                     *"<<endl;cout<<"  *    20 静态创建链表                     *"<<endl;cout<<"  *    21 动态创建链表                     *"<<endl;cout<<"  *    22 学生成绩排序                     *"<<endl;cout<<"  ******************************************"<<endl;cout<<endl<<endl;
}

2、 加减乘除运算

对应菜单功能1、2、3、4。

int add(int x,int y){return x+y;
}
int sub(int x,int y){return x-y;
}
float mul(float x,float y){return x*y;
}
float div(float x,float y){return x/y;
}

注意除法运算除数不能为0,对于除数的判断逻辑加在了调用方即main函数中。

3、数位位数计算

对应菜单功能5。

int weishu(int x){int ge,shi,bai;ge=x%10;shi=x/10%10;bai=x/100%10;if(bai!=0){printf("个位:%d\t",ge);printf("十位:%d\t",shi);printf("百位:%d\n",bai);cout<<"这个数的位数是:";return 3;}else if(bai==0 && shi!=0){printf("个位:%d\t",ge);printf("十位:%d\n",shi);cout<<"这个数的位数是:";return 2;}else{printf("个位:%d\n",ge);cout<<"这个数的位数是:";return 1;}
}

4、 圆形面积计算

对应菜单功能6。

double area(double x){return PI*x*x;
}

5、判断闰年

对应菜单功能7。

void year(int x){if((x%4 == 0 && x%100 != 0) || x%400 == 0){printf("%d是闰年!",x);}else{printf("%d不是闰年!",x);}
}

6、成绩转换

对应菜单功能8。

void score(int x){while(x<0 || x>100){cout<<"成绩输入错误!"<<endl;cout<<"请再输入一个成绩:";}switch (x/10) {case 10:case 9:cout<<"优秀"<<endl;break;case 8:cout<<"良"<<endl;break;case 7:cout<<"中"<<endl;break;case 6:cout<<"及格"<<endl;break;default:cout<<"不及格"<<endl;break;}	
}

7、计算从1到输入数区间内的奇数和

对应菜单功能9。

int oddSum(int x){int sum=0;int i;for(i=1;i<=x;i+=2){sum+=i;}return sum;
}

8、计算从1到输入数区间内的偶数和

对应菜单功能10。 

int evenSum(int x){int sum=0;int j=2;while(j<=x){sum+=j;j+=2;}return sum;
}

9、输出从1到输入数之间所有3的倍数

对应菜单功能11。

void threeMul(int x){int i=1;do{if(i%3==0){cout<<i<<"  ";}i++;}while(i<=x);
}

10、求区间内既被3整除又被5整除的数 

对应菜单功能12。

void Number(int x,int y){int i;for(i=x;i<=y;i++){if(i%3==0 && i%5==0){cout<<i<<endl;break;}}
}

11、求水仙花数

对应菜单功能13。

void flowerN(){int ge,shi,bai;int i;for(i=100;i<1000;i++){ge=i%10;shi=i/10%10;bai=i/100%10;if(i==ge*ge*ge+shi*shi*shi+bai*bai*bai){cout<<i<<"  ";}}	
}

12、求两个数的最大值

对应菜单功能14。 

// main函数中直接调用库函数,输出最大值
cout<<"最大的数是: "<<max(p,q)<<endl;

13、求两个数的最大值与最小值

对应菜单功能15。

void maxmin(double x,double y){double p,q;p=max(x,y);q=min(x,y);x=p;y=q;printf("较大值为:%4.2f\n",x);printf("较小值为:%4.2f\n",y);
}

14、冒泡排序

对应菜单功能16。

void bubbleSort(int *p,int len){int xch;for(int i=0;i<len-1;i++){xch = 0;for(int j=0;j<len-1-i;j++){if( *(p+j) < *(p+j+1) ){int tmp;tmp = *(p+j);*(p+j) = *(p+j+1);*(p+j+1) = tmp;xch = 1;}}if(!xch){break;}}for(int i=0;i<len;i++){cout<<p[i]<<'\t';}
}

15、矩阵转置

对应菜单功能17。

// main函数中逻辑
int a1[3][4];
int b1[4][3];
for(int i=0;i<3;i++){for(int j=0;j<4;j++){cin>>a1[i][j];}
}
for(int i=0;i<3;i++){for(int j=0;j<4;j++){b1[j][i]=a1[i][j];}
}
for(int i=0;i<4;i++){for(int j=0;j<3;j++){cout<<b1[i][j]<<'\t';}cout<<endl;
}

16、求对角线和

对应菜单功能18。

void asum(int a[][3],int len){int sum = 0;for(int i=0;i<len;i++){for(int j=0;j<3;j++){if(i==j){sum+=a[i][j];}}}cout<<"主对角线的元素和sum= "<<sum;cout<<endl;
}

17、统计单词个数

对应菜单功能19。

void countWord(char str[]){    //19int num = 0;int word = 0;for(int i=0;str[i]!='\0';i++){if(!((str[i]>='a' && str[i]<='z')||(str[i]>='A' && str[i]<='Z'))){word=0;}else if(word==0){word=1;num++;}}cout<<endl;cout<<"共有 "<<num<<" 个单词。"<<endl;
}

18、创建静态链表

对应菜单功能20。

(1)创建学生结构体

typedef struct Student{int sno;struct Student *next;
}STU;

(2)创建静态链表

STU stu1,stu2,stu3,stu4;
STU *head,*t;
stu1.sno = 101; stu2.sno = 102;
stu3.sno = 103; stu4.sno = 104;
head = &stu1;
stu1.next = &stu2; stu2.next = &stu3;
stu3.next = &stu4; stu4.next = NULL;
t = head;
int i;
i = 0;
do{i++;printf("stu%d.sno = %d \n",i,t->sno);t = t->next;
}while(t != NULL);

19、创建动态链表

对应菜单功能21。

(1)定义相关的结构体类型

struct ZH *Create();
void Shu(struct ZH *head2);
void Fang(struct ZH **head2);
struct ZH{int z;struct ZH *next;
};

(2)创建动态链表 

struct ZH *Create(){struct ZH *head2=NULL,*p,*p1;p=(struct ZH*)malloc(LEN);scanf("%d",&p->z );p->next =NULL;while(p->z >= 0){if(head2==NULL){head2=p;p1=p;}else{p1->next =p;p1=p;}p=(struct ZH*)malloc(LEN);scanf("%d",&p->z);p->next =NULL;}p1->next =NULL;return head2;
}

(3)输出链表与释放链表

//输出链表
void Shu(struct ZH *head2){struct ZH *p;p=head2;while(p!=NULL){printf("%3d",p->z );p=p->next ;}putchar('\n');
}
//释放链表
void Fang(struct ZH **head2){struct ZH *p;while(*head2!=NULL){p=*head2;*head2=(*head2)->next ;free(p);}*head2=NULL;
}

20、结构体排序

对应菜单功能22。

(1)定义结构体

typedef struct Student{int sno;struct Student *next;
}STU;
struct stu {int sno;char name[20];float grade;
}Stu[10]{{101,"AAA",80},{102,"BBB",99},{103,"CSS",50},{104,"FTP",76.5},{105,"DNS",90.5},{106,"RMB",34},{107,"FBI",89},{108,"NBA",78},{109,"UFO",77},{110,"ERF",61}
};
typedef struct stu STUX;

(2)结构体排序(冒泡排序)

void bubbleSort2(STUX *p,int len){void print(STUX x);int xch;for(int i=0;i<len-1;i++){xch = 0;for(int j=0;j<len-1-i;j++){if( (p+j)->grade > (p+1+j)->grade ){struct stu tmp;tmp = *(p+j);*(p+j) = *(p+j+1);*(p+j+1) = tmp;xch = 1;}}if(!xch){break;}}for(int i=0;i<len;i++){print(Stu[i]);cout<<endl;}
}

21、main函数流程控制逻辑

int main(){int a,b;float c,d;int flag=0;//判断是否退出程序int N;cout<<"【小小计算器】请选择模式 输入模式前序号>: ";do{scanf("%d",&N);cout<<endl;switch (N) {case 1://加法运算int addResult;cout<<"1、加法--请输入两个整数a、b:"<<endl;cin>>a>>b;addResult=add(a,b);cout<<"a+b= ";	printf("%d (dec)",addResult);printf("  %o (otc)",addResult);printf("  %x (hex)\n\n",addResult);break;case 2://减法运算int subResult;cout<<"2、减法--请输入两个整数a、b:"<<endl;cin>>a>>b;subResult=sub(a,b);cout<<"a-b= ";	printf("%d (dec)",subResult);printf("  %o (otc)",subResult);printf("  %x (hex)\n\n",subResult);break;case 3://乘法运算float mulResult;cout<<"3、乘法--请输入两个实数c、d:"<<endl;cin>>c>>d;mulResult=mul(c,d);cout<<"c*d= ";	printf("%f (小数)\t",mulResult);printf("%e (指数)\n\n",mulResult);break;case 4://除法float divResult;cout<<"4、除法--请输入两个实数c、d:"<<endl;cin>>c>>d;while(d==0){cout<<"除数为0,无法进行除法运算!!"<<endl;cout<<"请再输入:d= ";cin>>b;}divResult=div(c,d);cout<<"c÷d= ";	printf("%f (小数)\t",divResult);printf("%e (指数)\n\n",divResult);break;case 5://计算位数int n;cout<<"5、判断数字的位数--输入一个正整数n(0~999):";cin>>n;cout<<weishu(n)<<endl;break;case 6://计算圆面积double r;cout<<"6、计算圆面积--请输入圆的半径r:  ";cin>>r;printf("面积为:%f\n",area(r));printf("保留两位小数:%6.2f\n\n\n",area(r));break;case 7://判断闰年int nian;cout<<"7、判断闰年--请输入一个年份:";cin>>nian;year(nian);break;case 8://成绩转换int grade;cout<<"8、成绩转换--请输入一个百分制成绩(0~100):";cin>>grade;score(grade);break;case 9://计算从1到输入数间奇数和 int oN;cout<<"9、计算从1到n之间所有的奇数和--请输入一个数n:";cin>>oN;cout<<"1到"<<oN<<"之间的奇数和为 "<<oddSum(oN)<<endl;break;case 10://计算偶数和int eN;cout<<"10、计算从1到n之间所有的偶数和--请输入一个数n:";cin>>eN;cout<<"1到"<<eN<<"之间的偶数和为 "<<evenSum(eN)<<endl;break;case 11://输出从1到输入数之间所有3的倍数int n_3;cout<<"11、输出1到n间所有3的倍数--请输入一个正整数n:";cin>>n_3;threeMul(n_3);cout<<endl;break;case 12://求既被3整除又被5整除的数int a,b;cout<<"12、输出n1、n2两数间第一个既被3整除又被5整除的数\n请输入两个数:";cin>>a>>b;cout<<"这个数为: ";Number(a,b);break;case 13://求水仙花数cout<<"13、计算100-1000间所有的水仙花数: "<<endl;flowerN();cout<<endl;break;case 14://最大值double p,q;cout<<"14、计算最大值--请输入两个实数: ";cin>>p>>q;cout<<"最大的数是: "<<max(p,q)<<endl;break;case 15://求最大值最小值double n1,n2;cout<<"15、计算最大值与最小值--请输入两个实数:";cin>>n1>>n2;maxmin(n1,n2);	break;case 16://冒泡排序int c[5];int *w;w = c;for(int i=0;i<5;i++){cin>>c[i];}bubbleSort(w,5);break;case 17://矩阵转置int a1[3][4];int b1[4][3];for(int i=0;i<3;i++){for(int j=0;j<4;j++){cin>>a1[i][j];}}for(int i=0;i<3;i++){for(int j=0;j<4;j++){b1[j][i]=a1[i][j];}}for(int i=0;i<4;i++){for(int j=0;j<3;j++){cout<<b1[i][j]<<'\t';}cout<<endl;}break;case 18://求对角线和int x[3][3];cout<<"18、求对角线和--请输入一个3*3的整数矩阵:";for(int i=0;i<3;i++){for(int j=0;j<3;j++){cin>>x[i][j];}}asum(x,3);break;case 19://统计单词个数char str[101];cout<<"19、统计单词个数--请输入一行单词,单词间用空格分隔开:"<<endl;fflush(stdin);gets(str);countWord(str);cout<<endl;break;case 20://静态链表STU stu1,stu2,stu3,stu4;STU *head,*t;stu1.sno = 101; stu2.sno = 102;stu3.sno = 103; stu4.sno = 104;head = &stu1;stu1.next = &stu2; stu2.next = &stu3;stu3.next = &stu4; stu4.next = NULL;t = head;int i;i = 0;do{i++;printf("stu%d.sno = %d \n",i,t->sno);t = t->next;}while(t != NULL);break;case 21://创建动态链表cout << "21、输出动态链表--从键盘上输入正整数,当输入一个负数后将链表中的数据输出。" << endl;struct ZH *head2,*pointer;head2=Create();Shu(head2);pointer = head2;while(pointer != NULL){pointer = pointer->next;}putchar('\n');Fang(&head2);break;case 22://结构体排序cout << "22、按照10位同学的分数进行排序";STUX *s;s = Stu;bubbleSort2(s,10);float s_sum;s_sum = 0;for(int i=0;i<10;i++){s_sum += Stu[i].grade; }float s_avg;s_avg = s_sum / 10;cout << "10位学生的总成绩为 " << s_sum << endl;cout << "10位学生的平均成绩为 " << s_avg << endl;break;default:cout<<"▲请选择正确的模式序号!!!";break;}char judge;cout<<"..............................."<<endl;cout<<"【是否退出程序?】\n▲按(Y)退出程序,按其它任意键继续..."<<endl;cin>>judge;if(judge=='Y'){flag=1;break;}else{cout<<"▲请重新选择模式:";}	}while(flag==0);return 0;
}

三、完整源码

#include<iostream>
#include<string.h>
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct ZH)
#define PI 3.14
using namespace std;int add(int x,int y){return x+y;
}
int sub(int x,int y){return x-y;
}
float mul(float x,float y){return x*y;
}
float div(float x,float y){return x/y;
}
int weishu(int x){int ge,shi,bai;ge=x%10;shi=x/10%10;bai=x/100%10;if(bai!=0){printf("个位:%d\t",ge);printf("十位:%d\t",shi);printf("百位:%d\n",bai);cout<<"这个数的位数是:";return 3;}else if(bai==0 && shi!=0){printf("个位:%d\t",ge);printf("十位:%d\n",shi);cout<<"这个数的位数是:";return 2;}else{printf("个位:%d\n",ge);cout<<"这个数的位数是:";return 1;}
}
double area(double x){return PI*x*x;
}
void year(int x){if((x%4 == 0 && x%100 != 0) || x%400 == 0){printf("%d是闰年!",x);}else{printf("%d不是闰年!",x);}
}
void score(int x){while(x<0 || x>100){cout<<"成绩输入错误!"<<endl;cout<<"请再输入一个成绩:";}switch (x/10) {case 10:case 9:cout<<"优秀"<<endl;break;case 8:cout<<"良"<<endl;break;case 7:cout<<"中"<<endl;break;case 6:cout<<"及格"<<endl;break;default:cout<<"不及格"<<endl;break;}	
}
int oddSum(int x){int sum=0;int i;for(i=1;i<=x;i+=2){sum+=i;}return sum;
}
int evenSum(int x){int sum=0;int j=2;while(j<=x){sum+=j;j+=2;}return sum;
}
void threeMul(int x){int i=1;do{if(i%3==0){cout<<i<<"  ";}i++;}while(i<=x);
}
void Number(int x,int y){int i;for(i=x;i<=y;i++){if(i%3==0 && i%5==0){cout<<i<<endl;break;}}
}
void flowerN(){int ge,shi,bai;int i;for(i=100;i<1000;i++){ge=i%10;shi=i/10%10;bai=i/100%10;if(i==ge*ge*ge+shi*shi*shi+bai*bai*bai){cout<<i<<"  ";}}	
}
void maxmin(double x,double y){double p,q;p=max(x,y);q=min(x,y);x=p;y=q;printf("较大值为:%4.2f\n",x);printf("较小值为:%4.2f\n",y);
}
void bubbleSort(int *p,int len){int xch;for(int i=0;i<len-1;i++){xch = 0;for(int j=0;j<len-1-i;j++){if( *(p+j) < *(p+j+1) ){int tmp;tmp = *(p+j);*(p+j) = *(p+j+1);*(p+j+1) = tmp;xch = 1;}}if(!xch){break;}}for(int i=0;i<len;i++){cout<<p[i]<<'\t';}
}
void asum(int a[][3],int len){int sum = 0;for(int i=0;i<len;i++){for(int j=0;j<3;j++){if(i==j){sum+=a[i][j];}}}cout<<"主对角线的元素和sum= "<<sum;cout<<endl;
}
void countWord(char str[]){    //19int num = 0;int word = 0;for(int i=0;str[i]!='\0';i++){if(!((str[i]>='a' && str[i]<='z')||(str[i]>='A' && str[i]<='Z'))){word=0;}else if(word==0){word=1;num++;}}cout<<endl;cout<<"共有 "<<num<<" 个单词。"<<endl;
}typedef struct Student{int sno;struct Student *next;
}STU;
struct stu {int sno;char name[20];float grade;
}Stu[10]{{101,"AAA",80},{102,"BBB",99},{103,"CSS",50},{104,"FTP",76.5},{105,"DNS",90.5},{106,"RMB",34},{107,"FBI",89},{108,"NBA",78},{109,"UFO",77},{110,"ERF",61}
};
typedef struct stu STUX;void print(STUX x){cout << "学号:" << x.sno << endl;cout << "姓名:" << x.name << endl;cout << "分数:" << x.grade << endl;
}
void bubbleSort2(STUX *p,int len){void print(STUX x);int xch;for(int i=0;i<len-1;i++){xch = 0;for(int j=0;j<len-1-i;j++){if( (p+j)->grade > (p+1+j)->grade ){struct stu tmp;tmp = *(p+j);*(p+j) = *(p+j+1);*(p+j+1) = tmp;xch = 1;}}if(!xch){break;}}for(int i=0;i<len;i++){print(Stu[i]);cout<<endl;}
}struct ZH *Create();
void Shu(struct ZH *head2);
void Fang(struct ZH **head2);
struct ZH{int z;struct ZH *next;
};void menu(){cout<<"  ******************************************"<<endl;cout<<"  *             【小小计算器】             *"<<endl;cout<<"  *    1 加法                              *"<<endl;cout<<"  *    2 减法                              *"<<endl;cout<<"  *    3 乘法                              *"<<endl;cout<<"  *    4 除法                              *"<<endl;cout<<"  *    5 判断数字的位数                    *"<<endl;cout<<"  *    6 计算圆面积                        *"<<endl;cout<<"  *    7 判断闰年                          *"<<endl;cout<<"  *    8 成绩转换                          *"<<endl;cout<<"  *    9 计算从1到输入数间奇数和           *"<<endl;cout<<"  *    10 计算从1到输入数间偶数和          *"<<endl;cout<<"  *    11 输出从1到输入数之间所有3的倍数   *"<<endl;cout<<"  *    12 求既被3整除又被5整除的数         *"<<endl;cout<<"  *    13 求水仙花数                       *"<<endl;cout<<"  *    14 求最大值                         *"<<endl;cout<<"  *    15 求最大值与最小值                 *"<<endl;cout<<"  *    16 指针冒泡排序                     *"<<endl;cout<<"  *    17 矩阵转置                         *"<<endl;cout<<"  *    18 求对角线和                       *"<<endl;cout<<"  *    19 统计单词个数                     *"<<endl;cout<<"  *    20 静态创建链表                     *"<<endl;cout<<"  *    21 动态创建链表                     *"<<endl;cout<<"  *    22 学生成绩排序                     *"<<endl;cout<<"  ******************************************"<<endl;cout<<endl<<endl;
}int main(){int a,b;float c,d;int flag=0;//判断是否退出程序int N;cout<<"【小小计算器】请选择模式 输入模式前序号>: ";do{scanf("%d",&N);cout<<endl;switch (N) {case 1://加法运算int addResult;cout<<"1、加法--请输入两个整数a、b:"<<endl;cin>>a>>b;addResult=add(a,b);cout<<"a+b= ";	printf("%d (dec)",addResult);printf("  %o (otc)",addResult);printf("  %x (hex)\n\n",addResult);break;case 2://减法运算int subResult;cout<<"2、减法--请输入两个整数a、b:"<<endl;cin>>a>>b;subResult=sub(a,b);cout<<"a-b= ";	printf("%d (dec)",subResult);printf("  %o (otc)",subResult);printf("  %x (hex)\n\n",subResult);break;case 3://乘法运算float mulResult;cout<<"3、乘法--请输入两个实数c、d:"<<endl;cin>>c>>d;mulResult=mul(c,d);cout<<"c*d= ";	printf("%f (小数)\t",mulResult);printf("%e (指数)\n\n",mulResult);break;case 4://除法float divResult;cout<<"4、除法--请输入两个实数c、d:"<<endl;cin>>c>>d;while(d==0){cout<<"除数为0,无法进行除法运算!!"<<endl;cout<<"请再输入:d= ";cin>>b;}divResult=div(c,d);cout<<"c÷d= ";	printf("%f (小数)\t",divResult);printf("%e (指数)\n\n",divResult);break;case 5://计算位数int n;cout<<"5、判断数字的位数--输入一个正整数n(0~999):";cin>>n;cout<<weishu(n)<<endl;break;case 6://计算圆面积double r;cout<<"6、计算圆面积--请输入圆的半径r:  ";cin>>r;printf("面积为:%f\n",area(r));printf("保留两位小数:%6.2f\n\n\n",area(r));break;case 7://判断闰年int nian;cout<<"7、判断闰年--请输入一个年份:";cin>>nian;year(nian);break;case 8://成绩转换int grade;cout<<"8、成绩转换--请输入一个百分制成绩(0~100):";cin>>grade;score(grade);break;case 9://计算从1到输入数间奇数和 int oN;cout<<"9、计算从1到n之间所有的奇数和--请输入一个数n:";cin>>oN;cout<<"1到"<<oN<<"之间的奇数和为 "<<oddSum(oN)<<endl;break;case 10://计算偶数和int eN;cout<<"10、计算从1到n之间所有的偶数和--请输入一个数n:";cin>>eN;cout<<"1到"<<eN<<"之间的偶数和为 "<<evenSum(eN)<<endl;break;case 11://输出从1到输入数之间所有3的倍数int n_3;cout<<"11、输出1到n间所有3的倍数--请输入一个正整数n:";cin>>n_3;threeMul(n_3);cout<<endl;break;case 12://求既被3整除又被5整除的数int a,b;cout<<"12、输出n1、n2两数间第一个既被3整除又被5整除的数\n请输入两个数:";cin>>a>>b;cout<<"这个数为: ";Number(a,b);break;case 13://求水仙花数cout<<"13、计算100-1000间所有的水仙花数: "<<endl;flowerN();cout<<endl;break;case 14://最大值double p,q;cout<<"14、计算最大值--请输入两个实数: ";cin>>p>>q;cout<<"最大的数是: "<<max(p,q)<<endl;break;case 15://求最大值最小值double n1,n2;cout<<"15、计算最大值与最小值--请输入两个实数:";cin>>n1>>n2;maxmin(n1,n2);	break;case 16://冒泡排序int c[5];int *w;w = c;for(int i=0;i<5;i++){cin>>c[i];}bubbleSort(w,5);break;case 17://矩阵转置int a1[3][4];int b1[4][3];for(int i=0;i<3;i++){for(int j=0;j<4;j++){cin>>a1[i][j];}}for(int i=0;i<3;i++){for(int j=0;j<4;j++){b1[j][i]=a1[i][j];}}for(int i=0;i<4;i++){for(int j=0;j<3;j++){cout<<b1[i][j]<<'\t';}cout<<endl;}break;case 18://求对角线和int x[3][3];cout<<"18、求对角线和--请输入一个3*3的整数矩阵:";for(int i=0;i<3;i++){for(int j=0;j<3;j++){cin>>x[i][j];}}asum(x,3);break;case 19://统计单词个数char str[101];cout<<"19、统计单词个数--请输入一行单词,单词间用空格分隔开:"<<endl;fflush(stdin);gets(str);countWord(str);cout<<endl;break;case 20://静态链表STU stu1,stu2,stu3,stu4;STU *head,*t;stu1.sno = 101; stu2.sno = 102;stu3.sno = 103; stu4.sno = 104;head = &stu1;stu1.next = &stu2; stu2.next = &stu3;stu3.next = &stu4; stu4.next = NULL;t = head;int i;i = 0;do{i++;printf("stu%d.sno = %d \n",i,t->sno);t = t->next;}while(t != NULL);break;case 21://创建动态链表cout << "21、输出动态链表--从键盘上输入正整数,当输入一个负数后将链表中的数据输出。" << endl;struct ZH *head2,*pointer;head2=Create();Shu(head2);pointer = head2;while(pointer != NULL){pointer = pointer->next;}putchar('\n');Fang(&head2);break;case 22://结构体排序cout << "22、按照10位同学的分数进行排序";STUX *s;s = Stu;bubbleSort2(s,10);float s_sum;s_sum = 0;for(int i=0;i<10;i++){s_sum += Stu[i].grade; }float s_avg;s_avg = s_sum / 10;cout << "10位学生的总成绩为 " << s_sum << endl;cout << "10位学生的平均成绩为 " << s_avg << endl;break;default:cout<<"▲请选择正确的模式序号!!!";break;}char judge;cout<<"..............................."<<endl;cout<<"【是否退出程序?】\n▲按(Y)退出程序,按其它任意键继续..."<<endl;cin>>judge;if(judge=='Y'){flag=1;break;}else{cout<<"▲请重新选择模式:";}	}while(flag==0);return 0;
}动态链表
struct ZH *Create(){struct ZH *head2=NULL,*p,*p1;p=(struct ZH*)malloc(LEN);scanf("%d",&p->z );p->next =NULL;while(p->z >= 0){if(head2==NULL){head2=p;p1=p;}else{p1->next =p;p1=p;}p=(struct ZH*)malloc(LEN);scanf("%d",&p->z);p->next =NULL;}p1->next =NULL;return head2;
}
//输出链表
void Shu(struct ZH *head2){struct ZH *p;p=head2;while(p!=NULL){printf("%3d",p->z );p=p->next ;}putchar('\n');
}
//释放链表
void Fang(struct ZH **head2){struct ZH *p;while(*head2!=NULL){p=*head2;*head2=(*head2)->next ;free(p);}*head2=NULL;
}

四、运行结果

功能11-15

功能16-20 

功能21-22


五、实验总结

本次实验我的总结如下:

  1. 基本掌握了设计开发一个小程序的流程,能熟练地够将本学期各个重要知识点进行综合运用。
  2. 巩固了用函数来封装程序,实现功能的编写方法,函数功能具有通用性,能体现数据的传递。
  3.  能独立完成程序的编写设计,对于对于实现过程中产生的问题进行了总结。
  4. 熟练地使用debug来查找程序中的漏洞。
  5. 在指针和数组作为函数形参方面还有些不熟练,应当予以及时复习。
  6. 要有程序优化的想法,在设计完一个程序后,思考是否还有更优解。
  7. 应及时巩固复习,并对程序予以必要的维护。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/831631.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度解析 Spring 源码:探寻Bean的生命周期

文章目录 一、 Bean生命周期概述二、Bean生命周期流程图三、Bean生命周期验证3.1 代码案例3.2 执行结果 四、Bean生命周期源码4.1 setBeanName()4.2 setBeanFactory()4.3 setApplicationContext()4.4 postProcessBeforeInitialization()4.5 afterPropertiesSet()4.6 postProces…

力扣刷题第1天:消失的数字

大家好啊&#xff0c;从今天开始将会和大家一起刷题&#xff0c;从今天开始小生也会开辟新的专栏。&#x1f61c;&#x1f61c;&#x1f61c; 目录 第一部分&#xff1a;题目描述 第二部分&#xff1a;题目分析 第三部分&#xff1a;解决方法 3.1 思路一&#xff1a;先排序…

十、多模态大语言模型(MLLM)

1 多模态大语言模型&#xff08;Multimodal Large Language Models&#xff09; 模态的定义 模态&#xff08;modal&#xff09;是事情经历和发生的方式&#xff0c;我们生活在一个由多种模态(Multimodal)信息构成的世界&#xff0c;包括视觉信息、听觉信息、文本信息、嗅觉信…

MySQL技能树学习——数据库组成

数据库组成&#xff1a; 数据库是一个组织和存储数据的系统&#xff0c;它由多个组件组成&#xff0c;这些组件共同工作以确保数据的安全、可靠和高效的存储和访问。数据库的主要组成部分包括&#xff1a; 数据库管理系统&#xff08;DBMS&#xff09;&#xff1a; 数据库管理系…

MySQL45讲(一)(40)

回顾binlog_formatstatement STATEMENT 记录SQL语句。日志文件小&#xff0c;节约IO&#xff0c;但是对一些系统函数不能准确复制或不能复制&#xff0c;如now()、uuid()等 在RR隔离级别下&#xff0c;binlog_formatstatement 如果执行insert select from 这条语句是对于一张…

OpenCV如何为等值线创建边界旋转框和椭圆(63)

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇:OpenCV 为轮廓创建边界框和圆(62) 下一篇:OpenCV的图像矩(64) 目标 在本教程中&#xff0c;您将学习如何&#xff1a; 使用 OpenCV 函数 cv::minAreaRect使用 OpenCV 函数 cv::fitEllipse cv::min…

Gradle 进阶学习 之 build.gradle 文件

build.gradle 是什么&#xff1f; 想象一下&#xff0c;你有一个大型的乐高项目&#xff0c;你需要一个清单来列出所有的乐高积木和它们如何组合在一起。在软件开发中&#xff0c;build.gradle 就是这个清单&#xff0c;它告诉计算机如何构建&#xff08;组合&#xff09;你的软…

这是一个简单的照明材料网站,后续还会更新

1、首页效果图 代码 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>爱德照明网站首页</title><style>/*外部样式*/charset "utf-8";*{margin: 0;padding: 0;box-sizing: border-box;}a{text-dec…

开源版本管理系统的搭建一:SVN

作者&#xff1a;私语茶馆 1.Windows搭建SVN版本管理系统 1.1.SVN概要和组成 背景介绍 Svn是一个开源版本管理系统&#xff0c;由CollabNet公司于2000年发布&#xff0c;23年12月发布最新版本Apache Subversion 1.14.3。官方网站&#xff1a;Apache Subversion。 Svn可以直…

G1 - 生成对抗网络(GAN)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目录 理论知识生成器判别器基本原理 环境步骤环境设置数据准备模型设计模型训练模型效果展示 总结与心得体会 理论知识 生成对抗网络&#xff08;Generative …

U盘惊现“USBC乱码”?别急,数据恢复有妙招!

近日&#xff0c;不少用户反馈在将U盘插入电脑后&#xff0c;出现了一个令人困惑的问题&#xff1a;U盘里的文件或文件夹名突然变成了无法识别的乱码&#xff0c;甚至整个U盘的文件系统显示为“USBC乱码”。面对这种情况&#xff0c;用户往往感到无从下手&#xff0c;担心重要数…

【知识加油站】——机电产品数字孪生机理模型构建

明确一种多领域、多层次、参数化、一致性的机电一体化装备数字孪生机理模型构建准则&#xff01; 关键词英文简称&#xff1a; 数字孪生&#xff1a;DT物联网&#xff1a;IoT网络物理系统&#xff1a;CPS高级架构&#xff1a;HLA统一建模语言&#xff1a;UML数控机床&#xf…

webpack打包工具

目录 1. yarn包管理器 1.1 yarn 是什么, 有什么用? 1.2 yarn的使用 ​​​​​​2. webpack基本概述 2.1 webpack是什么&#xff1f; 2.2 什么是打包&#xff1f; 2.3 webpack能做什么&#xff1f; 3. webpack基本使用步骤 3.1 webpack基本使用步骤 3.2 package.jso…

阿里低代码引擎学习记录

官网 一、关于设计器 1、从设计器入手进行低代码开发 设计器就是我们用拖拉拽的方法&#xff0c;配合少量代码进行页面或者应用开发的在线工具。 阿里官方提供了以下八个不同类型的设计器Demo&#xff1a; 综合场景Demo&#xff08;各项能力相对完整&#xff0c;使用Fusion…

转速和频率转换功能块(CODESYS ST源代码)

1、转速/频率常用转换关系 转速/频率/线速度/角速度计算FC_200 plc计算角速度-CSDN博客文章浏览阅读3.2k次。里工业控制张力控制无处不在,也衍生出很多张力控制专用控制器,磁粉制动器等,本篇博客主要讨论PLC的张力控制相关应用和算法,关于绕线机的绕线算法,大家可以参看专…

手写一个uart协议——rs232

先了解一下关于uart和rs232的基础知识 文章目录 一、RS232的回环测试1.1模块整体架构1.2 rx模块设计1.2.1 波形设计1.2.2代码实现与tb1.2.4 仿真 1.3 tx模块设计1.3.1 波形设计1.3.2 代码实现与tb1.3.4 顶层设计1.3.3 仿真 本篇内容&#xff1a; 一、RS232的回环测试 上位机…

Leaflet在WGS84 Web墨卡托投影与WGS84经纬度投影下空间信息变形问题及修正-以圆为例

目录 前言 一、投影的相关知识 1、经纬度投影 2、Web墨卡托投影 二、经纬度投影下的空间信息展示 1、空间信息展示 2、效果展示 3、经纬度投影下的圆修正 三、Web墨卡托投影下空间信息展示 1、底图引用 2、自定义生成圆 总结 前言 在GIS的知识海洋中&#xff0c;对…

记一次从登录框到前台rce

接口未授权挖掘 在网站未登录的情况下&#xff0c;由于不知道后台接口。唯一办法通过js文件、路径扫描。通过这种收集方式使用burp进行批量扫描&#xff0c;分别探测GET/POST请求。观察响应包跟状态码。判断响应包&#xff0c;确定存在未授权后&#xff0c;再构造数据包。 2 突…

【JVM】Java工具(Arthas,APM,Java Agent,JMX)

Java工具 常见的Java工具有以下几类&#xff1a; 1、诊断类工具&#xff0c;如Arthas、VisualVM等。 2、开发类工具&#xff0c;如Idea、Eclipse。 3、APM应用性能监测工具&#xff0c;如Skywalking、Zipkin等。 4、热部署工具&#xff0c;如Jrebel等。 Arthas中 Java Ag…

【kettle006】kettle访问华为openGauss高斯数据库并处理数据至execl文件(已更新)

1.一直以来想写下基于kettle的系列文章&#xff0c;作为较火的数据ETL工具&#xff0c;也是日常项目开发中常用的一款工具&#xff0c;最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下华为openGauss高斯数据库相关知识体系 3.欢迎批评指正&#xff0c;跪谢…