版权声明:本文由 Micheal 超 博客 创作,转载请附带链接,有问题欢迎交流。 https://blog.csdn.net/qq_42887760/article/details/84729879
题目(总):
解答(答案为博主自已所写,并非最优代码,仅供参考)
第一题
- 题目
切比雪夫多项式 (运用递归函数计算)
- 参考代码(答案并非最优代码,仅供参考)
#include<stdio.h>
#include<stdlib.h>
double T(int n,float x);
int main(){
FILE *fp;
if((fp=fopen("tdat.txt","w"))==NULL){
printf("文件不存在或无法打开");
exit(0);
}
int n;
float x;
double result;
printf("请输入两个参数(n,x): ");
scanf("%d %f",&n,&x);
for(int i=0;i<=n;i++){
printf("%8.2lf ",T(i,x));
fprintf(fp,"%8.2lf ",T(i,x));
if((i+1)%5==0)
putchar(10);
}
putchar(10);
fclose(fp);
return 0;
}
double T(int n,float x){
if(n==0)
return 1;
else if(n==1)
return x;
else if(n>=2)
return 2*x*T(n-1,x)-T(n-2,x);
else
return 0;
}
- 代码说明
推荐参考:
https://wenku.baidu.com/view/b790b7db29ea81c758f5f61fb7360b4c2e3f2a73.html (切比雪夫多项式–公式讲解)
- 运行结果
第二题
- 题目
试编写一个根据用户输入的两个操作数和一个运算符,由计算机输出运算结果的程序。
- 参考代码(答案并非最优代码,仅供参考)
#include<stdio.h>
int main(){
float a,b,result;
char ch;
printf("请输入两个操作数(a b): ");
scanf("%f %f",&a,&b);
printf("请输入一个双目算术运算符( +、-、*、/、% ): ");
scanf(" %c",&ch);//注意: " %c"中%之前有一个空格,否则ch会自动复制为'\n',即10
switch(ch){
case '+':
result=a+b;
printf("%5.2f%c%5.2f=%8.2f\n",a,ch,b,result);
break;
case '-':
result=a-b;
printf("%5.2f%c%5.2f=%8.2f\n",a,ch,b,result);
break;
case '*':
result=a*b;
printf("%5.2f%c%5.2f=%8.2f\n",a,ch,b,result);
break;
case '/':
if(b!=0){
result=a/b;
printf("%5.2f%c%5.2f=%8.2f\n",a,ch,b,result);
}else{
printf("除法运算时,分母不能为0 !!!\n");
}
break;
case '%'://注意取模运算只针对整型数据
result=(int)a%(int)b;
printf("%d%c%d=%d\n",(int)a,ch,(int)b,(int)result);
break;
default:
printf("输入的双目运算符无效!\n");
break;
}
return 0;
}
- 代码说明
注意一下:
1.除法运算时考虑分母不能为0的情况。
2.取模运算只针对整型数据运算
推荐参考:
- 运行结果
第三题
- 题目
查询 矩阵 内 行和列都是最小的 元素
- 参考代码(答案并非最优代码,仅供参考)
#include<stdio.h>
#define N 100//假设n的最大值为100;
int main(){
int n,a[N][N];
int i,j,min_row;
bool flag=false;//是否存在满足要求的元素
//测试数据;
//int n=5,a[5][5]={{11,4,2,7,8,},{5,9,23,1,25},{3,22,21,18,15},{17,16,24,12,6},{13,10,19,20,14}};
printf("请输入方阵的阶数: ");
scanf("%d",&n);
for(i=0;i<n;i++){
for(j=0;j<n;j++){
scanf("%d",&a[i][j]);
}
}
for(i=0;i<n;i++){
min_row=0;
for(j=1;j<n;j++){//行内拿到最小值元素
if(a[i][min_row]>a[i][j])
min_row=j;
}//此时判断出i行的最小元素为a[i][min_row]
for(j=0;j<n;j++){
if(a[j][min_row]<a[i][min_row])
break;
}
if(j==n){//遍历完列元素
printf("%d(%d,%d), ",a[i][min_row],i+1,min_row+1);
flag=true;
}
}
if(flag){
putchar(10);//等价于 printf("\n");
}else{
printf("NO FIND!\n");
}
return 0;
}
- 代码说明
推荐参考:
这道题目感觉和2008年考的最后一道题目差不多类型。可以对比一下。
- 运行结果