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");
}
}