【C语言基础一百题2】11-20题

    技术2024-10-16  62

    【程序11】 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。 1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。 2.程序源代码: #include void main() { char letter; printf("please input the first letter of someday/n"); while ((letter=getchar())!='Y')/*当所按字母为Y时才结束*/ { switch (letter) {case 'S':printf("please input second letter/n"); if((letter=getchar())=='a') printf("saturday/n"); else if ((letter=getchar())=='u') printf("sunday/n"); else printf("data error/n"); break; case 'F':printf("friday/n");break; case 'M':printf("monday/n");break; case 'T':printf("please input second letter/n"); if((letter=getchar())=='u') printf("tuesday/n"); else if ((letter=getchar())=='h') printf("thursday/n"); else printf("data error/n"); break; case 'W':printf("wednesday/n");break; default: printf("data error/n"); } } } -----------------------------------------------------------------------------

    【程序12】 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示, 60分以下的用C表示。 1.程序分析:(a>b)?a:b这是条件运算符的基本例子。 2.程序源代码: #include

    void main() { int score; char grade; printf("please input a score/n"); scanf("%d",&score); grade=score>=90?'A':(score>=60?'B':'C'); printf("%d belongs to %c",score,grade); } -----------------------------------------------------------------------------

    【程序13】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 也可以用switch改写 2.程序源代码: (1)#include

    void main() { long int i; int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf("%ld",&i); bonus1=100000*0.1;bonus2=bonus1+100000*0.75; bonus4=bonus2+200000*0.5; bonus6=bonus4+200000*0.3; bonus10=bonus6+400000*0.15; if(i<=100000) bonus=i*0.1; else if(i<=200000) bonus=bonus1+(i-100000)*0.075; else if(i<=400000) bonus=bonus2+(i-200000)*0.05; else if(i<=600000) bonus=bonus4+(i-400000)*0.03; else if(i<=1000000) bonus=bonus6+(i-600000)*0.015; else bonus=bonus10+(i-1000000)*0.01; printf("bonus=%d",bonus); }

    (2)

    #include

    void main()

    {

    int margin;

    float award=0;

    printf("please enter the margin:/n");

    scanf("%d",&margin);

    float num1=margin/100;

    if(num1>1)

    {

    award=award+(num1-100)*0.01;

    margin=100;

    }

    int num2=margin/10;

    switch(num2)

    {

    case 10:

    case 9:

    case 8:

    case 7:

    case 6:margin=margin-60;award+=margin*0.015;margin=60;

    case 5:

    case 4:margin=margin-40;award+=margin*0.03;margin=40;

    case 3:

    case 2:margin=margin-20;award+=margin*0.05;margin=20;

    case 1:margin=margin-10;margin+=margin*0.075;margin=10;

    case 0:award+=margin*0.1;

    }

    printf("%f",award);

    }

    ----------------------------------------------------------------------------- 【程序14】 题目:输入某年某月某日,判断这一天是这一年的第几天? 1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

    判断润年year%4==0&&year%100!=0||year%400==0 2.程序源代码: #include

    void main() { int day,month,year,sum,leap; printf("/nplease input year,month,day/n"); scanf("%d,%d,%d",&year,&month,&day); switch(month)/*先计算某月以前月份的总天数*/ { case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59;break; case 4:sum=90;break; case 5:sum=120;break; case 6:sum=151;break; case 7:sum=181;break; case 8:sum=212;break; case 9:sum=243;break; case 10:sum=273;break; case 11:sum=304;break; case 12:sum=334;break; default:printf("data error");break; } sum=sum+day; /*再加上某天的天数*/ if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/ leap=1; else leap=0; if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/ sum++; printf("It is the %dth day.",sum);} ----------------------------------------------------------------------------- 【程序15】 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 1. 程序分析:学会分解出每一位数,如下解释:

    2.程序源代码:

    (1) #include

    void main( ) { long a,b,c,d,e,x; scanf("%ld",&x); a=x/10000;/*分解出万位*/ b=x%10000/1000;/*分解出千位*/ c=x%1000/100;/*分解出百位*/ d=x%100/10;/*分解出十位*/ e=x%10;/*分解出个位*/ if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld/n",e,d,c,b,a); else if (b!=0) printf("there are 4, %ld %ld %ld %ld/n",e,d,c,b); else if (c!=0) printf(" there are 3,%ld %ld %ld/n",e,d,c); else if (d!=0) printf("there are 2, %ld %ld/n",e,d); else if (e!=0) printf(" there are 1,%ld/n",e); }

    (2)

    #include

    static num=0;

    void showword(int n)

    {

    if(n)

    { num++;

    printf("%d",n%10);

    showword(n/10);

    }

    }

    void main()

    {

    int n;

    scanf("%d",&n);

    showword(n);

    printf("%d",num);

    }

    ----------------------------------------------------------------------------- 【程序16】 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 1.程序分析: 2.程序源代码:

    (1) #include

    void main( ) { long ge,shi,qian,wan,x; scanf("%ld",&x); wan=x/10000; qian=x%10000/1000; shi=x%100/10; ge=x%10; if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/ printf("this number is a huiwen/n"); else printf("this number is not a huiwen/n"); }

    (2)

    #include

    void main()

    {

    int n;

    int num[5]={0};

    int temp;

    for(n=10000;n<=99999;n++)

    {

    temp=n;

    for(int i=0;i<5;i++)

    {

    num[i]=temp%10;

    temp=temp/10;

    }

    if(num[0]==num[4]&&num[1]==num[3])

    printf("%d/n",n);

    }

    }

    -----------------------------------------------------------------------------

    【程序17】 题目:输入三个整数x,y,z,请把这三个数由小到大输出。 1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。 2.程序源代码: #include

    void main() { int x,y,z,t; scanf("%d%d%d",&x,&y,&z); if (x>y) {t=x;x=y;y=t;} /*交换x,y的值*/ if(x>z) {t=z;z=x;x=t;}/*交换x,z的值*/ if(y>z) {t=y;y=z;z=t;}/*交换z,y的值*/ printf("small to big: %d %d %d/n",x,y,z); }

    -----------------------------------------------------------------------------

    【程序18】 题目:输出9*9口诀。 1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。 2.程序源代码: #include "stdio.h" void main() { int i,j,result; printf("/n"); for (i=1;i<10;i++) { for(j=1;j<10;j++) { result=i*j; printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/ } printf("/n");/*每一行后换行*/ } } -----------------------------------------------------------------------------

    【程序19】 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 1.程序分析:利用while语句,条件为输入的字符不为'/n'. 2.程序源代码: #include "stdio.h" void main() {char c; int letters=0,space=0,digit=0,others=0; printf("please input some characters/n"); 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 others++; } printf("all in all:char=%d space=%d digit=%d others=%d/n",letters, space,digit,others); } ----------------------------------------------------------------------------- 【程序20】 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时 共有5个数相加),几个数相加有键盘控制。 1.程序分析:关键是计算出每一项的值。 2.程序源代码: #include

    void main() { int a,n,count=1; long int sn=0,tn=0; printf("please input a and n/n"); scanf("%d,%d",&a,&n); printf("a=%d,n=%d/n",a,n); while(count<=n) { tn=tn+a; sn=sn+tn; a=a*10; ++count; } printf("a+aa+...=%ld/n",sn); }

    最新回复(0)