简单的c

来源:互联网 发布:小金鱼摔炮淘宝 编辑:程序博客网 时间:2024/05/17 11:33

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

原创粉丝点击