Ⅰ 華中師范大學用的什麼C語言教材
教育技術學與教學設計考試科目:
《信息化教育概論》王繼新,華中師范大學出版社2006年3月
《教學系統設計理論與實踐蠢余頃》楊九民,北京大學出版社2008年1月
《教育技術學》何克抗,北京師范大學出版社2002年
計算機應帶陸用基礎考試科目:
《計算機軟體技術基礎》徐士良編著,清華大學出版社2002年版
《C語言程序設計》(第三版)譚浩強,清華大學出版社
其中《信息化教育概論》毀配和《教學系統設計理論與實踐》比較重要《教育技術學》學過的話可以少看看就行了,多看看真題
Ⅱ c語言程序設計視頻教程哪裡有下載地址
C語言程序設計
若資源有問題歡迎追問~
Ⅲ c語言入門自學書籍都有哪些
鏈接:
提取碼:y42j
《C語言基礎》深入淺出地介紹了C語言程序設計的基礎知識,內容涉及C語言基礎、演算法基礎、變數、數據類型、運算符、輸入/輸出相關函數、選擇結構、循環結構、各種表達式、數組、字元串、指針、函數、結構體、ISO C99的擴展語法等。全書內容豐富,結構嚴謹,層次清晰,語言生動,論述精準而深刻,實例豐富而實用。
Ⅳ c語言中如何求矩陣逆陣
main()
{
int i,a[5]={1,2,3,4,5};
printf("juzhen ni zhen is:\n");
for (i=4;i>=0;i--)
printf("%d ",a[i]);
}
輸出結果:5 4 3 2 1
滿足題目要求吧,我相信你是初學者才會問這樣的問題,所以我才沒有搞那麼復雜,如果是復雜化的話你就不會問了,對吧!
Ⅳ c語言矩陣求逆
下面是實現Gauss-Jordan法實矩陣求逆。
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
int brinv(double a[], int n)
{ int *is,*js,i,j,k,l,u,v;
double d,p;
is=malloc(n*sizeof(int));
js=malloc(n*sizeof(int));
for (k=0; k<=n-1; k++)
{ d=0.0;
for (i=k; i<=n-1; i++)
for (j=k; j<=n-1; j++)
{ l=i*n+j; p=fabs(a[l]);
if (p>d) { d=p; is[k]=i; js[k]=j;}
}
if (d+1.0==1.0)
{ free(is); free(js); printf("err**not inv\n");
return(0);
}
if (is[k]!=k)
for (j=0; j<=n-1; j++)
{ u=k*n+j; v=is[k]*n+j;
p=a[u]; a[u]=a[v]; a[v]=p;
}
if (js[k]!=k)
for (i=0; i<=n-1; i++)
{ u=i*n+k; v=i*n+js[k];
p=a[u]; a[u]=a[v]; a[v]=p;
}
l=k*n+k;
a[l]=1.0/a[l];
for (j=0; j<=n-1; j++)
if (j!=k)
{ u=k*n+j; a[u]=a[u]*a[l];}
for (i=0; i<=n-1; i++)
if (i!=k)
for (j=0; j<=n-1; j++)
if (j!=k)
{ u=i*n+j;
a[u]=a[u]-a[i*n+k]*a[k*n+j];
}
for (i=0; i<=n-1; i++)
if (i!=k)
{ u=i*n+k; a[u]=-a[u]*a[l];}
}
for (k=n-1; k>=0; k--)
{ if (js[k]!=k)
for (j=0; j<=n-1; j++)
{ u=k*n+j; v=js[k]*n+j;
p=a[u]; a[u]=a[v]; a[v]=p;
}
if (is[k]!=k)
for (i=0; i<=n-1; i++)
{ u=i*n+k; v=i*n+is[k];
p=a[u]; a[u]=a[v]; a[v]=p;
}
}
free(is); free(js);
return(1);
}
void brmul(double a[], double b[],int m,int n,int k,double c[])
{ int i,j,l,u;
for (i=0; i<=m-1; i++)
for (j=0; j<=k-1; j++)
{ u=i*k+j; c[u]=0.0;
for (l=0; l<=n-1; l++)
c[u]=c[u]+a[i*n+l]*b[l*k+j];
}
return;
}
int main()
{ int i,j;
static double a[4][4]={ {0.2368,0.2471,0.2568,1.2671},
{1.1161,0.1254,0.1397,0.1490},
{0.1582,1.1675,0.1768,0.1871},
{0.1968,0.2071,1.2168,0.2271}};
static double b[4][4],c[4][4];
for (i=0; i<=3; i++)
for (j=0; j<=3; j++)
b[i][j]=a[i][j];
i=brinv(a,4);
if (i!=0)
{ printf("MAT A IS:\n");
for (i=0; i<=3; i++)
{ for (j=0; j<=3; j++)
printf("%13.7e ",b[i][j]);
printf("\n");
}
printf("\n");
printf("MAT A- IS:\n");
for (i=0; i<=3; i++)
{ for (j=0; j<=3; j++)
printf("%13.7e ",a[i][j]);
printf("\n");
}
printf("\n");
printf("MAT AA- IS:\n");
brmul(b,a,4,4,4,c);
for (i=0; i<=3; i++)
{ for (j=0; j<=3; j++)
printf("%13.7e ",c[i][j]);
printf("\n");
}
}
}
Ⅵ C語言 求矩陣的逆
//源程序如下#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<iostream.h>
#include<stdlib.h>
#include<math.h>
#define max 100void inputstyle(int *); //輸入函數
void input(int **,int); //輸入函數
long danx(int **,int);
int sgnx(int);
void martx(int **,int);int main(void)
{
int style=0,i=0;
int matrix[max][max],*p[max];
for(i=0;i<max;i++)*(p+i)=matrix[i]; //*(p+i)是指針,指向第i個字元串
char exit1=' ';
while(exit1!='E'&& exit1!='e'){ printf("求n階矩陣的逆\n"); inputstyle(&style);
input(p,style);
printf("原矩陣為:\n");
for(i=0;i<style;i++){
for(int j=0;j<style;j++){
printf("%4d",matrix[i][j]);
}
printf("\n");
}
martx(p,style);
printf("\n");
printf("Exit=e Continue=Press any key\n");
cin>>exit1;
fflush(stdin);
printf("\n\n"); }
return(0);
} void input(int **p,int n){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
printf("輸入矩陣(%d行,%d列)元素:",j+1,i+1);
*(*(p+j)+i)=0;
scanf("%d",*(p+j)+i);
fflush(stdin);
}
}
}void inputstyle(int *style){
do{
printf("輸入矩陣n*n階數n(0<n<%d):",max);
fflush(stdin);
scanf("%d",style);
fflush(stdin);
}while(*style<=0 && *style>max);
}long danx(int **p,int n){
int i=0,j1=0,k1=0,j2=0,k2=0;
long sum=0;
int operate[max][max],*po[max];
for(i=0;i<max;i++)*(po+i)=operate[i]; if(n==1)return *(*(p+0)+0);
else{
for(i=0;i<n;i++){
for(j1=1,j2=0;j1<n;j1++,j2++){
k1=-1;k2=-1;
while(k2<n-1){
k1++;
k2++;
if(k1==i)k1++;
*(*(po+j2)+k2)=*(*(p+j1)+k1);
}
}
/*for(int i1=0;i1<n-1;i1++){
for(int h1=0;h1<n-1;h1++){
printf("(%d,%d)%d ",i1,h1,*(*(po+h1)+i1));
}
printf("\n");
}*/
sum+=*(*(p+0)+i) * sgnx(1+i+1) * danx(po,n-1);
}
return sum;
}
}int sgnx(int i){
if(i%2==0)return(1);
else return(-1);
}void martx(int **p,int n){
int i=0,j=0,j1=0,k1=0,j2=0,k2=0,num=0;
int tramform[max][max];
int operate[max][max],*po[max];
for(i=0;i<max;i++)*(po+i)=operate[i];
num=danx(p,n);
if(num==0)printf("矩陣不可逆\n");
else{
if(n==1)printf("矩陣的逆為: 1/%d\n",num);
else{
printf("矩陣的逆為: 系數 1/%d *\n",num);
for(i=0;i<n;i++){
for(j=0;j<n;j++){
j1=-1;j2=-1;
while(j2<n-1){
j1++;j2++;
if(j1==j)j1++; k1=-1;k2=-1;
while(k2<n-1){
k1++;
k2++;
if(k1==i)k1++;
*(*(po+j2)+k2)=*(*(p+j1)+k1);
}
}
tramform[i][j]=sgnx(2+i+j) * danx(po,n-1);
}
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%4d",tramform[i][j]);
}
printf("\n");
}
}
}
}
//運行結果//希望對你有幫助
Ⅶ C++程序設計 書後習題 徐士良
前李則面加上#include<math.h>信祥
然後用abs函數取絕對值
fabs是浮點型的abs;
labs是哪坦棚長整型的abs等~
Ⅷ 學習C語言有什麼書適合新手看
適合新手學習C語行拍言檔鍵羨的書目有很多,簡單列舉如下:
1、《c語言程序設計》:本書面向程序設計初學者編寫,以「注重基礎、注重方法、注重編程、注重應用」為指導思想,靈活運用案例教學、任務驅動、啟發式教學等多種教學方法,對C語言程序設計的語言知識和程序設計的方法過程進行了系統介紹,特別適合將「C語言程序設計」作為第一門程序設計課程的高校學生。
2、《C語亮升言程序設計基礎》是適合作為高等院校各類專業「C語言程序設計」課程的教材,亦適合初學者自學或供廣大程序設計及開發人員參考。本書概念清楚、內容全面、題例和習題豐富,每個程序都遵循標准化的編程風格,便於學生理解和自學。
3、《C語言程序設計教程》:本書可作為高等學校大學本科、高職高專學生「C語言程序設計」課程教學用書,也可作為全國計算機水平考試及各類短訓班的培訓教材。本書注重教材的可讀性和適用性,全書共11章,適合初學者使用。
Ⅸ 用c語言怎麼編寫輸入一個矩陣求其逆矩陣的程序
這是我編的一個簡易矩陣計算器,C++語言,非常容易理解的,你可以參考求行列式和逆部分
#include <iostream>
#include <iomanip>
#include <conio.h>
#include "windows.h"
#include <string>
using namespace std;
void gotoxy(int x,int y) // 列x: 0~79 行y: 0~24
{ HANDLE hConsole=GetStdHandle(STD_OUTPUT_HANDLE);
COORD coordScreen={x,y};
SetConsoleCursorPosition(hConsole,coordScreen);
return;
}
void setcolor(unsigned short ForeColor,unsigned short BackColor)
// 0--黑 1--暗藍 2--暗綠 3--暗青 4--暗紅 5--暗紫 6--蟹黃 7--暗白
// 8--灰 9--亮藍 10-亮綠 11-亮青 12-亮紅 13-亮紫 14-黃 15-亮白
{ HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hCon,(ForeColor % 16)|(BackColor % 16 * 16));
};
int main()
{
void plu();
void sub();
void amo();
void mul();
void ran();
void ord();
char sel='1';
while(sel != '0')
{ int i;
system("cls"); // 清屏
setcolor(15,0); // 下面顯示黑底亮青字
gotoxy(8,1); cout<<"┌───────────────────────────┐";
for(i=2;i<20;i++)
{gotoxy(8,i);cout<<"│";gotoxy(64,i);cout<<"│";}
setcolor(15,6); // 下面顯示紅底白字
gotoxy(10,3); cout<<" ";
gotoxy(10,4); cout<<" 簡 易 矩 陣 計 算 器 ";
gotoxy(10,5); cout<<" ";
setcolor(15,0); // 下面顯示黑底亮青字
gotoxy(10,7); cout<<" 1 ---- 矩陣加法 2 ---- 矩陣減法 ";
gotoxy(10,9); cout<<" 3 ---- 矩陣數乘 4 ---- 矩陣乘法 ";
gotoxy(10,11); cout<<" 5 ---- 矩陣行列式 6 ---- 矩陣的逆 ";
gotoxy(10,13); cout<<" 0 ---- 退出 ";
gotoxy(10,15); cout<<" 請選擇(0--6):";
gotoxy(8,20); cout<<"└───────────────────────────┘";
do
{ gotoxy(28,15); sel=getche( );}
while ( sel!='1' && sel!='2' && sel!='3' && sel!='4' && sel!='5' && sel!='6'&& sel!='0');
switch(sel)
{
case '1':plu(); break;
case '2':sub(); break;
case '3':amo(); break;
case '4':mul(); break;
case '5':ran(); break;
case '6':ord(); break;
case '0': break;
}
}
system("cls");
gotoxy(25,10);
cout<<"謝 謝 使 用 系 統 !"<<endl;
return 0;
}
void plu()//加法
{ char l;
system("cls"); // 清屏
setcolor(14,0); // 下面用黑底黃字
int a,b,i,j;
gotoxy(0,0);cout<<">>>>>> 矩陣加法 ";
gotoxy(0,2);cout<<"請輸入矩陣的行數:";
cin>>a;
cout<<endl;
cout<<"請輸入矩陣的列數:";
cin>>b;
cout<<endl;
double m[10][10],n[10][10];
cout<<"請輸入第一個矩陣:"<<endl;
for(i=0;i<a;i++)
for(j=0;j<b;j++)
{gotoxy(6*j+20,2*i+6); cin>>m[i][j];}
cout<<endl<<endl<<"請輸入第二個矩陣:"<<endl;
for(i=0;i<a;i++)
for(j=0;j<b;j++)
{gotoxy(6*j+20,2*a+2*i+7);cin>>n[i][j];}
cout<<endl<<">>>>>>>"<<endl<<"矩陣加法結果為:";
for(i=0;i<a;i++)
for(j=0;j<b;j++)
{gotoxy(6*j+20,4*a+2*i+8);cout<<m[i][j]+n[i][j];}
gotoxy(0,6*a+9);
cout<<">>>>>>>>按任意鍵退出:";
l=getche();
}
void sub()//減法
{ char l;
system("cls"); // 清屏
setcolor(14,0); // 下面用黑底黃字
int a,b,i,j;
gotoxy(0,0);cout<<">>>>>矩陣減法";
gotoxy(0,2);cout<<"請輸入矩陣的行數:";
cin>>a;
cout<<endl;
cout<<"請輸入矩陣的列數:";
cin>>b;
cout<<endl;
double m[10][10],n[10][10];
cout<<"請輸入第一個矩陣:"<<endl;
for(i=0;i<a;i++)
for(j=0;j<b;j++)
{gotoxy(6*j+20,2*i+6); cin>>m[i][j];}
cout<<endl<<endl<<"請輸入第二個矩陣:"<<endl;
for(i=0;i<a;i++)
for(j=0;j<b;j++)
{gotoxy(6*j+20,2*a+2*i+7);cin>>n[i][j];}
cout<<endl<<">>>>>>>"<<endl<<"矩陣減法結果為:";
for(i=0;i<a;i++)
for(j=0;j<b;j++)
{gotoxy(6*j+20,4*a+2*i+8);cout<<m[i][j]-n[i][j];}
gotoxy(0,6*a+9);
cout<<">>>>>>>>按任意鍵退出:";
l=getche();
}
void amo()//數乘
{ char h;
system("cls"); // 清屏
setcolor(14,0); // 下面用黑底黃字
int a,b,i,j;
gotoxy(0,0);cout<<">>>>>>矩陣數乘";
gotoxy(0,2);cout<<"請輸入矩陣的行數:";
cin>>a;
cout<<endl;
cout<<"請輸入矩陣的列數:";
cin>>b;
cout<<endl;
double m[10][10],c;
cout<<"請輸入矩陣:"<<endl;
for(i=0;i<a;i++)
for(j=0;j<b;j++)
{gotoxy(6*j+20,2*i+6);cin>>m[i][j];}
cout<<endl<<"請輸入與矩陣相乘的實數:";
cin>>c;
cout<<endl<<endl<<"矩陣數乘結果為:";
for(i=0;i<a;i++)
for(j=0;j<b;j++)
{gotoxy(8*j+20,2*a+2*i+9);cout<<m[i][j]*c;}
gotoxy(0,4*a+12);
cout<<">>>>>>>按任意鍵退出:";h=getche();
}
void mul()//乘法
{
char k;
system("cls"); // 清屏
setcolor(14,0); // 下面用黑底黃字
int a,b,c,i,j,q;
gotoxy(0,0);cout<<">>>>>>矩陣乘法";
gotoxy(0,2);cout<<"請輸入第一個矩陣的行數:";
cin>>a;
cout<<endl<<"請輸入第一個矩陣的列數:";
cin>>b;
cout<<endl<<"則第二個矩陣的行數也為:"<<b;
cout<<endl<<endl<<"請輸入第二個矩陣的列數:";
cin>>c;
cout<<endl;
double m[10][10],n[10][10],p[10][10]={0};
cout<<"請輸入第一個矩陣:"<<endl;
for(i=0;i<a;i++)
for(j=0;j<b;j++)
{gotoxy(6*j+18,2*i+10); cin>>m[i][j];}
cout<<endl<<endl<<"請輸入第二個矩陣:";
for(i=0;i<b;i++)
for(j=0;j<c;j++)
{gotoxy(6*j+18,2*a+2*i+11);cin>>n[i][j];}
cout<<endl<<">>>>>>>"<<endl<<"矩陣相乘結果為: ";
for(i=0;i<a;i++)
for(j=0;j<c;j++)
for(q=0;q<b;q++) p[i][j]=p[i][j]+m[i][q]*n[q][j];
for(i=0;i<a;i++)
for(j=0;j<c;j++)
{gotoxy(10*j+18,2*a+2*b+2*i+12);cout<<p[i][j];}
gotoxy(16,2*a+2*b+2*i+15);
cout<<">>>>>>>按任意鍵退出:";k=getche();
}
//===================================================行列式
float Fun(int n1,float a1[10][10]);
void ran()
{
system("cls"); // 清屏
setcolor(15,0); // 下面用黑底黃字
char k;
int n,i,j;
cout<<">>>>>矩陣行列式"<<endl<<endl<<"請輸入矩陣階數: ";
cin>>n;
cout<<endl<<"請輸入矩陣:"<<endl;
float a[10][10];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{gotoxy(6*j+12,2*i+4);cin>>a[i][j];}
cout<<endl<<"行列式為: "<<Fun(n,a)<<endl<<endl;
cout<<">>>>>>按任意鍵退出:";
k=getche();
}
float Fun(int n1,float a1[10][10])//求行列式的遞歸函數
{
int i_1,j_1,c;//c為數組b的行
float b[10][10];
int p=0,q=0;
float sum=0;
if(n1==1) return a1[0][0];
for(i_1=0;i_1<n1;i_1++)
{
for(c=0;c<n1-1;c++)
{if(c<i_1) p=0;
else p=1;
for(j_1=0;j_1<n1-1;j_1++)
{b[c][j_1]=a1[c+p][j_1+1];}
}
if(i_1%2==0)
q=1;
else q=(-1);
sum=sum+a1[i_1][0]*q*Fun(n1-1,b);
}return sum;
}
//================================================================
void ord()
{
char g;
system("cls"); // 清屏
setcolor(15,0); // 下面用黑底黃字
int i,j,n;
gotoxy(0,0);cout<<">>>>>矩陣的逆";
gotoxy(0,2);cout<<"請輸入矩陣的階數:";
cin>>n;
cout<<endl;
cout<<"請輸入矩陣:";
float l[10][10],m[10][10],p;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{gotoxy(4*j+12,2*i+4); cin>>l[i][j];}
if(Fun(n,l)==0) cout<<endl<<"該矩陣無逆!!!"<<endl;
else
{p=Fun(n,l);
cout<<endl<<"矩陣的逆為: ";
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{{float f[10][10];
int r,w,e,d;//e為數組f的行數
for(int j_1=0,e=0;j_1<n-1,e<n-1;j_1++,e++)
for(int i_1=0,d=0;i_1<n-1,d<n-1;i_1++,d++)
{if(e<i) r=0;else r=1;
if(d<j) w=0;else w=1;
f[i_1][j_1]=l[i_1+w][j_1+r];};
if((i+j)%2==0) m[i][j]=Fun(n-1,f)/p;
else m[i][j]=-Fun(n-1,f)/p;
};
gotoxy(9*j+12,2*n+2*i+4);cout<<m[i][j];};};
cout<<endl<<endl<<">>>>>>按任意鍵退出:";g=getche();
}