C程序设计--案例(2016年江苏大学程序设计考研试题 -- 编程题)
2019-01-26 14:32
405 查看
版权声明:本文由 Micheal 超 博客 创作,转载请附带链接,有问题欢迎交流。 https://blog.csdn.net/qq_42887760/article/details/84559081
题目(总):
解答(答案为博主自已所写,并非最优代码,仅供参考)
第一题
- 题目
已知文件Coefficient.txt存有多个方程中系数(具体见题目总)。。。。(文件读写 + 一元二次方程的处理)
- 参考代码(答案并非最优代码,仅供参考)
#include<stdio.h> #include<stdlib.h> #include<math.h> #define MAX 1000//假设txt中最多存放了1000组数据 void func(FILE *,float,float,float);//将a,b,c参数传给函数,函数将处理结果存放到指定文件中去 int main(){ float a,b,c; FILE *in,*out; if((in=fopen("Coefficient.txt","r"))==NULL){ printf("文件不存在或无法打开!!!"); exit(0); } if((out=fopen("result.txt","w"))==NULL){ printf("文件不存在或无法打开!!!"); exit(0); } while(!feof(in)){ fscanf(in,"%f %f %f",&a,&b,&c); printf("读到的数据:a=%5.2f ;b=%5.2f ;c=%5.2f;\n",a,b,c);//校验是否读出数据,可以不写 func(out,a,b,c); } fclose(in);//不要忘记关闭文件 fclose(out); return 0; } //函数体部分是处理一元二次方程的内容 //具体可以参考: https://blog.csdn.net/qq_42887760/article/details/83999502 void func(FILE *fp,float a,float b,float c){ float x1,x2,x,real,image; if(a==0){ if(b==0){ if(c==0){//a=0,b=0,c=0; fprintf(fp,"方程的解为任意常数;\n"); } else{//a=0,b=0,c!=0; fprintf(fp,"方程无解;\n"); } } else{//a=0,b!=0; x=-(c/b); fprintf(fp,"原方程的的解为:x=%8.4f\n",x); } } else{//a!=0 float disc=b*b-4*a*c; if(fabs(disc)<1e-6){//a!=0;b^2-4ac=0; x=-(b/(2*a)); fprintf(fp,"原方程的的解为:x=%8.4f\n",x); }else if(disc>1e-6){//a!=0;b^2-4ac>0; x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); fprintf(fp,"原方程的的解为:x1=%8.4f ; x2=%8.4f \n",x1,x2); }else{//a!=0;b^2-4ac>0; real=-b/(2*a); //实部 image=sqrt(-disc)/(2*a); //虚部 fprintf(fp,"原方程的的解为:x1=%8.4f+%8.4fi ; x2=%8.4f+%8.4fi \n",real,image,real,image); } } }
- 代码说明
知识点(1):文件的读入读出
- feof(in) :是检查in所指向的文件是否结束。如果是,则函数值为1(真),否则为0(假)。
- fprint(文件指针,格式字符串,输出列表) :向文件中写入数据
- fscanf(文件指针,格式字符串,输入列表) :读出文件数据
知识点(2):一元二次方程的解的情况
这边的相关知识可以参考我以前的一篇博客,那里面有更为清晰的讲解:(也可以参考别人的博客),此处不做过多的解释。
- 运行结果
第二题
- 题目
见上,题目总
- 参考代码(答案并非最优代码,仅供参考)
#include<stdio.h> #include<string.h> #define S 5//学生个数 #define C 3//课程数 #define F 3//关注人数 struct Student{ long int id;//学号:long表示范围:-2147483648~2147483647 char name[20];//姓名 float score[C];//成绩 float sum;//总分 }; int main(){ struct Student stu[S]; printf("请输入%d个学生的信息(学号,姓名,%d门成绩)\n",S,C); int i,j,max; for(i=0;i<S;i++){//输入操作 stu[i].sum=0; scanf("%ld %s",&stu[i].id,stu[i].name); for(j=0;j<C;j++){ scanf("%f",&stu[i].score[j]); stu[i].sum+=stu[i].score[j]; } } for(i=0;i<S-1;i++){//选择排序法 max=i; for(j=i+1;j<S;j++){ if(stu[j].sum>stu[max].sum) max=j; } if(max!=i){//交换结构体中各元素的值 long int i_temp; float f_temp; char ch_temp[20]; i_temp=stu[i].id; stu[i].id=stu[max].id; stu[max].id=i_temp; strcpy(ch_temp,stu[i].name); strcpy(stu[i].name,stu[max].name); strcpy(stu[max].name,ch_temp); for(j=0;j<C;j++){ f_temp=stu[i].score[j]; stu[i].score[j]=stu[max].score[j]; stu[max].score[j]=f_temp; } f_temp=stu[i].sum; stu[i].sum=stu[max].sum; stu[max].sum=f_temp; } } //输出总分在前10名的学生姓名和学号 printf("总分在前%d名的学生姓名和学号\n",F); for(i=0 ; stu[i].sum>=stu[F-1].sum ; i++){ printf("姓名=%6s;学号=%6ld;成绩:",stu[i].name,stu[i].id); for(j=0;j<C;j++){ printf("%d=%5.2f,",j+1,stu[i].score[j]); } printf("总分=%6.2f",stu[i].sum); putchar(10); } //输出总分在前10名的学生(且判断成绩是否小于80分)姓名和学号 printf("总分在前%d名的学生(且判断成绩是否小于80分)姓名和学号\n",F); for(i=0 ; stu[i].sum>=stu[F-1].sum ; i++){ printf("姓名=%6s ;学号=%6d ;80分以下成绩有:",stu[i].name,stu[i].id); for(j=0;j<C;j++){ if(stu[i].score[j]<80) printf("成绩%d=%5.2f;",j+1,stu[i].score[j]); } putchar(10); } return 0; }
- 代码说明
为了测试的方便,代码中的参数做了调整,读者在运行的时候可以自行调整。 - 运行结果
第三题
- 题目
组合数:Ck n =Ck-1 n-1+Ck n-1
- 参考代码(答案并非最优代码,仅供参考)
#include<stdio.h> int C(int n,int k); int main(){ int n,k,result; printf("请输入两个参数n,k: "); scanf("%d %d",&n,&k); result=C(k,n); printf("C(k,n)=%d\n",result); return 0; } int C(int k,int n){ if(n==k||k==0) return 1; else if(k>0&&k<n) return C(k-1,n-1)+C(k,n-1); else return 0; }
- 代码说明
关于 组合数 的求解有很多种方法,此处题目有限定,但读者不应局限于此,下面推荐几篇博客,以拓宽读者的思维。
推荐参考:
- 运行结果
相关文章推荐
- C程序设计--案例(2015年江苏大学程序设计考研试题 -- 编程题)
- C程序设计--案例(2014年江苏大学程序设计考研试题 -- 编程题)
- C程序设计--案例(2009年江苏大学程序设计考研试题 -- 编程题)
- C程序设计--案例(2008年江苏大学程序设计考研试题 -- 编程题)
- 2016年第七届蓝桥杯C/C++程序设计_编程题9题_交换瓶子
- 中山大学2016年数学分析高等代数考研试题参考解答及其讲解
- 厦门大学2016年高等代数考研试题参考解答
- 华南理工大学2016年数学分析高等代数考研试题参考解答
- 北京大学2016年数学分析考研试题
- 北京大学2016年高等代数与解析几何考研试题
- 中国科学院大学2016年数学分析考研试题
- 中国科学院大学2016年高等代数考研试题
- STL编程题1(C++程序设计第1周)
- 2016年乐山师范学院程序设计大赛解题报告
- C/C++ 程序设计员应聘常见面试试题深入剖析
- 梁勇2011JAVA语言程序设计基础篇第16章编程题16.8
- C/C++ 程序设计员应聘常见面试试题深入剖析
- 上海交通大学2005年数学分析考研试题
- * 深度优先搜索(1) 编程题#1: 棋盘问题(Coursera 程序设计与算法 专项课程4 算法基础;递归+剪枝!)
- 梁勇2011JAVA语言程序设计基础篇第16章编程题16.16闪烁的标签