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

devtools/2024/9/23 16:05:30/

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

编译器:gcc 10.3.0

----

注:

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

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

目录

一、实验目的

二、实验内容

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.ppmy.cn/devtools/25012.html

相关文章

Windows下搭建Flutter开发环境

IDE:VS code Flutter官网:Flutter: 为所有屏幕创造精彩 - Flutter 中文开发者网站 - Flutter 下载&安装 下载Flutter SDK,如图,建议自行下载安装: SDK还是挺大的,近1G,使用迅雷下载会快不少。 下载完成,解压缩到指定目录即可! 设置Local SDK,按下面步骤操作即…

基于LM Studio + LLaMA3 建立本地化的ChatGPT

4月19日&#xff0c;Facebook母公司Meta重磅推出了Llama3。即便大家现在对于大厂和巨头频繁迭代AI模型的行为已经见怪不怪&#xff0c;Meta的Llama3仍旧显得与众不同&#xff0c;因为这是迄今最强大的开源AI模型。LLaMA模型通常采用了类似于GPT&#xff08;由OpenAI开发&#x…

tableau基础学习——添加标靶图、甘特图、瀑布图

标靶图 添加参考线 添加参考分布 甘特图 创建新的字段 如设置延迟天数****计划交货日期-实际交货日期 为正代表提前交货&#xff0c;负则代表延迟交货 步骤&#xff1a;创建——计算新字段 把延迟天数放在颜色、大小里面就可以 瀑布图 两个表按照地区连接 先做个条形图&…

XYCTF 2024

Web 参考博客&#xff1a;https://www.yuque.com/yunzhiyunweiji/wrgkex/rfpnkn0293l7cp09#ezMake ezhttp Via - HTTP | MDN 代理那里难住了 XFF不给用可以用client-ip ezmd5 让我们上传图片并比较&#xff0c;结合题目名可以猜测应该是比较两个图片的md5值是否相同&…

MySQL怎么看死锁记录

这个结果分成三部分&#xff1a; (1) TRANSACTION&#xff0c;是第一个事务的信息&#xff1b; (2) TRANSACTION&#xff0c;是第二个事务的信息&#xff1b; (3)WE ROLL BACK TRANSACTION (1)&#xff0c;是最终的处理结果&#xff0c;表示回滚了第一个事务。 第一个事务的信…

python 注释符

4、注释 1、单行注释 单行注释用于解释代码中的一行或一小段代码。 在Python中&#xff0c;单行注释以#开头&#xff0c;后面的内容都是注释。 单行注释可以放在代码的任何位置&#xff0c;但通常放在代码行的上方或旁边。 单行注释不会影响代码的执行&#xff0c;Python解…

精酿啤酒:酿造工艺的自动化与智能化发展

随着科技的不断进步&#xff0c;自动化与智能化已成为啤酒酿造工艺的重要发展方向。Fendi Club啤酒紧跟时代潮流&#xff0c;积极推动酿造工艺的自动化与智能化发展&#xff0c;旨在提高生产效率、确保产品品质和满足市场需求。 Fendi Club啤酒引入自动化生产设备。他们采用自动…

Go语言中,两个比较流行的缓存库

在 Go 中实现带有过期时间的缓存通常需要一个可以自动处理键值过期的缓存系统。虽然标准库中没有直接提供这种功能&#xff0c;但有几个流行的第三方库可以很好地满足这一需求。下面我会介绍两个比较流行的 Go 缓存库&#xff1a;go-cache 和 bigcache。 1. go-cache go-cache…