【C语言】上手实验

实验1  顺序、分支结构

程序填空

1. 

题目描述:输入三个整数存放在变量a、b、c中,找出三个数中的最大值放于max中,并将其输出。以下是完成此项工作的程序,请将未完成的部分填入,实现其功能,并在计算机上调试程序,以测试填入的部分是否正确。

代码:

#include <stdio.h>
void main()
{
	int a,b,c,max;			//声明四个整型变量
	printf("请输入3个整型数据:");
	scanf("%d%d%d",&a,&b,&c);
	if (a>b)	max=a;
	else		max=b;		//将a和b中的较大值记录在max中
	if (c>max)	max=c;		//如果c是最大值
	printf("max=%d\n",max);	//输出最大值max

}

2. 

题目描述:根据三边长求三角形的面积。请将未完成的部分填入,使之完整。该题中使用海伦公式求解:area=sqrt(s*(s-a)*(s-b)*(s-c)),其中s是三边和的一半,即(a+b+c)/2。sqrt函数包含在math.h的头文件中,它的功能是求平方根。

代码:

#include<stdio.h>

#include<math.h>

main()

{

float a,b,c,s,area;

printf("输入三角形的边长a,b,c:");

scanf("%f%f%f",&a,&b,&c);

s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

/* 函数sqrt()用来计算一个非负数的平方根,使用这个函数,需要在源程序中增加"#include<math.h>" */

printf("area=%.2f\n",area);

}

3. 

题目描述:输入一个不多于4位的正整数,要求求出它是几位数,分别输出其每一位数字。以下是完成此项工作的程序,请将未完成的部分填入,实现其功能,并在计算机上调试程序,以测试填入的部分是否正确。

代码:

#include<stdio.h>

main()

{

    int  n,ge,shi,bai,qian; //个,十,百,千位: ge,shi,bai,qian

    printf("输入一个不多于4位的正整数:");

    scanf("%d",&n);

    if (n<10)  printf("%d是1位数\n",n);

    else

        if(n<100)

        {

            printf("%d是2位数\n",n);

            ge=n%10;

            shi=n/10;

            printf("十位:%d,个位:%d\n",shi,ge);

        }

        else

            if(n<1000)

            {

                printf("%d是3位数\n",n);

                ge=n%10;

                shi=n/10%10;

                bai=n/100;

                printf("百位:%d,十位:%d,个位:%d\n",bai,shi,ge);

            }

            else

                if( n>9999)  printf("它超过了4位!\n");

                else

                {

                    printf("%d是4位数\n",n);

                    ge=n%10;

                    shi=n/10%10;

                    bai=n/100%10;

                    qian=n/1000;

                    printf("千位:%d,百位:%d,十位:%d,个位:%d\n",qian,bai,shi,ge);

                }

}

4. 

题目描述:在屏幕上显示一张中文时间表,用户根据提示从中选择,程序应根据用户的选择输出相应的英文问候信息。以下是完成此项工作的程序,请将未完成的部分填入,实现其功能,并在计算机上调试程序,以测试填入的部分是否正确。

代码:

#include<stdio.h>

main()

{

    int  n;

    printf("**** 时间表 ****\n");

    printf("1:上午\n");

    printf("2:下午\n");

    printf("3:晚上\n");

    printf("请输入您的选择:");

    scanf("%d",&n);  //用户输入1,2或3

    switch (n)

    {

        case  1:   printf("Good morning!\n"); break;

        case  2:   printf("Good afternoon!\n");  break;

        case  3:   printf("Good evening!\n");   break;

        default:   printf("输入错误!\n");

    }

}

5. 

题目描述:已知银行整存整取存款不同期限的月息利率分别为:

                        0.33%   期限1年

    0.36%   期限2年

    月息利率 =  0.39%   期限3年

    0.45%   期限5年

    0.54%   期限8年

要求输入存款的本金和期限,求到期时能从银行得到的利息与本金的合计。

以下是完成此项工作的程序,请将未完成的部分填入,实现其功能,并在计算机上调试程序,以测试填入的部分是否正确。

代码:

#include<stdio.h>

main()

{

    int year; //存款期限

    float money,rate=0,total; //money:本金,rate:月利率,total:本利合计

    printf("输入本金和期限(1,2,3,5或8年): ");

    scanf("%f%d",&money,&year);

    switch(year)

    {

        case 1:   rate=0.0033;  break; //期限一年的月利率

        case 2:   rate=0.0036;  break;

        case 3:   rate=0.0039;  break;

        case 5:   rate=0.0045;  break;

        case 8:   rate=0.0054;  break;

        default:  printf("年限输入错误!\n");

    }

    total=money*(1+ year*12*rate);

    printf("到期后本利合计为%.4f元\n",total);

}

程序设计

6.

题目标题:通过日期求某月的天数。

题目描述:输入日期的年份和月份,求该月有多少天。提示:对于月份为1、3、5、7、8、10、12的月份天数为31,月份为4、6、9、11的月份天数为30,月份为2时要结合年份考虑闰年的情况。

输入描述: 输入两个正整数y和m分别表示年份和月份。

输出描述:如果y和m满足条件:1900<=y<3000,0<m<13,输出该月的天数;否则输出“Input error!”。 

样例输入:2010 12

样例输出:31

#include <stdio.h>

void main()

{

  int y,m;

  printf("输入年份和月份:\n");

  scanf("%d%d",&y,&m);

  if (1900<=y && y<3000 && 0<m<13)

  {

      switch(m)

  {

  case 1:

  case 3:

  case 5:

  case 7:

  case 8:

  case 10:

  case 12:

      printf("31\n");

      break;

          case 4:

  case 6:

  case 9:

  case 11:

      printf("30\n");

      break;

  case 2:

      if (y%4==0 && y%100!=0)

      printf("29\n");

      else

      printf("28\n");

  break;

}



  }

  else

printf("Input error!\n");

}

7.

题目标题:录取研究生。

题目描述:某高校录取研究生的要求是,新生的每门课成绩不低于60分,总成绩不低于340分,370分以下为自费。编一程序实现输入一个学生的四门课成绩,试判断该生为该校录取的情况(“没有录取”、“自费”、“公费”三种情况)。

输入描述:输入四门课的成绩,成绩均为0~150之间的整数。

输出描述:录取结果。(“没有录取”、“自费”、“公费”)

样例输入:60 100 130 80

样例输出:公费

#include <stdio.h>

void main()

{

  int n1,n2,n3,n4;

  printf("输入四门课的成绩,成绩均为0~150之间的整数。\n");

  scanf("%d%d%d%d",&n1,&n2,&n3,&n4);



  if ( n1>150 || n2>150 || n3>150 || n4>150 || n1<0 || n2<0 || n3<0 || n4<0 )

  printf("error!\n");

  else

  {

  if ( n1>=60 && n2>=60 && n3>=60 && n4>=60 && n1+n2+n3+n4>=340 )

  {

      if ( n1+n2+n3+n4>=370 )

  {

  printf("公费\n");

  }

  else

  {

      printf("自费\n");

  }

  }

  else

  {

  printf("没有录取\n");

  }

  }

}

8.

题目标题:骑车与走路

题目描述:在华农校园里,没有自行车,上课办事会很不方便。但实际上,并非去办任何事情都是骑车快,因为骑车总要找车、开锁、停车、锁车等,这要耽误一些时间。假设找到自行车,开锁并骑上自行车的时间为27秒;停车锁车的时间为23秒;步行每秒行走1.2米,骑车每秒行走3.0米。请判断走不同的距离去办事,是骑车快还是走路快。

输入描述:一个整数:为一次办事要行走的距离,单位为米。

输出描述:对输入的整数,如果骑车快,输出一行“Bike”;如果走路快,输出一行“Walk”;如果一样快,输出一行“All”。

样例输入:

【样例输入1】  【样例输入2】

50 120

样例输出:

【样例输出1】  【样例输出2】

Walk Bike

#include <math.h>

#include <stdio.h>

void main()

{

  float walk,bike;

  int meter;

  printf("输入距离:\n");

  scanf("%d",&meter);

  walk=meter/1.2;

  bike=50+meter/3.0;



  if ( fabs(walk-bike)<=1e-3 )

      printf("all\n");

  else

  {

      if ( walk<bike )

      printf("walk\n");

      else 

          printf("bike\n");

  }

}

9.

题目标题:停车场收费

题目描述:一个停车场的标准收费是3小时之内收5元,超过3小时,每增加1小时加收2元;如果时间不是整数,按比例收取,例如:如果输入为3.6小时,则费用为5 + (3.6-3)*2 = 6.2 元。最高收费为40元。假设任何车辆的停车时间都不超过24小时。编写程序,计算每辆车的停车费。

输入描述:输入停车的时间t。

输出描述:输出应该收取的停车费用cost,保留小数点后2位。

样例输入:3.46

样例输出:5.92

#include <stdio.h>

void main()

{

    float t;

float cost = 5;



printf("输入停车的时间t:");

scanf("%f",&t);

    



if ( t>24 )

printf("error!\n");

else

               {

if ( t>3 )

{

                  cost=cost+2*(t-3);

    if ( cost>40 )

cost=40;

}

    printf("%.2f\n",cost);

}

}

10.

题目标题:简单计算器。

题目描述:模拟计算器的功能,能根据用户输入的两个运算数和运算符(’+’、 ‘-’、 ‘*’ 或‘/ ’),对两个数进行相应的运算,输出运算结果。注意:除法运算‘/ ’的除数不能为0。

输入描述:两个实数a、b和一个运算符号c。

输出描述:如果能运算,输出a和b的运算结果;如果c为除号,且b为0,输出“除数为0!”;如果c不是’+’、 ‘-’、 ‘*’ 或‘/ ’中的运算符号,输出“运算符号错误!”

样例输入:4*9 

样例输出:4.00*9.00=36.00

#include <math.h>

#include <stdio.h>

void main()

{

  float a,b;

  char c;



  scanf("%f%c%f",&a,&c,&b);



  if ( c!='+' && c!='-' && c!='*' && c!='/' )

  printf("运算符号错误!\n");

  else

  {if ( c=='/' && fabs(b-0)<=10e-10 )

  printf("除数为0!\n");

  else

  {

    switch(c)

    {

case '+':

      printf("%f + %f = %f\n",a,b,a+b);

  break;

case '-':

      printf("%f - %f = %f\n",a,b,a-b);

  break;

case '*':

      printf("%f * %f = %f\n",a,b,a*b);

  break;

    case '/':

      printf("%f / %f = %f\n",a,b,a/b);

  break;

}

  }

  }

}

实验2  循环结构

程序填空

1. 

题目描述:马克思曾经出过这样一道趣味数学题:有30个人在一家小饭馆里用餐,其中有男人、女人和小孩。每个男人花了3先今,每个女人花了2先令,每个小孩花了1先令,一共花去50先令。问男人、女人以及小孩各有几个人。以下是完成此项工作的程序,请将未完成的部分填入,实现其功能,并在计算机上调试程序,以测试填入的部分是否正确。

代码:

#include<stdio.h>

main()

{

    int n;    //n记录解的个数

    int a,b,c;  //分别记录男、女、小孩的人数

    n=0;    //初始化n的值

    for(a=1;a<=30;a++)

    {

        for(b=1;b<=30;b++)

        {

            c=50-3*a-2*b;

            if((a+b+c==30) && (c<=30))

            {

                printf("男人有: %d个;女人有:%d个;小孩有:%d个。\n",a,b,c);

                n++;

            }

        }

    }

    printf("共有%d种方案\n",n);

}

2. 

题目描述:下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数,请填空使程序完整,并在计算机上调试程序,以测试填入的部分是否正确。

代码:

#include<stdio.h>

main()

{

    int n, k=1, s=0, m ;

    for (n=1 ; n<=100 ; n++)

    {

        k=1 ; s=0 ;

        m=n ;

        while ( m!=0 )

        {

            k*=m%10;

            s+=m%10;

            m=m/10;

        }

        if (k>s)  printf("%d ",n);

    }

    printf("\n");

}

3. 

题目描述:一个数如果恰好等于除它本身的所有因子之和,这个数就称为完数。例如,6=1+2+3, 6就称为完数。输出1000以内所有满足完数条件的数及其个数。请阅读以下不完整的程序,并在计算机上调试该程序以补足其中的空格,实现其功能。

代码:

#include<stdio.h>

main()

{

int n,s,i,count=0;

printf("1000以内的完数为:");

for(n=1;n<1000;n++)

{

s=0;

for(i=1;i<n;i++) //计算小于n的因数和

if (n%i==0)  s=s+i; //如果i是n的因数

if (s==n) //判断是否满足完数的条件

{

printf("%d ",n);

count=count+1; //完数的个数+1

}

}

printf("\n1000以内完数的个数为:%d\n",count);

}

4. 

题目描述:求100以内能被3整除 且个位数字为9的所有正整数。请阅读以下不完整的程序,并在计算机上调试该程序以补足其中的空格,实现其功能。

代码:

#include<stdio.h>

main()

{

int i;

for(i=1;i<100;i++)

{

if(i%3==0&& i%10==9)

printf("%d ",i);

}

printf("\n");

}

5. 

题目描述:求输入的两个正整数的最大公约数。请阅读以下不完整的程序,并在计算机上调试该程序以补足其中的空格,实现其功能。

代码:

#include<stdio.h>

main()

{

int x,m,n;

printf("请输入两个正整数:");

scanf("%d%d",&m,&n);

if(m<n) x=m;

else x=n; //x取m和n中的较小值

//x从m和n的较小值开始到1的范围内递减寻找公约数

while(x>=1)

{

if(m%x==0 && n%x==0) //如果x是m和n的约数,x的值即为最大公约数

break;

x=x-1;

}

printf("%d和%d的最大公约数是%d\n",m,n,x);

}

程序设计

6.

题目标题:数字求和。

题目描述:给定一个正整数a,以及另外的5个正整数,问题是:这5个整数中,小于a的整数的和是多少?

输入描述:输入一行,只包括6个小于100的正整数,其中第一个正整数就是a。

输出描述:输出一行,给出一个正整数,是5个数中小于a的数的和。

样例输入:

10 1 2 3 4 11

样例输出:

10

#include<stdio.h>

main()

{

int a,i,sum;

int n[5];

scanf("%d",&a);

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

scanf("%d",&n[i]);

sum=0;

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

{

if (n[i]<a)

sum=sum+n[i];

}

printf("%d",sum);

}

7.

题目标题:球弹跳高度的计算。

题目描述:一球从某一高度落下(整数,单位米),每次落地后反跳回原来高度的一半,再落下。编程计算气球在第5次落地时,共经过多少米? 第5次反弹多高?

输入描述:输入一个整数h0,表示球的初始高度。

输出描述:两个数据s和h,分别表示第5次落地时共经过s米,第5次反弹高度为h米,s和h用空格隔开。

注意:结果可能是实数,结果用float类型保存。
样例输入:10

样例输出:28.7500 0.3125

#include<stdio.h>

main()

{

int h0;

float s,h,i;

scanf("%d",&h0);

h=h0;

s=0;

for(i=1;i<=5;i++)

{

if (i==1)

s=s+h;

else s=s+2*h;

h=h/2;

}

printf("%f %f\n",s,h);

}

8.

题目标题:求分数序列和。

题目描述:有一个分数序列 2/1,3/2,5/3,8/5,13/8,21/13,.... 求这个分数序列的前n项之和。

输入描述:输入有一行:正整数n。

输出描述:输出有一行:分数序列的和(浮点数,精确到小数点后4位)。

【提示】 

1. 最好在程序中使用双精度浮点数(double)记录求得的和。 

2. 要输出浮点数、双精度数小数点后4位数字。

样例输入:

99

样例输出:

160.4849

#include<stdio.h>

void main()

{

long n,i;

double sum,p,q,t;

scanf("%d",&n);

p=2;

q=1;

sum=0;

for(i=1;i<=n;i++)

{

sum=sum+p/q;

t=p+q;

q=p;

p=t;

}

printf("%.4lf\n",sum);

}

9.

题目标题:点和正方形的关系。

题目描述:在平面坐标系中,有一个正方形,四个角的坐标(x,y)分别是(1,-1),(1,1),(-1,-1),(-1,1),x是横轴,y是纵轴。写一个程序,判断给定的多个点是否在这个正方形内。

输入描述:多组数据,每行包含两个浮点型数据,分别表示一个点的横、纵坐标,输入坐标为0,0时表示输入结束。(注意,输入的数据不止3组)

输出描述:对每组输入的点进行判断,显示yes或no,表示是否在正方形中,最后输入的原点也要显示yes,然后才不再继续输入点坐标。(当点在正方形的边上时,也认为在正方形内)

样例输入:

3 4

0.5 1

0 0

样例输出:

no

yes

yes

#include<stdio.h>

void main()

{

float x,y;

do

{

scanf("%f%f",&x,&y);

if(x<=1 && y<=1 && x>=-1 && x>=-1)

printf("yes\n");

else

printf("no\n");

} while(x!=0 && y!=0);

}

10.

题目标题:抓交通肇事犯。

题目描述:一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号所构成的数字正好等于某一个整数的平方。请根据以上线索求出车号。

输入描述:无。

输出描述:直接显示一个四位整数表示肇事车号

样例输入:

样例输出:

#include<stdio.h>

main()

{

    int i,j,k,c;

    for(i=1;i<=9;i++) /*i:车号前二位的取值*/

        for(j=0;j<=9;j++) /*j:车号后二位的取值*/

            if(i!=j) /*判断二位数字是否相异*/

            {

                k=i*1000+i*100+j*10+j; /*计算出可能的整数*/

                for(c=31;c*c<k;c++); /*判断该数是否为另一整数的平方*/

                    if(c*c==k) printf("%d\n",k); /*若是,打印结果*/

            }

}

}

实验3  数组与字符串

程序填空

1. 

题目描述:

随机产生10个整数存放到数组中(下标0的位置不放,从下标1开始),输入待查找的整数x,查找x是否存在于这10个数中。若存在,则输出x(最初)出现在这批数中的位置序号(例如1或2或……);若不存在x,则输出“不存在”。以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。

代码:

#include <stdio.h>

#include <stdlib.h>

void main( )

{

int a[101],k,x;

for(k=1;k<=10;k++)  //从数组中下标1的元素开始存放数据

{

a[k]=rand( )%101; //产生0~100之间的的整数

printf("%d ",a[k]);

}

printf("\n");

scanf("%d",&x); //输入待查找数x

for(k=1;k<=10;k++)

if(a[k]==x) break; //若发现了x,则不用继续循环、继续查找

if(k<=10)

      printf("x存在,它的位置序号是:%d\n",k);

    else

      printf("不存在!\n");

}

2. 

题目描述:

编写一个程序,输入一个5×5阶的矩阵,分别计算并输出其两条对角线上的各个元素之和。请填空使程序完整,并在计算机上调试程序,以测试填入的部分是否正确。

代码:

#include <stdio.h>

main( )

{

int a[5][5],i,j,sum1,sum2;

for(i=0;i<5;i++)  //输入25个数据存入5×5的矩阵中

for(j=0;j<5;j++)

            scanf("%d",&a[i][j]);

    printf("矩阵为:\n");

    for(i=0;i<5;i++)  //按行列方式显示矩阵

{

    for(j=0;j<5;j++)

            printf("%5d",a[i][j]);

        printf("\n");

}

sum1=sum2=0; //初始化表示对角线和的变量

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

    {

        for(j=0;j<5;j++)

        {

            if(i==j) //将左上到右下的对角线上的元素加到sum1中

                sum1+=a[i][j];

            if(i+j==4) //将右上到左下的对角线上的元素加到sum2中

                sum2+=a[i][j];

        }

    }

printf("两条对角线的元素和分别为:%d,%d",sum1,sum2);

}

3. 

题目描述:

输入5个整数依次存放到数组a中(从下标1开始存放),再输入待插入的整数x以及它要插入到数组中的位置下标k(1≤k≤5),要求插入后不影响a中原来下标为k到5的所有元素的先后顺序。请按照数组中的元素顺序,输出插入前的5个整数和插入后的这6个整数。提示:插入时,应该先从后往前地(从下标5到下标k)将每个数组元素都后移1个位置,最后再将x存放到下标k的元素中。请在计算机上调试以下程序以补足其中的空格。

代码:

#include <stdio.h>

#include <stdlib.h>

void main( )

{

int a[101],k,j,x;

//分别输入5个整数

for(j=1;j<=5;j++) scanf("%d",&a[j]);

scanf("%d%d",&x,&k); //输入待插入的数x和插入的位置下标k

if(k<1 || k>5)  exit(0);

for(j=5;j>=k;j--) //从下标5到下标k,将每个数组元素都后移1个位置

a[j+1]=a[j];

a[k]=x;

//输出将x插入到下标k后的这6个数

for(j=1;j<=6;j++) printf("%d ",a[j]);

}

4. 

题目描述:

输入字符串s及待删除的字符ch,将s中所有与ch相同的字符都删除掉,输出删除后得到的新串。以下程序是直接在数组s中进行删除,得到的新串仍然在数组s中。请在计算机上调试该程序以补足其中的空格。

代码:

#include <stdio.h>

main( )

{

char  s[81], ch;

int k,j;

gets(s); //输入一个字符串后按回车键

ch=getchar(); //输入待删除的字符后按回车键

//k代表s中每个字符的下标

//j代表未删除(保留)字符应放在s中新的位置下标

for(k=j=0;s[k]!='\0';k++)

if(s[k]!=ch)

{

s[j]= s[k];

j++;

}

s[j]='\0'; //得到的新串末尾要放结束符

printf("%s\n",s);

}

5. 

题目描述:

输入一行字符串,分别统计其中英文字母、空格、数字和其他字符的个数,并输出。请阅读以下不完整的程序,并在计算机上调试该程序以补足其中的空格,实现其功能。

代码:

#include <stdio.h>

void main( )

{

int a,b,c,d;//a,b,c,d分别用来记录英文字母、空格、数字和其他字符的个数

char s[101];

int i=0;

    gets(s); //输入一个含有空格的字符串存入s中

a=b=c=d=0;

while(s[i]!='\0') //当下标为i的字符不是字符串结束标记时循环

{

        if(s[i]>='A'&&s[i]<='Z' || s[i]>='a'&&s[i]<='z')//如果是一个英文字母字符

            a++;

        else

            if (s[i]==' ')    //如果是一个空格字符

                b++;

            else

                if(s[0]>='0'&&s[i]<='9')    //如果是一个数字字符

                    c++;

                else

                    d++;

    i++;

}

printf("%d %d %d %d\n",a,b,c,d); //输出英文字母、空格、数字和其他字符的个数

}

程序设计

6.

题目标题:陶陶摘苹果。

题目描述:

陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。

输入描述:

输入包括两行数据。第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。

输出描述:

输出只包含一个整数,表示陶陶能够摘到的苹果的数目。

样例输入:

100 200 150 140 129 134 167 198 200 111

110

样例输出:

5

#include <stdio.h>

#include <stdlib.h>

int main()

{

  int a[10];

  int h,i,count;

  for(i=0;i<10;i++)

  {

scanf("%d",&a[i]);

if (a[i]<100 || a[i]>200)

        {

printf("input error!\n");

exit(0);

}

  }

  scanf("%d",&h);

  if (h<100 || h>120)

  {

printf("input error!\n");

exit(0);

  }

  count=0;

  h=h+30;

  for(i=0;i<10;i++)

  {

if(a[i]<=h)

count++;

  }

  printf("%d\n",count);

  return(1);

}

7.

题目标题:歌唱比赛选手成绩计算。

题目描述:

歌唱大赛选手成绩这样计算:去掉一个最高分,去掉一个最低分,将剩下分数的平均值作为选手的最后得分。现假设共有6位评委,都是按百分制打分,请编程计算选手的成绩。

提示:将6个评分存入score数组中。关键是求出其中的最大值max(即最高分)和最小值min(即最低分)。

输入描述:

依次输入6位评委的打分score1~score6,每个scorei都是double型,且满足0≤scorei≤100。

输出描述:

输出一行,表示该选手的最后得分。

样例输入:

78.8 92.3 87.6 94.8 85.8 94.8

样例输出:

90.125

#include <stdio.h>

int main()

{

double score[6],max,min,sum;

int i;

double average;

max=1;

min=1;

for(i=0;i<6;i++)

{

scanf("%lf",&score[i]);

}

max=min=score[0];

    for(i=1;i<6;i++)

    {

      if(score[i]<min)

        min=score[i];

      if(score[i]>max)

max=score[i];

sum=sum+score[i];

    }

average=(sum-max-min)/4;

printf("%lf\n",average);

return 1;

}

8.

题目标题:神秘的字符加、解密技术。

题目描述:

插入式加密法是信息加密中一种简单的加密技术,其方法是在明文字符中插入一些无意义的字母来形成密文单词。例如,对于明文:China,在间隔为1的位置依次插入一个字母而形成密文:Coheifnia。因此,其解密过程与加密过程相反,即从密文中首字符开始取,每间隔1个位置依次取出字符,就得到原始的明文。请编程实现插入式加密法所对应的解密算法,将密文翻译成明文。

提示:定义两个字符数组ci和pl,分别存放密文字符串和明文字符串。解密过程即在字符串ci中,从下标0的字符(首字符)开始,将偶数下标的字符(’\0’之前的)依次取出赋值到字符数组pl中,最后即得到明文字符串。

输入描述:输入一行:密文字符串。

输出描述:输出有一行:翻译后的明文字符串。

样例输入:

Coheifnia

样例输出:

China

#include <stdio.h>

int main()

{

char ci[101],pl[101];

int i=0,j=0;

gets(ci);

while(ci[i]!='\0')

{

      if (i%2==0)

  {

  pl[j]=ci[i];

  j++;

  }

  

  i++;

}

    pl[j]='\0';

puts(pl);

return 0;

}

9.

题目标题:字符串大小写转换。

题目描述:

输入一个长度小于20的不含空格的字符串,然后对该字符串做如下处理:对字符串中的每个字符,如果是大写字母,将其转化为小写;如果是小写字母,将其转化为大写,最后将处理后的字符串输出。

输入描述:

    输入一行:长度小于20的字符串。

输出描述:

    输出一行:处理以后的字符串。

样例输入:

I Love C!

样例输出:

i lOVE c!

#include <stdio.h>

int main()

{

    char a[20];

int i;

gets(a);

    for(i=0;a[i]!='\0';i++)

{

if(a[i]>='a' && a[i]<='z')

a[i]=a[i]-32;

else if(a[i]>='A' && a[i]<='Z')

a[i]=a[i]+32;

}

    puts(a);

return(0);

}

10.

题目标题:打印极值点下标。

题目描述:

在一个整数数组上,对于下标为i的整数,如果它大于所有它相邻的整数,或者小于所有它相邻的整数,则称为该整数为一个极值点,极值点的下标就是i。

注意:数组中的第一个数(下标为0)只要和第二个数(下标为1)不相等,第一个数(下标为0)就是极值点;同理,数组中的最后一个数只要和倒数第二个数不相等,最后一个数也是极值点。

输入描述:

有2行输入:第一行是此数组的元素个数k(4<k<80),第二行是k个整数,每两个整数之间用空格分隔。 

输出描述:

输出为1行:依次对应于数组的所有极值点下标值,下标值之间用空格分隔。

样例输入:

15

12 12 122 112 222 222 222 221 76 36 31 234 256 76 73

样例输出:

2 3 10 12 14

#include <stdio.h>

#include <stdlib.h>

#include <stdio.h>

main( )

{

    const int N=100;

    int times,a[N],n,i;

    scanf("%d",&n);

    for(i=0;i<n;i++)

        scanf("%d",&a[i]);

    if(a[0]<a[1]) printf("0 ");

    for(i=1;i<n-1;i++)

    {

        if(a[i]<a[i-1] && a[i]<a[i+1])

            printf("%d ",i);

        else if(a[i]>a[i-1] && a[i]>a[i+1])

            printf("%d ",i);

    }

    if(a[n-1]<a[n-2]) printf("%d ",n-1);

}

实验4  函数与指针

程序填空

1. 普通参数

题目描述:输入日期的年份和月份,求该月有多少天。要求编写函数int daynum(int year,int month),求出以year为年份、以month为月份的某个月的天数。以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。

代码:

#include<stdio.h>

int main()

{

int daynum(int year,int month);

int y,m,d;

scanf("%d%d",&y,&m);

if(y<1900 || y>=3000 || m<1 || m>12)

{

printf("输入错误!\n");

return 0;

}

    d=daynum(y,m);

printf("此月的天数为%d\n",d);

return 0;

}

int daynum(int year,int month)

{

int days;

switch(month)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:  days=31;  break;

case 4:

case 6:

case 9:

case 11:  days=30;  break;

case 2:   if(year%4==0&&year%100!=0 || year%400==0)

        days=29;

        else 

        days=28;

        break;

}

return days;

}

2. 字符数组参数

题目描述:编写一个函数,用来求字符串s的任意子串。函数原型为

void  SubString ( char  s[ ] , int  start , int  len , char  d[ ] ) ;

其中s是原字符串,d用来存放s中从第start个字符开始( 1≤start≤strlen(s) ),长度为len的子串。以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。

代码:

#include <stdio.h>

#include <string.h>

int  main( )

{

    void  SubString(char  s[ ], int  start, int  len, char  d[ ]);

    char  s[81],d[81];

    int  m,n;

    gets(s);    //输入一个字符串的值存放在字符数组s中,以回车结束

    printf("从第m个字符开始(m≥1)取n个字符构成的子串。请依次输入m、n的值:");

    scanf("%d%d",&m,&n);

    if(m>strlen(s) || n>strlen(s) || m+n>strlen(s)+1)

    {

        printf("m、n值超过了范围!\n");

        printf("m、n值超过了范围!\n");

        return 0;

    }

    SubString(s,m,n,d);

puts(d);

return 0;

}

//从s中第start个字符开始取出长度为len的子串放入d中

void  SubString(char  s[ ], int  start, int  len, char  d[ ])

{

    int k,j;

    for(j=0,k=start-1;j<len;j++,k++)

        d[j]=s[k];

    d[len]='\0';

}

3. 嵌套调用

题目描述:验证哥德巴赫猜想:对任意输入的正整数n,验证6~n以内的偶数都可分解为两个素数(质数)之和。以下程序中,函数bool  divide(int  n)是用来将偶数n分解为两个质数的;若分解成功,则返回true;否则返回false。函数bool IsPrime(int  m)是用来判断m是否为质数的;若是,则函数返回true;否则返回false。请在计算机上调试以下程序,补足其中的空格。

代码:

#include <stdio.h>

int main()

{

int divide(int n);

int i,n;

scanf("%d",&n);

if(n<6)

{

printf("输入数据出错\n");

return 0;

}

for(i=6;i<=n;i+=2)

if(divide(i)==0)  //对i进行分解,并判断分解是否成功

{

printf("猜想错误\n");

return 0;

}

return 0;

}

int divide(int n)

{

int IsPrime(int n);

int i,m;

for(i=3;i<=n/2;i++)

{

if(!IsPrime(i)) continue;

m=n-i;

if(IsPrime(m)) break; //若m是素数,则分解已成功,结束该循环

}

if(i>n/2) return 0;

printf("%d=%d+%d\n",n,i,m);

return 1;

}

int IsPrime(int m)

{

int i;

for(i=2;i<m;i++)

if(m%i==0) return 0;

return 1;

}

4. 全局变量

题目描述:编写一函数addup,统计字符串s中字母、数字、空格和其它字符的个数,并且用几个全局变量记录上述统计结果。以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。

代码:

#include <stdio.h>

int  letter, digit, space, other; //全局变量

int main()

{

void  addup(char  s[ ]);

char  str[101];

printf("输入字符串:\n");

gets(str);

addup(str);

printf("字母个数: %d,数字个数: %d,空格个数: %d,其他字符个数: %d\n",letter,digit,space,other);

return 0;

}

void  addup(char  s[ ])

{

int  i;

letter=digit=space=other=0;

for(i=0;s[i]!='\0';i++)

if(s[i]>='a' && s[i]<='z' || s[i]>='A' && s[i]<='Z') letter++;

else if(s[i]>='0' && s[i]<='9') digit++;

else if(s[i]==32) space++;

else other++;

 }

5. 递归调用

题目描述:

用递归方法求n的阶乘n!,递归公式为:n!=1(n等于0或1),n!= n×(n-1)!  (n大于1)

要求编写递归函数int fact(int n); 以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。

代码:#include <stdio.h>

int main()

{

int fact(int n);

    int n,f;

printf("请输入整数n(n≥0):");

scanf("%d",&n);

f=fact(n);

printf("%d!=%d\n",n,f);

return 0;

}

//求阶乘

int fact(int n)

{

    int f;

if(n==0 || n==1)  f=1;

else    f=n*fact(n-1);

return f;

}

程序设计

6.

题目标题:判断完数。

题目描述:

判断正整数n是否为完数。已知一个数如果恰好等于除它本身外的所有因子之和,这个数就称为完数。此程序要求编写函数bool wanshu(int n),判断n是否为完数,若n是,则函数返回true;否则返回false。然后主函数通过该函数的返回值,在屏幕上输出判断结果。

输入描述:

输入一个正整数n。

输出描述:

若n是完数,则输出"yes";否则输出"no"。

样例输入:

28

样例输出:

yes

#include <stdio.h>

int main()

{

  bool wanshu(int n);

  int n;

  scanf("%d",&n);

  if (wanshu(n))

  

  printf("yes\n");

  else 

  printf("no\n");

  return(0);

}

bool wanshu(int n)

{

  int i,sum;

  sum=0;

  for(i=1;i<n;i++)

  {

    if (n%i==0)

sum=sum+i;

  }

  return(sum==n);

}

7.

题目标题:伦敦奥运会倒计时。

题目描述:

假定现在已是2012年,请编写程序,计算2012年伦敦奥运会倒计时的天数并输出。已知伦敦奥运会的开幕日期是2012年7月27日。用户输入日期的范围必须是2012年1月1日— 2012年7月26日。要求程序中编写函数int CountDown(int year,int month,int day),来计算从用户输入的日期year-month-day到伦敦奥运会开幕日之间的倒数天数。

提示:所求天数= month这个月的总天数-day+(month+1到6月所有这些月份天数之和)+27。

输入描述:

用户输入的日期的格式必须是year  month  day。其中year应是2012,month必须满足1≤month≤7。输入的数据之间用空格隔开。

输出描述:

输出为一行“距离2012伦敦奥运会还有x天。”,其中x为求出的倒计时的天数。如果输入的数据不满足条件,输出“ERROR!”。

样例输入:

2012 2 5

样例输出:

距离2012伦敦奥运会还有173天。

#include <stdio.h>

#include <stdlib.h>

int main()

{

  int CountDown(int year,int month,int day);

  int year,month,day;

  scanf("%d%d%d",&year,&month,&day);

  if (year!=2012 || month<1 || month>7 || day<1 || day>31)

    {

printf("error!\n");

exit(1);

}

  printf("距离2012伦敦奥运会还有%d天\n",CountDown(year,month,day));

  return 0 ;

}

int CountDown(int year,int month,int day)

{

int d,m;

    if(month==7)  return 27-day;

    switch(month)

    {

        case 1:

        case 3:

        case 5:

        case 7:  d=31-day;  break;

        case 4:

        case 6:  d=30-day;  break;

        case 2:  d=29-day;

    }

    for(m=month+1;m<7;m++)

        switch(m)

        {

            case 3:

            case 5:  d+=31;  break;

            case 4:

            case 6:  d+=30;  break;

            case 2:  d+=29;

        }

    d+=27;

    return d;

}

8.

题目标题:神奇的英文回文。

题目描述:

许多英语单词无论是顺读还是倒读,其词形完全一样,都是同一个单词,如dad(爸爸)、noon(中午)、level(水平)等,这样的词称为回文词。在最权威的《牛津英语大词典》里,最长的回文词是tattarrattat,是个象声词,表示敲门的声音。英语的回文句更有趣味(忽略其中的标点符号)。最著名的一句为:“Madam,I’m Adam.”(小姐,我是亚当。)据说,这是亚当在伊甸园里初见夏娃作自我介绍时说的话。

现要求编写一个函数bool huiwen(char *p),判断输入的一个单词是否为回文词。p是指向要输入的字符串的指针,如果是返回true,否则返回false。

输入描述:输入一个单词后回车。

输出描述:若该单词是回文词,则输出“yes”;否则输出“no”。

样例输入:

level

样例输出:

yes

#include <stdio.h>

int main()

{

  bool huiwen(char *p);

  char s[100];

  gets(s);

  if (huiwen(s))

  printf("yes\n");

  else printf("no\n");

  return 0;

}

bool huiwen(char *p)

{

int len=0;

while(p[len]) len++;

int i=0,j=len-1;

for(;i<j;i++,j--)

        if(p[i]!=p[j])

            return 0;

    return 1;

}

9.

题目标题:生成指定字符构成的字符串。

题目描述:

编写一个函数,用于生成一个由若干个指定字符构成的字符串,其原型为:

void mystr(char c,int n, char *p);其中,参数c是构造字符串的字符,n是字符串中字符的个数,p是生成的字符串的首地址。

要求:编写主函数,在主函数中进行字符和字符个数的输入,然后再调用mystr函数生成字符串,最后在主函数中将生成的字符串输出。

输入描述:

    输入字符c和正整数n,之间用空格隔开。(正整数n的值不超过50)

输出描述:

    输出为由n个字符c构成的字符串

样例输入:

# 4

样例输出:

####

#include <stdio.h>

int main()

{

  void mystr(char c,int n, char *p);

  char s[50],c,*p;

  int i,n;

  printf("请输入字符字符和个数");

  scanf("%c%d",&c,&n);

  mystr(c,n,s);

  puts(s);

  return 0 ;

}

void mystr(char c,int n, char *p)

{

  int i;

  for(i=0;i<n;i++)

  {

*p=c;

    p++;

  }

  *p='\0';

}

10. 递归调用

题目标题:Fibonacci数列问题。

题目描述:

有一个有趣的古典数学问题:有一对兔子,从出生后第3个月起每个月都生1对兔子,小兔子长到第3个月后每个月又生1对兔子。假设所有兔子都不死,问每个月兔子的总对数为多少?

提示:不满1个月的为小兔子,满1个月不满2个月的为中兔子,满3个月以上的为老兔子。每对老兔子每个月会生1对小兔子。因此,每个月的兔子总数依次为1,1,2,3,5,8,13,…。这就是Fibonacci数列。该数列的递归定义如下:f(n)=                           1 (n等于1或2);f(n)= f(n-1)+ f(n-2)  (n>2)

请编写递归函数int fib(int n),求出第n个月兔子的总对数。

输入描述:

输入一个正整数n,表示求第n个月兔子的总对数。 

输出描述:

输出为一行“第n个月兔子的总对数为f”,f值为求出的数列第n项的值f(n)。

样例输入:

2

样例输出:

第2个月兔子的总对数为1

#include <stdio.h>

#include <stdlib.h>

int main()

{

  int fib(int n);

  int n,ans;

  scanf("%d",&n);

   if (n<=0)

    {

    printf("input error!\n");

    exit(0);

}

  ans=fib(n);

  printf("第%d个月兔子的总对数为%d\n",n,ans);

  return 0;

}

int fib(int n)

{

  if (n==1 || n==2)

  return 1;

  else return fib(n-1)+fib(n-2);

}

实验5  结构体、指针与文件

程序填空

1. 指针数组

题目描述:从键盘任意输入一个整型表示的月份值,用指针数组编程输出该月份的英文表示,若输入的月份值不在1~12之间,则输出“Illegal month”。以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。

代码:

#include<stdio.h>

int main()

{

    char *monthName[13]={"Illegal month",

        "January","February","March","April","May","June",

        "July","August","September","October","November","December"};

    int m;

    printf("输入一个月份值(整型表示):");

    scanf("%d",&m);

    if(__(1)__)

        printf("%s\n",monthName[0]);

    else

        printf("%s\n",__(2)__);

    return 0;

}

2. 二维数组作为函数参数

题目描述:编写一个函数,用来求出一个n×n阶矩阵的转置矩阵。函数原型为

void Transpose(int a[][N],int n);

以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。

代码:

#include<stdio.h>

#include<stdlib.h>

#define N 100

int main()

{

    void Transpose(int a[][N],int n);

    int d[N][N];

    int n,i,j;

    scanf("%d",&n);

    for(i=0;i<n;i++)

        for(j=0;j<n;j++)

            d[i][j]=(int)rand()%100;

    printf("原来的矩阵为:\n");

    for(i=0;i<n;i++)

    {

        for(j=0;j<n;j++)

            printf("%4d",d[i][j]);

        printf("\n");

    }

    Transpose(__(1)__,n);

    printf("转置后的矩阵为:\n");

    for(i=0;i<n;i++)

    {

        for(j=0;j<n;j++)

            printf("%4d",d[i][j]);

        printf("\n");

    }

    return 0;

}

void Transpose(int a[][N],int n)

{

    void Swap(int *pa,int *pb);

    int i,j;

    for(i=0;i<n;i++)

        for(j=0;j<i;j++)

            Swap(__(2)__);

}

void Swap(int *pa,int *pb)

{

    int t;

    t=*pa;

    __(3)__;

    *pb=t;

}

3. 结构体

题目描述:定义一个复数MyComplex结构体类型,它包含实部real和虚部imag 两个个成员,并且可以进行复数的加减运算。以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。

代码:

#include<stdio.h>

struct MyComplex

{

    float real,image;

};

void Display(struct MyComplex c)    /* 输出复数 */

{

    printf("%.2f",c.real);

    if(c.image>0) printf("+%.2f",c.image);

    else printf("-%.2f",__(1)__);

}

__(2)__ Add(struct MyComplex x,struct MyComplex y)

{

    struct MyComplex z;

    z.real=x.real+y.real;

    z.image=x.image+y.image;

    return __(3)__;

};

__(4)__ Sub(struct MyComplex x,struct MyComplex y)

{

    struct MyComplex z;

    z.real=x.real-y.real;

    z.image=x.image-y.image;

    return __(5)__;

};

int main()

{

    struct MyComplex c1={1,2},c2={3,4},c3;

    c3=Add(c1,c2);

    printf("\n两个复数相加的结果为:");Display(c3);

    c3=__(3)__;

    printf("\n两个复数相减的结果为:");Display(c3);

    return 0;

}

4. 结构体指针

题目描述:定义一个时钟结构体类型,它包含“时、分、秒”3个成员,然后编写一个时钟模拟显示程序。以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。

代码:

#include<stdio.h>

struct Clock

{

    int second,minute,hour;

};

void update(struct Clock *pc)

{

    pc->second++;

    if(pc->second==60)

    {

        __(1)__;

        pc->minute++;

    }

    if(__(2)__)

    {

        pc->minute=0;

        pc->hour++;

    }

    if(pc->hour==24)

    {

        __(3)__;

    }

}

void display(struct Clock *pc)

{

    printf("%2d:%2d:%2d\n",pc->hour,pc->minute,pc->second);

}

void delay(struct Clock *pc)

{

    int t;

    for(t=0;t<100000000;t++);   /* 用循环体为空语句的循环实现延时 */

}

int main()

{

    int i;

    struct Clock clock={0,0,0};

    for(i=0;i<1000000;i++)  /* 利用循环结构,控制时钟运行的时间 */

    {

        update(&clock);     /* 更新时分秒显示值*/

        display(&clock);    /* 显示时分秒 */

        delay(&clock);      /* 模拟延迟时间为1秒 */

    }

    return 0;

}

5. 复制文件

题目描述:根据程序提示重键盘输入一个已存在的文本文件的完整文件名,再输入一个新文本文件的完整文件名,然后将已存在的文本文件中的内容全部复制到新文本文件中。以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。

代码:

#include<stdio.h>

#include<stdio.h>

#include<stdlib.h>

int main()

{

    char fRname[21],fWname[21];

    char ch;

    FILE *fpread,*fpwrite;

    printf("请输入要读取的文本文件名称:");

    gets(fRname);

    if((fpread=fopen(fRname, __(1)__))==NULL)

    {

        printf("打开%s文件失败!\n",fRname);

        exit(0);

    }

    printf("请输入要写入的文本文件名称:");

    gets(fWname);

    if((fpwrite=fopen(__(2)__,"w"))==NULL)

    {

        fclose(fpread);

        printf("打开%s文件失败!\n",fWname);

        exit(0);

    }

    while((ch=fgetc(fpread))!= __(3)__)

    {

        fputc(ch,fpwrite);

    }

    fclose(fpread);

    fclose(fpwrite);

    return 0;

}

程序设计

6.

题目标题:星期几

0

Sunday

1

Monday

2

Tuesday

3

Wednesday

4

Thursday

5

Friday

6

Saturday

题目描述:

任意输入英文的星期几,通过查找如有图所示的星期表,输出其对应的数字,若查到表尾,仍未找到,则输出错误提示信息“Error!”。

要求用指针数组实现。

7.

题目标题:m×n阶矩阵的转置。

题目描述:

在程序填空题2的基础上,按下面的函数原型编程计算并输出m×n阶矩阵的转置矩阵。其中m和n的值由用户从键盘输入。已知m和n的值都不超过10。

void Transpose(int a[][N],int at[][M],int m,int n);

其中a用来存放原来的m×n阶矩阵,at用来存放转置后的n×m阶矩阵。

8.

题目标题:分数的计算。

题目描述:

参考程序填空题3,定义一个表示分数的结构体,它包含表示“分子、分母、符号(正为1,负为-1)”的3个成员。按照以下主函数的功能来设计相关的函数,使程序能正确运行并得到要求的结果。

int main()

{

    struct Fraction Add(struct Fraction x,struct Fraction y);

    struct Fraction Sub(struct Fraction x,struct Fraction y);

    struct Fraction f1={1,2,1},f2={3,4,1},f3;  /* f1=1/2,f2=3/4 */

    f3=Add(f1,f2);

    printf("\n两个分数相加的结果为:");Display(f3); /* 计算结果显示为5/4 */

    f3=Sub(f1,f2);

    printf("\n两个分数相减的结果为:");Display(f3); /* 计算结果显示为-1/4 */

    return 0;

}

9.

题目标题:日期结构体的设计。

题目描述:

参考程序填空题4,定义一个日期结构体,它包含表示“年、月、日”的3个成员。按照以下主函数的功能来设计相关的函数,使程序能正确运行并得到要求的结果。

int main()

{

    struct Date date1;

    int y,m,d;

    scanf("%d%d%d",&y,&m,&d);   /* 输入年月日值,并假设输入的日期是合法的 */

    SetDate(&date1,y,m,d);  /* 设置data1的年月日为y,m,d */

    Display(date1);   /* 按year-month-day的格式显示date1的年月日 */

    AddOneday(&date1);  /* 将date1的日期增加一天 */

    Display(date1); /* 显示增加一天后的日期值 */

    return 0;

}

样例输入:

2014 12 31

样例输出:

2014-12-31

2015- 1- 1

10.

题目标题:文件追加。

题目描述:

根据地是从键盘输入一个已存在的文本文件的完整文件名,再输入另一个已存在的文本文件的完整文件名,然后将第一个文本文件的内容追加到第二个文本文件的原内容之后。

​​​​​​​

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值