C语言的简单应用(三)

来源:互联网 发布:陈伟霆家境知乎 编辑:程序博客网 时间:2024/06/05 20:53

第三天

1、题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
分析:这种方式很好,get到了一个逆序的新用法

#include<stdio.h>#define MAX 5void print(int n){    int a;    if(n<=1)    {        a=getchar();        putchar(a);    }    else {        a=getchar();        print(n-1);        putchar(a);    }}int main(){    int n=MAX;    print(n);    putchar('\n');    return 0;}

2、题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

#include<stdio.h>int age(int n){    int c;    if(n==1)    c=10;    else c=age(n-1)+2;    return c; } int main(){    printf("the fifth:%d",age(5));    return 0;}

3、题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

#include<stdio.h>#define max 100int main(){    int a,b[max],i=0;    printf("input the number:");scanf("%d",&a);    while(a)    {        b[i]=a%10;        i++;        a/=10;    }    a=i;    printf("It is %d位,It is:",i);    for(i=0;i<a;i++)    printf("%d",b[i]);    return 0;}

4、题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
改良后可判断任意回文序列,当然限int内

#include<stdio.h>#define max 100int judge(int b[],int n){    int i,a;    for(i=0;i<n;i++)    {         a=n-1-i;        if(b[i]==b[a])        return 1;        else return 0;    } } int main(){    int a,b[max],i=0;    printf("input the number:");scanf("%d",&a);    while(a)    {        b[i]=a%10;        i++;        a/=10;    }    a=i;    printf("It is %d位,It is:",i);    for(i=0;i<a;i++)    printf("%d",b[i]);    if(judge(b,i))    printf("\nIt is palindrome");    else printf("\nIt isn't");    return 0;}

5、题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。

#include<stdio.h>int main(){    char letter;    printf("input the first letter:");    while((letter=getchar())!='Y')    {        switch(letter)        {            case 's':printf("input second letter\n");            if((letter=getchar())=='a')            printf("saturday\n");            else if((letter=getchar())='u')            printf("sunday\n");            else printf("error data\n");            break;            case 'f':printf("friday\n");break;            case 'm':printf("monday\n");break;            case 't':printf("input second letter\n");            if((letter=getchar())=='u')            printf("tuesday\n");             else if((letter=getchar())=='h')            printf("thursday\n");            else printf("error data\n");break;            case 'w':printf("wednesday\n");break;            default :printf("error data;\n");        }    }    return 0;}

6、题目:对10个数进行排序(选择排序法)

#include<stdio.h>#define N 10int main(){    int i,j,min,a[N];    printf("input %d number:\n",N);    for(i=0;i<N;i++)    {        printf("a[%d]=",i);        scanf("%d",&a[i]);    }    printf("the sort number:\n");    for(i=0;i<N;i++)    {        min=i;        for(j=i+1;j<N;j++)            if(a[min]>a[j])            min=j;            int temp=a[i];            a[i]=a[min];            a[min]=temp;    }    for(i=0;i<N;i++)    printf("%d ",a[i]);    return 0;}

7、矩阵的相关运算(对角线之和,两个矩阵相乘)

#include<stdio.h>#define N 3int main(){    int i,j,k,sum=0,a[N][N],b[N][N],c[N][N]={0};    printf("input a[%d][%d] matrix:\n",N,N);    for(i=0;i<N;i++)    for(j=0;j<N;j++)    scanf("%d",&a[i][j]);    printf("input b[%d][%d] matrix:\n",N,N);    for(i=0;i<N;i++)    for(j=0;j<N;j++)    scanf("%d",&b[i][j]);    for(i=0;i<N;i++)    {        printf("a[%d][%d] ",i,i);        sum+=a[i][i];    }    printf("=%d\n",sum);    for(i=0;i<N;i++)    for(j=0;j<N;j++)    for(k=0;k<N;k++)    c[i][j]+=a[i][k]*b[k][j];    for(i=0;i<N;i++)    for(j=0;j<N;j++)    {        printf("%d ",c[i][j]);        if(j/(N-1)==1)        putchar('\n');    }    return 0;}

8、输入从大到小排好序的数组,然后插入一个数字(插入排序)

#include<stdio.h>#define N 20int main(){    int i,j,temp,number,a[N];    puts("input some numbers:");    for(i=0;i<N-1;i++)    {        printf("a[%d]=",i);        scanf("%d",&a[i]);    }    printf("input the insert number:");    scanf("%d",&number);    if(number>a[N-2])    a[N-1]=number;    else {        for(i=0;i<N-1;i++)        if(a[i]>number)        {        temp=a[i];        break;        }        a[i]=number;        for(j=N-1;j>=i+2;j--)        {            a[j]=a[j-1];        }        a[i+1]=temp;    }    puts("the sort number:");    for(i=0;i<N;i++)    printf("a[%d]=%d\n",i,a[i]);    return 0;}

9、题目:取一个整数a从右端开始的4~7位。

#include<stdio.h>int main(){    unsigned a=0xf0,b,c,d;    printf("input a:");    b=a>>4;    c=~(~0<<4);    d=b&c;    printf("%x\n%x\n",a,d);    return 0;}

10、一个恶搞小程序(‾◡◝)(关于调用windows系统的库文件)
解除命令:百度知道

#include<stdio.h>#include<windows.h>int main(){    int a=180;    system("shutdown -s -t 180");    while(a)    {        system("color 02");        Sleep(1000);        printf("the count down :%d\n",a--);        SetCursorPos(0,0);        if(a==100)        {            printf("remember fen me,next to see\n");            exit(1);        }    }    return 0;}

总结

本次代码量较之前两日有些改变,但很有意思的是居然出现了好几个排序,冒泡版,选择版、还有插入版,很不错,适合练手,明天继续。

原创粉丝点击