上机练习题
1. 输入一个不超过五位的正整数,输出其逆数。例如输入12345,输出应为54321
/* Note:Your choice is C IDE */
#include "stdio.h"
main()
{
    long n;
    int ww,qw,bw,sw,gw;
    printf("Please input:\n");
    scanf("%ld",&n);
    while(n<=0||n>99999)
        {
            printf("\nThe number is 2 little or too large.Retry please!\n");
            scanf("%ld",&n);
        }
    if(n>=10000&&n<=99999)
        {
        ww=n/10000;
        qw=n/1000%10;
        bw=n/100%10;
        sw=n/10%10;
        gw=n%10;
        printf("The old number is:%ld\n",n);
        printf("The new number is:%d%d%d%d%d\n",gw,sw,bw,qw,ww);
        }
    else if(n>=1000&&n<=9999)
        {
            qw=n/1000;
            bw=n/100%10;
            sw=n/10%10;
            gw=n%10;
            printf("The old number is:%ld\n",n);
            printf("The new number is:%d%d%d%d\n",gw,sw,bw,qw);
           
        }
scanf输入整型数组
        else if(n>=100&&n<=999)
        {
            bw=n/100;
            sw=n/10%10;
            gw=n%10;
            printf("The old number is:%ld\n",n);
            printf("The new number is:%d%d%d\n",gw,sw,bw);
        }
            else if(n>=10&&n<=99)
            {
                sw=n/10;
                gw=n%10;
                printf("The old number is:%ld\n",n);
                printf("The new number is:%d%d\n",gw,sw);
            }
            else printf("The old number equals the new number:%ld",n);
       
}
2. 计算1+2+3+n的值,n是从键盘输入的自然数。
/* Note:Your choice is C IDE */
#include "stdio.h"
main()
{
    int n,i;
    long sum=0;
    printf("1+2+3+....+n\n");
    printf("Please input n:\n");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        sum+=i;
}
    printf("sum=%ld",sum); 
}
3. 从终端(键盘)读入20个数据到数组中,统计其中正数的个数,并计算这些正数之和。、
/* Note:Your choice is C IDE */
#include "stdio.h"
#define N 20
main()
{
    int a[N],i,sum=0,count=0;
    printf("Please input numbers :\n");
    for(i=0;i<N;i++)
        {    scanf("%d",&a[i]);
            if(a[i]>0)
                {    sum+=a[i];
                    count++;
                }
        }
    printf("count=%d,sum=%d",count,sum);
}
4. 从终端(键盘)将5个整数输入到数组a中,然后将a逆序复制到数组b中,并输出b中各元素的值
/* Note:Your choice is C IDE */
#include "stdio.h"
#define N 5
main()
{    int a[N],b[N],i;
    printf("Please input numbers:\n");
    for(i=0;i<N;i++)
    {    scanf("%d",&a[i]);
        b[N-i-1]=a[i];
    }
    printf("\nThe old numbers are:\n");
    for(i=0;i<N;i++)
        printf("%-4d",a[i]);
    printf("\nThe new numbers are:\n");
    for(i=0;i<N;i++)
        printf("%-4d",b[i]);   
}
5. 要将五张100元的大钞票,换成等值的50元,20元,10元,5元一张的小钞票,每种面值至少1张,编程输出所有可能的换法,程序应适当考虑减少重复次数。
/* Note:Your choice is C IDE */
#include "stdio.h"
main()
{    int i,j,k,n;
    for(i=1;i<=10;i++)
        for(j=1;j<=25;j++)
            for(k=1;k<=50;k++)
                for(n=1;n<=100;n++)
                    if(i*50+j*20+k*10+n*5==500)            printf("num50=%d,num20=%d,num10=%d,num5=%d\n",i,j,k,n);
}
6. n以内(不包括n)同时能被37整除的所有自然数之和的平方根sn从键盘输入。例
如若n1000时,函数值应为:s=153.909064
/* Note:Your choice is C IDE */
#include "stdio.h"
#include "math.h"
main()
{    int n,s,i;
    float sum=0;
    printf("Please input n:\n");
    scanf("%d",&n);
    while(n<=0)
        {
            printf("\nError input.Retry please:\n");
            scanf("%d",&n);
        }
    for(i=1;i<n;i++)
        if(i%3==0&&i%7==0)
            sum+=i;
    printf("The number is:%4.2f",sqrt(sum));
}
7. 一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索出车号。
/* Note:Your choice is C IDE */
#include "stdio.h"
#include "math.h"
main()
{
    int i,qw,bw,sw,gw;
   
    for(i=1122;i<=9988;i++)
        {    if(sqrt(i)!=(int)sqrt(i))
                continue;
            qw=i/1000;
            bw=i/100%10;
            sw=i/10%10;
            gw=i%10;
            if(qw==bw&&sw==gw)
                {
                    printf("\nThe number is:%d\n",i);
                    break;
                }               
        }   
8. 输入1~10之间的一个数字,输出它对应的英文单词。
/* Note:Your choice is C IDE */
#include "stdio.h"
main()
{
    int n;
    printf("Please input n:\n");
    scanf("%d",&n);
    while(n<1||n>10)
    {
        printf("Error input!Retry please:\n");
        scanf("%d",&n);
    }
    switch(n)
    {
        case 1:printf("One!");break;
        case 2:printf("Two!");break;
        case 3:printf("Three!");break;
        case 4:printf("Four!");break;
        case 5:printf("Five!");break;
        case 6:printf("Six!");break;
        case 7:printf("Seven!");break;
        case 8:printf("Eight!");break;
        case 9:printf("Nine!");break;
        case 10:printf("Ten!");break;
    } 
}
9. 个位数为6且能被3整除但不能被5整除的三位自然数共有多少个,分别是哪些?
/* Note:Your choice is C IDE */
#include "stdio.h"
main()
{
    int  i,count=0;
    for(i=106;i<596;i=i+10)
    {
        if(i%3==0&&i%5!=0)
            {
                printf("%-4d",i);
                count++;
            }
    }
    printf("count=%-4d",count);
}
10. 用自然语言描述程序逻辑如下,试写程序。
    设置环境;
    定义变量ijs,以及用于放置结果的变量sum,并令sum初值为0
    i=1
    如果i100,则转⑤,否则转⑧;
    s=0,求前i个自然数之和,并放于变量s之中;
    sum=sum+s
    i增加1,转④;
8 输出和sum,结束。
/* Note:Your choice is C IDE */