簡單的c

1、輸入一行字符,分別統計出其中字母、空格、數字和其他字符的個數。

2、求下列試子的值:1-1/2+1/3-1/4+……+1/99-1/100,將結果輸出。

3、矩陣轉置:將一個m行n列矩陣(即m×n矩陣)的每一行轉置成另一個n×m矩陣的相應列

   例如:將2*3的矩陣轉置後輸出:

   即將     12 3    轉置     1  4

               45 6                 2  5

                                       3  6



解答:對於第一題的話,我們可以直接用選擇循環來處理,但是對於字符串尾部的結束標誌來說是一個非常麻煩的問題,所以採用兩個數組來比較,避免了碰到結束符的尷尬。

對於第二題,我們可以採用一個負號標誌,來記錄每一輪之後,下一輪應當的結果,相加後,負號標誌乘以負一轉正,繼續參加下一輪的運算,直到結束。

對於第三題,將對應的行座標和列座標交換之後即可得出結果。

#include <stdio.h>
#include <math.h>
int main(void){
	/*int i=0,kong=0,zi=0,shu=0,other=0,j=0;
	char s[1000];
	char s1[1000];
	gets(s);
	while(s1[j]=s[i++]){
		if((s1[j]>='a' && s1[j]<='z' )|| (s1[j]>='A' && s1[j]<='Z'))//計算字符
			zi+=1;
		else if(s1[j]>='0'&&s1[j]<='9')//計算數字
			shu+=1;
		else if(s1[j]==' ')//計算空格
			kong+=1;
		else//計算其他的字符
			other+=1;
		j++;
	}
	printf("數字有:%d\n字符有:%d\n空格有:%d\n其他有:%d\n",shu,zi,kong,other);
*/


//第二個,註釋掉了,同第一個,均在devc++環境下完成測試運行
/*
	int i,n;
	double s=0;
	int sige=1;
	scanf("%d",&n);
	for(i=1;i<=n;i++){
		s+=(1.0/i)*sige;
		sige*=-1;//標識符,來記錄下一輪的符號
	}
	printf("%lf",s);*/
	int i,j,k,l,m,n;
	scanf("%d%d",&m,&n);
	int a[m][n];
	int b[n][m];
	for(i=0;i<m;i++)
		for(j=0;j<n;j++)
			scanf("%d",&a[i][j]);
	for(j=0;j<n;j++)
		for(i=0;i<m;i++)
			b[j][i]=a[i][j];//行座標和列座標交換
	for(i=0;i<n;i++){
		for(j=0;j<m;j++)
			printf("%5d",b[i][j]);
		printf("\n");
	}
}

發佈了21 篇原創文章 · 獲贊 23 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章