C程序设计--案例(2017年江苏大学程序设计考研试题 -- 编程题)

版权声明:本文由 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.取模运算只针对整型数据运算

推荐参考:

https://bbs.csdn.net/topics/380235659

  • 运行结果
    在这里插入图片描述

第三题

  • 题目

查询 矩阵 内 行和列都是最小的 元素

  • 参考代码(答案并非最优代码,仅供参考)
#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年考的最后一道题目差不多类型。可以对比一下。

https://blog.csdn.net/qq_42887760/article/details/84405437

  • 运行结果
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42887760/article/details/84729879