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