1. 程式人生 > >C程式設計--案例(2017年江蘇大學程式設計考研試題 -- 程式設計題)

C程式設計--案例(2017年江蘇大學程式設計考研試題 -- 程式設計題)

題目(總):

在這裡插入圖片描述

解答(答案為博主自已所寫,並非最優程式碼,僅供參考)

第一題

  • 題目

切比雪夫多項式 (運用遞迴函式計算)

  • 參考程式碼(答案並非最優程式碼,僅供參考)
#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

  • 執行結果
    在這裡插入圖片描述