c语言期末大作业------小小计算器

多余的话我不说了

需要的自己拿

#include<stdio.h> 
#define PI 3.14
#include<stdlib.h>
#include<string.h>
void jiafa() /*加法*/ 
{
	int i,j;
	printf("输入两个数进行加法\n"); 
	scanf("%d%d",&i,&j);
	int k=i+j;
	printf("结果十进制:%d\n",k);
	printf("结果八进制:%o\n",k);
	printf("结果十六进制:%x\n",k);
	printf("\n"); 
}
void jianfa() /*减法*/
{
	int i,j;
	printf("输入两个数进行减法\n"); 
	scanf("%d%d",&i,&j);
	int k=i-j;
	printf("结果十进制:%d\n",k);
	printf("结果八进制:%o\n",k);
	printf("结果十六进制:%x\n",k);
	printf("\n"); 
	
}
void chengfa() /*乘法*/ 
{
	int i,j;
	printf("输入两个数进行乘法\n"); 
	scanf("%d%d",&i,&j);
	int k=i*j;
	printf("结果十进制:%d\n",k);
	printf("结果八进制:%o\n",k);
	printf("结果十六进制:%x\n",k);
	printf("\n"); 	
}
void chufa() /*除法*/ 
{
	int i,j;
	printf("请输入两个数,前者除以后者:");
	scanf("%d%d",&i,&j);
	if(j==0)
	{
		printf("除数不能为0\n");
	}
	else
	{
		int k=i/j;
		printf("结果十进制:%d\n",k);
		printf("结果八进制:%o\n",k);
		printf("结果十六进制:%x\n",k);
	}
	printf("\n");
}
void qumo() /*取模*/ 
{
	int i,j;
	printf("请输入两个数,前者取模后者:");
	scanf("%d%d",&i,&j);
	if(j==0)
	{
		printf("取模数不能为0\n");
	}
	else
	{
		int k=i%j;
		printf("结果十进制:%d\n",k);
		printf("结果八进制:%o\n",k);
		printf("结果十六进制:%x\n",k);
	}
	printf("\n");
}
void yuanmianji() /*求圆面积*/ 
{
	printf("输入半径:");
	float r;
	scanf("%f",&r);
	float s=PI*r*r;
	printf("圆的面积是:%f\n",s);
	printf("保留两位小数是:%.2f\n",s);
	printf("\n");
}
void qiuweishu() /*求位数*/ 
{
	int i;
	printf("输入一个数(1000以内):");
	scanf("%d",&i);
	int a,b,c;
	if(i>99&&i<1000)
	{
		
		a=i/100;
		b=(i%100)/10;
		c=(i%100)%10;
		printf("百位数字是:%d,十位数字是:%d,个位数字是:%d\n",a,b,c);
	}
	else if(i>9&&i<100)
	{
		a=i/10;
		b=i%10;
		printf("十位数字是:%d,个位数字是:%d\n",a,b);
	}
	else if(i<10&&i>-1)
	{
		printf("个位数字是:%d\n",i);
		
	}
	else {
		printf("输入合法数字\n");
	}
	printf("\n");	
}
void runnian() /*判断闰年*/ 
{
	int i;
	printf("请输入正确的年份:");
	scanf("%d",&i);
	if(i%4==0)
	{
		printf("是闰年\n");
	}
	else{
		printf("不是闰年\n");
	}
	printf("\n");
 } 
void chengji() /*成绩转换*/ 
{
	int i,j;
	printf("输入有效成绩(0到100之间):");
	scanf("%d",&i);
	j=i/10;
	switch(j)
	{
		case 10:{
			printf("优秀\n");
			break;
		}
		case 9:{
			printf("优秀\n");
			break;
		}
		case 8:{
			printf("良\n");
			break;
		}
		case 7:{
			printf("中\n");
			break;
		}
		case 6:{
			printf("及格\n");
			break;
		}
		default:printf("不及格\n");break;
		
	}
	printf("\n");
}
void jishuhe() /*奇数和*/ 
{
	int i,j,k=0;
	printf("请输入一个数:");
	scanf("%d",&i);
	for(j=1;j<i;j++)
	{
		if((j%2)!=0)
		{
			k=k+j;	
		}
	}
	printf("奇数和为:%d",k);
	printf("\n");		
}
void oushuhe() /*偶数和*/ 
{
	int i,j,k=0;
	printf("请输入一个数:");
	scanf("%d",&i);
	for(j=1;j<i;j++)
	{
		if((j%2)==0)
		{
			k=k+j;	
		}
	}
	printf("偶数和为:%d",k);
	printf("\n");
}
void sandebeishu() /*3的倍数*/ 
{
	int i,j,k;
	printf("请输入一个数:");
	scanf("%d",&i);
	printf("倍数有:\n");
	for(j=1;j<i;j++)
	{
		if(j%3==0)
		{
			printf("%d  ",j);
			printf("\n");
		}
	}
	printf("\n");
}
void sanhewu() /*3和5的倍数*/ 
{
	int i,j,k;
	printf("输入一个数:");
	scanf("%d",&i);
	for(j=1;j<i;j++)
	{
		if(j%3==0)
		{
			if(j%5==0)
			{
				printf("%d",j);
				printf("\n");
			}
		}
	 } 
	 printf("\n");
}
void shuixianhua() /*水仙花数*/ 
{
	int i,j,k;
	int a,b;
	printf("水仙花数如下:\n");
	for(i=1;i<10;i++)
	{
		for(j=0;j<10;j++)
		{
			for(k=0;k<10;k++)
			{
				a=i*100+j*10+k;
				b=i*i*i+j*j*j+k*k*k;
				if(a==b)
				{
					printf("%d ",a);
					}	
			}
		}
	}
	printf("\n");		
}
int max(int a,int b) /*最大值*/ 
{
	if(a>b)
	{
		return a;
	}
	else{
		return b;
	}
	
	
}
void zuidazuixiao() /*最大最小*/ 
{
	int i,j;
	printf("请输入两个值:");
	scanf("%d%d",&i,&j);
	if(i>j)
	{
		printf("最大值:%d,最小值:%d",i,j);
	}
	else
	{
		printf("最大值:%d,最小值:%d",j,i);
	}
	printf("\n");
}
void maopaopaixu(int*p,int len) /*冒泡排序*/ 
{
	int i,j,temp;
	for(i=0;i<len;i++)
	{
		for(j=0;j<len;j++)
		{
			if(p[i]>p[i+1])
			{
				temp=p[i];
				p[i]=p[i+1];
				p[i+1]=temp;
			}		
		}
	}
	printf("排序后:");
	for(i=0;i<len+1;i++)
	{
		printf("%d ",p[i]);
	}
	printf("\n");
}
void juzhenzhuanzhi() /*矩阵转置*/ 
{
	int arr[3][3];
	int i,j,k;
	printf("输入三维数组:\n");
	 
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
		{
			scanf("%d",&arr[i][j]);
			
		}
	}
	printf("数组为:\n");
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
		{
			printf("%d  ",arr[i][j]);
		}
		printf("\n");
	}
	printf("转置后:\n");
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
		{
			printf("%d  ",arr[j][i]);
		}
		printf("\n");
	}
 } 
void duijiaoxian() /*求对角线和*/ 
{
	int arr[3][3];
	int i,j,k;
	printf("输入三维数组:\n");
	 
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
		{
			scanf("%d",&arr[i][j]);
			
		}
	}
	printf("数组为:\n");
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
		{
			printf("%d  ",arr[i][j]);
		}
		printf("\n");
	}
	
	int num=arr[1][1]+arr[2][2]+arr[0][0];
	printf("和为:%d",num);
 } 
void tongji() /*统计单词个数*/ 
{
	getchar();
	char arr[100];
	int i,j,k;
	printf("输入句子:");
	gets(arr);
	j=0;k=0;
	for(i=0;i<100;i++)
	{
		if(arr[i]==' ')
		{
			j=0;
		}
		else if(j==0)
		{
			j=1;
			k++;
		}
	}
	printf("有%d个单词。",k);
	printf("\n");
 } 
void chengjipaixu() /*结构体成绩排序*/ 
{
	struct paixu{
		int sno;
		char name[20];
		int grade;
	};
	struct paixu stu[10];
	int i,j,k;
	for(i=0;i<10;i++)
	{
		printf("学生%d",i+1);
		printf("学号:");
		scanf("%d",&stu[i].sno);
		printf("姓名:");
		getchar();
		gets(stu[i].name);
		printf("成绩:");
		scanf("%d",&stu[i].grade);
	}
	for(i=0;i<10;i++)
	{
		for(j=0;j<10;j++)
		{
			if(stu[j].sno>stu[j+1].sno)
			{
				k=stu[j].sno;
				stu[j].sno=stu[j+1].sno;
				stu[j+1].sno=k;
			}
		}
	}
	printf("排序后:\n");
	for(i=0;i<10;i++)
	{
		printf("学号:%d",stu[i].sno);
		printf("姓名:");
		puts(stu[i].name);
		printf("成绩:%d",stu[i].grade);
		printf("\n");
	}
	int zong=0;
	for(i=0;i<10;i++)
	{
		zong=zong+stu[i].grade;
	}
	printf("总成绩:%d\n",zong);
	printf("平均成绩:%d\n",zong/10); 
}
/*--------------------------------------------------------*/
typedef struct jingtai{
	int a;
	struct jingtai *next;
}jing; 
void jinglian() /*静态链表*/ 
{
	jing p1,p2,p3,p4;
	p1.a=11;
	p2.a=22;
	p3.a=33;
	p4.a=44;
	
	p1.next=&p2;
	p2.next=&p3;
	p3.next=&p4;
	p4.next=NULL;
	jing *head,*p;
	head=&p1;
	
	do{
		printf("%d\n",head->a);
		head=head->next;
	}while(head!=NULL);
	
	printf("\n");
	
}
/*--------------------------------------------------------*/
typedef struct node1{
	int num;
	struct node1 *next;
}node;

void donglianbiao() /*动态链表*/
{
	printf("向链表中输入数字,负数停止\n");
	printf("链表显示数据最后一个为负数(代表结束)\n");
	node *head,*link,*end;
	head=(node*)malloc(sizeof(node));
	link=head;
	while(1)
	{
		end=(node*)malloc(sizeof(node));
		link->next=end;
		link=end;
		int j;
		scanf("%d",&j);
		if(j>=0){
			end->num=j;
		}	
		else{
			end->num=-1;
			break;
		}
		
	}
	end->next=NULL;
	node *h=head->next;
	while(h!=NULL)
	{
		printf("%d\n",h->num);
		h=h->next;
	}
	printf("\n");

}
/*--------------------------------------------------------*/
typedef struct stu1{
	char name[20];
	int grade;
}stu;
void wenjian() /*文件输入*/
{
	FILE *fp;
	fp=fopen("d:\\123.txt","w+");
	if(fp==NULL)
	{
		printf("文件打开失败\n");
		exit(0);
	}
	
	stu b1[10],b2[10];
	int i;
	printf("输入十个学生的信息:\n");
	for(i=0;i<10;i++)
	{
		printf("姓名:\n");
		getchar();
		gets(b1[i].name);
		printf("成绩:\n");
		scanf("%d",&b1[i].grade);  
	}
	for(i=0;i<10;i++)
	{
		fprintf(fp,"%s %d\n",b1[i].name,b1[i].grade);
	}
	
	rewind(fp);
	
	for(i=0;i<10;i++)
	{
		fscanf(fp,"%s %d\n",b2[i].name,&b2[i].grade);
	}
	
	for(i=0;i<10;i++)
	{
		b2[i].grade=b2[i].grade+10;
	}
	
	for(i=0;i<10;i++)
	{
		fprintf(fp,"变化后:\n");
		fprintf(fp,"%s %d\n",b2[i].name,b2[i].grade);	
	}
	
	fclose(fp);
}




int main()
{
/*功能罗列*/	
	printf("--小小计算器--\n");
	printf("1.加法\n");
	printf("2.减法\n"); 
	printf("3.乘法\n");
	printf("4.除法\n");
	printf("5.取模运算\n");
	printf("6.计算圆面积\n");
	printf("7.求出1000内的数字位数\n");
	printf("8.判断闰年\n");
	printf("9.成绩转换\n");
	printf("10.计算从1到输入数之间的奇数和(for)\n");
	printf("11.计算从1到输入数之间的偶数和(while)\n");
	printf("12.输出从1到输入数之间的3的倍数(do-while)\n");
	printf("13.同上输出既是3的倍数又是5的倍数的数\n");
	printf("14.求水仙花数\n");
	printf("15.求最大值\n");
	printf("16.求最大值最小值\n");
	printf("17.冒泡排序\n");
	printf("18.矩阵转置\n");
	printf("19.求对角线和\n");
	printf("20.统计单词个数\n");
	printf("21.学生成绩排序\n");
	printf("22.静态创建链表\n");
	printf("23.动态创建链表\n");
	printf("24.学生成绩普涨10分\n");
	printf("25.退出\n");
 	printf("\n");
 	printf("\n");
 
	int whilezhi=1; 
	while(whilezhi)
	{
		printf("请输入数字选择功能:"); 
		int choice;
		scanf("%d",&choice);
		switch(choice)
		{
			case 1:jiafa();break;
			case 2:jianfa();break;
			case 3:chengfa();break;
			case 4:chufa();break;
			case 5:qumo();break;
			case 6:yuanmianji();break;
			case 7:qiuweishu();break;
			case 8:runnian();break;
			case 9:chengji();break;
			case 10:jishuhe();break;
			case 11:oushuhe();break;
			case 12:sandebeishu();break;
			case 13:sanhewu();break;
			case 14:shuixianhua();break;
			case 15:{
				int panduanzhi1,panduanzhi2;
				printf("输入两个数:");
				scanf("%d%d",&panduanzhi1,&panduanzhi2);
				printf("最大值为:"); 
				printf("%d",max(panduanzhi1,panduanzhi2));
				printf("\n");
				break;
			}
			case 16:zuidazuixiao();break;
			case 17:{
				int geshu;
				printf("输入数组个数:");
				scanf("%d",&geshu);
				int *arr1=(int*)malloc(geshu*sizeof(int));
				int ii1;
				printf("输入数组元素:");
				for(ii1=0;ii1<geshu;ii1++)
				{
					scanf("%d",&arr1[ii1]);
				}
				printf("数组为:");
				for(ii1=0;ii1<geshu;ii1++)
				{
					printf("%d  ",arr1[ii1]);
				} 
				maopaopaixu(arr1,geshu-1);
				free(arr1);
				break;
			}
			case 18:juzhenzhuanzhi();break;
			case 19:duijiaoxian();break;
			case 20:tongji();break;
			case 21:chengjipaixu();break;
			case 22:jinglian();break;
			case 23:donglianbiao();break;
			case 24:wenjian();break; 
			case 25:whilezhi=0;
		}
			
	}
	
	
	
	
	return 0;
 } 

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值