c语言练习一.二

来源:互联网 发布:孙俪的淘宝店铺 编辑:程序博客网 时间:2024/05/18 00:33

一.

1、 给你任意三个整形数据,找出其中最大一个整形数。

思路:1)分别有三个变量用于保存数据,再加一个变量保存最大值
2)先让a和b进行比较,最大值辅给Max;
3) 再让c与上面的Max进行比较,最大值赋给Max;
工具:用if进行逻辑判断

#include<stdio.h>main(){    int a,b,c;    printf("请输入三个数\n");    scanf("%d %d %d",&a,&b,&c);    int m=max(a,b);    printf("最大的是\n%d",max(m,c)); }  int max(int x,int y)//递归调用 {    return x>y?x:y; }

2、求1+2!+3!+…+20!的和。

1)一个工程只能包含一个main()函数
2)数据溢出问题,对数据类型的范围有一个清醒的认识
3)for循环

#include<stdio.h>main(){    int i;    long int sum=0;    int s=1;    for(i=1;i<=20;i++)    {        s*=i;        sum+=s;    }    printf("%d\n",sum);}

3、
编程完成数据加密:数据是五位的整数,加密规则为:

每位数字都加上6,然后用和除以8的余数代替该数字,
再将第一位和第五位交换,第二位和第四位交换。

#include<stdio.h>main(){    int a[5];    int i;    printf("请输入一个五位数:\n");    for(i=0;i<5;i++)    {        scanf("%d",&a[i]);     }      for( i=0;i<5;i++)     {        a[i]=(a[i]+6)%8;     }     for(i=0;i<5%2;i++)     {        int temp;        temp=a[5-1-i];        a[5-1-i]=a[i];        a[i]=temp;       }     printf("加密后的数字");     for(i=0;i<5;i++)     {        printf("%d",a[i]);      } }

二.

1.
键盘输入一行字符;统计字母、空格、数字、其他字符的个数 .

/*scanf  getchar  gets的区别:scanf: 输入一个字符串以tab,空格,回车结束,并且不接收以上字符。getchar:读入一个字符,以回车结束,接收回车。gets:读入一个字符串,以回车结束,不接收回车。*/#include <stdio.h>int main(){    char c;    int letters=0,space=0,digit=0,other=0;    printf("请输入一行字符:");    while ((c=getchar())!='\n')    {        if (c >= 'a'&&c <= 'z' || c >= 'A'&&c <= 'Z')        {            letters++;        }        else if (c == ' ')        {            space++;        }        else if (c >= '0'&&c <= '9')        {            digit++;        }        else        {            other++;        }    }    printf("字母数:%d\n空格数:%d\n数字数:%d\n其他字符:%d\n",letters,space,digit,other);    return 0;}

2.
题目要求:
计算1-1/2+1/3-1/4+…+1/99-1/100 的和。

#include<stdio.h>main(){    int i;    int s=1;    float sum=0;    for(i=1;i<=100;i++)    {        sum+=s*(1.0/i);//这里1.0写成1就变成整形了        s=-s;    }    printf("%f",sum);}

3.
矩阵转置:将一个m行n列矩阵(即m×n矩阵)的每一行转置成另一个n×m矩阵的相应列
例如:将2*3的矩阵转置后输出:
即将 1 2 3 转置 1 4
4 5 6 2 5
3 6

#include<stdio.h>  void main(){      int i,j;    int a[3][4];    int b[4][3];      for(i=0;i<3;i++)    {          for(j=0;j<4;j++)        {              scanf("%d",&a[i][j]);          }      }      printf("翻转前的数组:\n");      for(i=0;i<3;i++)    {          for(j=0;j<4;j++)        {              printf("%d\t",a[i][j]);        }          printf("\n");      }      for(i=0;i<4;i++)//翻转     {          for(j=0;j<3;j++)        {              b[i][j]=a[j][i];          }      }      printf("翻转后的数组:\n");      for(i=0;i<4;i++)    {          for(j=0;j<3;j++)        {              printf("%d\t",b[i][j]);        }          printf("\n");     }  }