0
点赞
收藏
分享

微信扫一扫

C语言综合练习


1.互换两个变量的值。

#include<stdio.h>

void main()

{

 float num1,num2,temp;

 printf("/n请输入两个数:");

 scanf("%f %f",&num1,&num2);

 printf("/n交换前的两个数是:%.2f %.2f/n",num1,num2);

 //交换两个数。

 temp=num1;

 num1=num2;

 num2=temp;

 printf("交换后的两个数是:%.2f %.2f/n",num1,num2);


}


2.要求输入员工的基本工资,其中物价津贴占基本工资的40%,房屋津贴占基本工资的20%,显示员工的详细信息与实际工资。

#include<stdio.h>

void main()

{

 float basic,Prsubsidy,housesubsidy,salary;

 printf("/n请输入基本工资:");

 scanf("%f",&basic);

 Prsubsidy=basic*40/100;

 housesubsidy=basic*20/100;

 salary=basic+Prsubsidy+housesubsidy;

 //显示该员工的详细信息。

 printf("/n以下是该员工的工资金详细信息/n");

 printf("基本工资为:%.2f/n物价津贴为:%.2f/n房屋津贴:%.2f/n实际工资:%.2f/n",basic,Prsubsidy,housesubsidy,salary);


}

3.大小写字母转换。

#include<stdio.h>

void main()

{

 char ch,to_upper,to_lower;

 printf("/n请输入一个字母:");

 ch=getchar();

 if(ch>='a' && ch<='z')

 {

  to_upper=ch-32;

  printf("/n它的大写字母是:%c/n",to_upper);

 }

 if(ch>='A' && ch<='Z')

 {

  to_lower=ch+32;

  printf("/n它的小写字母是:%c/n",to_lower);

 }


}

4.要求输出华氏度,再转换为摄氏度,并将两者显示出来。

#include<stdio.h>

void main()

{

 float fahrenheit,degrees;

 printf("/n请输入华氏度数:");

 scanf("%f",&fahrenheit);

 degrees=5/9.0*(fahrenheit-32);

 printf("/n华氏度为:%.2f/n摄氏度为:%.2f/n",fahrenheit,degrees);


}

5.输入一个四位数的数字,将该数每一位相加求和。

#include<stdio.h>

void main()

{

 int num,ge,shi,bai,qian;

 float sum=0;

 printf("/n请输一个四位数:");

 scanf("%d",&num);

 ge=num%10;

 shi=(num/10)%10;

 bai=(num/100)%10;

 qian=num/1000;

 sum=ge+shi+bai+qian;

 printf("/n这个数的个位:%d 十位:%d 百位:%d 千位:%d /n",ge,shi,bai,qian);

 printf("/n各位数之和为:%.2f/n",sum); 

}

6.接收用户输入数值,但以字符形式表示出来。

#include<stdio.h>

void main()

{

 int x;

 char ch;

 printf("/n请输入一个整数:");

 scanf("%d",&x);

 printf("/n%d数字对应的字符是:/n",x);

 ch=putchar(x);

 printf("/n");

}

7.对输入的三个数进行排序。

#include<stdio.h>

void main()

{

 int x,y,z;

 int temp;

 printf("/n请输入三个整数:");

 scanf("%d %d %d",&x,&y,&z);

 //进行排序。

 if(x>y)

 {

  temp=x;

  x=y;

  y=temp;

 }

 if(x>z)

 {

  temp=x;

  x=z;

  z=temp;

 }

 if(y>z)

 {

  temp=y;

  y=z;

  z=temp;

 }

 printf("/n排序后的三个数是:%d %d %d/n",x,y,z);

}

8.某超市规则:

所有的本超市的会员购买高度享受9折优惠;对于非会员的但购物满100元的也可以享受9折优惠;本身是会员也购物满100元则可享受8折的优惠。

#include<stdio.h>

void main()

{

 char ch;

 float cost1,cost2,cost3;

 double total_cost=0,discount=0,pay=0;

 printf("/n是否是会员(y/n):");

 fflush(stdin);

 scanf("%c",&ch);

 printf("/n请输入第一件商品的价格:");

 scanf("%f",&cost1);

 printf("/n请输入第二件商品的价格:");

 scanf("%f",&cost2);

 printf("/n请输入第三件商品的价格:");

 scanf("%f",&cost3);

 total_cost=cost1+cost2+cost3;

 if(ch=='y' || total_cost>=100)

 {

  discount=total_cost*0.1;

 }

 if(ch=='y' && total_cost>=100)

 {

  discount=total_cost*0.2;

 }

 pay=total_cost-discount;

 printf("/n购物总额:%.2f元/n",total_cost);

 printf("/n折扣金额:%.2f元/n",discount);

 printf("/n应付总额:%.2f元/n",pay);

}

9.银行提供了整存取定期储蓄业务,其存期分为一年(年利率2.25%)、两年(年利率2.7%)、三年(年利率3.24%)、五年(年利率3.6%),到期凭存单支取本息。

利息=本金*年利率*存期

本息本金+利息

#include<stdio.h>

void main()

{

 char period;//存期。

 float my_money,APR_money,total_money;//本金。

 printf("/n请在一年、两年、三年、五年中输入一个:");

 scanf("%c",&period);

 printf("/n请输入你的本金:");

 scanf("%f",&my_money);

 switch(period)

 {

  case '1':

   APR_money=my_money*2.25/100*1;

   break;

  case '2':

   APR_money=my_money*2.7/100*2;

   break;

  case '3':

   APR_money=my_money*3.24/100*3;

   break;

  case '5':

   APR_money=my_money*3.6/100*5;

   break;

  default:

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

 }

 total_money=my_money+APR_money;

 printf("您收入的利息为:%.2f/n本息为:%.2f/n",APR_money,total_money);

}

10.通过输入1~7判断星期,并显示问候语。

#include<stdio.h>

void main()

{

 char ch;

 printf("/n请输入1~7表示星期:");

 ch=getchar();

 if(ch=='6' || ch=='7')

  printf("/n周末愉快!/n");

 else if(ch>='1' && ch<='5')

  printf("/n工作日愉快!/n");

 else

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

}

11.用户购买商品的数量大于等于10件,并购物总额大于等于10000元时,商店给10%的折扣。接收购物数量与总金额,要求计算出折扣额和应付金额。

#include<stdio.h>

void main()

{

 int num;

 float total_cost=0,discount=0,pay=0;


 printf("/n请输入购物数量与总金额:");

 scanf("%d %f",&num,&total_cost);

 if(num>=10 && total_cost>=10000)

 {

  discount=total_cost*10/100;

  pay=total_cost-discount;

  printf("/n折扣额是:%.2f/n应付金额是:%.2f/n",discount,pay);

 }

 else

  printf("/n不符合优惠要求!/n");


}

12.通过输入和差表达式求其值。

#include<stdio.h>

void main()

{

 float num1,num2,jia,jian;

 char op;

 printf("/n请输入要计算两数和或差的表达式:");

 scanf("%f%c%f",&num1,&op,&num2);

 switch(op)

 {

  case '+':

   jia=num1+num2;

   printf("两数和为:%.2f/n",jia);

   break;

  case '-':

   jian=num1-num2;

   printf("两数差为:%.2f/n",jian);

   break;

  default:

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

 }

}

13.某公司员工工资包括底薪和奖金两部分,每个员工的底薪都是1000元,而奖金取决于员工的级别。

等级 奖金占底薪的百分比

A 45%

B 40%

C 30%

D 25%

根据员工的级别计算应付给员工的工资。

#include<stdio.h>

#define BASEPAY 1000

void main()

{

 char grade;

 float total;

 printf("/n请输入员工的(A-D)级别:");

 grade=getchar();

 switch(grade)

 {

  case 'A':

   total=BASEPAY+BASEPAY*45/100;

   printf("/n该员工收到的工资是:%.2f/n",total);

   break;

  case 'B':

   total=BASEPAY+BASEPAY*40/100;

   printf("/n该员工收到的工资是:%.2f/n",total);

   break;

  case 'C':

   total=BASEPAY+BASEPAY*30/100;

   printf("/n该员工收到的工资是:%.2f/n",total);

   break;

  case 'D':

   total=BASEPAY+BASEPAY*25/100;

   printf("/n该员工收到的工资是:%.2f/n",total);

   break;

  default:

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

 }

}

14.输入某年某月某日,判断应付给该员工的工资。(若是闰年且输入月分大于3时,需多加一天)

#include<stdio.h>

void main()

{

 int year,month,day;

 int sumday=0;

 printf("/n请输入年份、月份、日:");

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

 if((year%4==0 && year%100!=0)||(year%400==0)&&(month>=3))//判断是否是闰年,闰2月。

 {

  sumday=(month-1)*30+day+1;

  printf("/n这一天是这一年的第 %d 天/n",sumday);

 }

 else

 {

  sumday=(month-1)*30+day;

  printf("/n这一天是这一年的第 %d 天/n",sumday);

 }

}

15.计算1~n个数的和。

#include<stdio.h>

void main()

{

 int number;

 int sum=0;

 printf("/n请输入一个正整数:");

 scanf("%d",&number);

 if(number>0)

 {

  while(number>0)

  {

   sum+=number;

   number--;

  }

  printf("/n1~n个数的和为:%d/n",sum);

 }

 else

  printf("/n输入数据无效!/n");

}

16.用于接收用户输入的数,然后显示从0到该数为止表示的所有字符。

#include<stdio.h>

void main()

{

 char ans;

 int inum,cnt;

 ans='y';

 while(ans=='y')

 {

  ans=' ';

  printf("请输入一个数:");

  scanf("%d",&inum);

  cnt=0;

  while(cnt<inum)

  {

   printf("/n%d:%c/n",cnt,cnt);

   cnt++;

  }

  printf("/n你是否要继续(y/n)?");

  fflush(stdin);

  scanf("%c",&ans);

 }

}

17.输入一个正整数,求该数的阶乘。询问用户是否愿意继续。

#include<stdio.h>

void main()

{

 int num;

 int chengnum=1;

 char ch; //以while()形式出现时,char ch='y'; while(ch=='y')

 do

 {  

  ch=' ';

  printf("/n请输入一个阶乘顶数:");

     scanf("%d",&num);

  while(num>0)

  {

   chengnum*=num;

   num--;

  }

  printf("/n阶乘积为:%d/n",chengnum);

  printf("/n还要继续吗(y/n)?");

  fflush(stdin);//清空缓存数据。

  ch=getchar();


 }while(ch=='y' || ch=='Y');


}

18.输入一个正整数,然后求该数的各位数之和。

#include<stdio.h>

void main()

{

 int n,sum=0,right_digit;

 printf("/n请输入一个正整数:");

 scanf("%d",&n);

 do

 {

  right_digit=n%10;

  sum+=right_digit;

  n/=10;

 }while(n>0);

 printf("/n各个数位之和是:%d/n",sum);


}

19.将一个正整数分解质因数。

#include<stdio.h>

void main()

{

 int n,k;

 printf("/n请输入一个要分解的正整数:");

 scanf("%d",&n);

 for(k=2;k<=n;)

 {

  if(n%k==0)

  {

   n=n/k;

   printf("%d ",k);

  }

  if(n%k!=0)

  {

   k++;

  }

 }

 printf("/n");

}

20.输入某个班级学员的成绩,计算该班学员的平均分。班级的人数要求输入。

根据输入人数分别录入学员成绩。计算该班学员平均分,并显示出来。最后询问用户是否继续,直到用户自己结束程序退出。

#include<stdio.h>

void main()

{

 char classno,ch;

 int students,no,score;

 float ave,sum;

 do

 {

  printf("/n请输入班级号:");

  fflush(stdin);//询问是否继续中一定要清空数据缓存。

  scanf("%c",&classno);

  printf("/n请输入该班级的学员总数:");

  fflush(stdin);//询问是否继续中一定要清空数据缓存。

  scanf("%d",&students);

  no=1,sum=0;

  while(no<=students)

  {

   printf("/n请输入学号 %d 的成绩:",no++);

   fflush(stdin);

   scanf("%d",&score);

   sum+=score;

  }

  ave=sum/students;

  printf("/n该班学员的平均分成绩为:%.2f",ave);

  printf("/n是否输入另一个班级的成绩(y/n)?");

  fflush(stdin);//询问是否继续中一定要清空数据缓存。

  ch=getchar();

 }while(ch=='y' || ch=='Y');

}

21.用于接收用户输入10个字符,统计其中大写字母和小写字母的个数。比较大写字母与小写字母的个数,并显示相应的消息。

#include<stdio.h>

#define N 10

void main()

{

 char inp;

 int i,low,upp;

 printf("/n请输入一系列字符:");

 low=0;

 upp=0;

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

 {

  inp=getchar();

  if(inp>='a' && inp<='z')

   low++;

  else if(inp>='A' && inp<='Z')

   upp++;

  putchar(inp);

 }

 if(low>upp)

  printf("/n小写字母比大写字母多%d个。/n",low-upp);

 else if(upp>low)

  printf("/n大写字母比小写字母多%d个/n",upp-low);

 else

  printf("/n小写字母和大写字母%d个数相等。/n",low);

}

22.接收10个数,求这10个数的和。用户可以通过输入999终止程序,并显示输入的数的和。

#include<stdio.h>

void main()

{

 int inum,sum,cnt;

 sum=0;

 printf("/n请输入10个数,或输入999中止输入。/n");

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

 {

  scanf("%d",&inum);

  if(inum==999)

  {

   break;

  }

  sum+=inum;

 }

 printf("/n这%d个数的和为:%d/n",cnt,sum);

}

23.打印以下星号:

   *

  * *

 *   *

*     *

 *   *

  * *

   *

#include<stdio.h>

void main()

{

 int i,j,k;

 //i用于控制行数。

 //j用于控制空格。

 //k用于控制星号。

 //先打印前4行。

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

 {

  for(j=1;j<=4-i;j++)

  {

   printf(" ");

  }

  for(k=1;k<=2*i-1;k++)

  {

   if(k==1 || k==2*i-1)//控制打印边界的星号。

   {

    printf("*");

   }

   else

   {

    printf(" ");

   }

  }

  printf("/n");

 }

 //再打印后3行。

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

 {

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

  {

   printf(" ");

  }

  for(k=1;k<=7-2*i;k++)

  {

   if(k==1 || k==7-2*i)

   {

    printf("*");

   }

   else

   {

    printf(" ");

   }

  }

  printf("/n");

 }

}

24.最多接收10个数,并求出其中所有正数的和。用户可以通过输入999终止程序,统计用户输入的正数个数,并显示这些正数的和。

#include<stdio.h>

void main()

{

 int num,sum=0;

 int count=0;

 int i;

 printf("/n请输入10个数:/n");

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

 {

  scanf("%d",&num);

  if(num==999)

  {

   printf("退出本程序!");

   break;

  }

  if(num>0)

  {

   count++;

   sum+=num;

  }

 }

 printf("/n输入的数中有%d个正数,这些正数的和为:%d/n",count,sum);

}


25.打印如下图形:

请输入一个数:5

55555

4444

333

22

1

1

22

333

4444

55555

#include<stdio.h>

void main()

{

 int i,j;

 int num,count=0;

 printf("/n请输入一个数:");

 scanf("%d",&num);

 count=num;

 printf("/n");

 //打印上三角形。

 for(i=num;i>=1;i--)

 {

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

  {

   printf("%d",num);

  }

  num--;

  printf("/n");

 }

 printf("/n");

 //打印下三角形。

 num+=1;

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

 {

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

  {

   printf("%d",num);

  }

  num++;

  printf("/n");

 }

}

26.求1!+2!+3!+...+10!的和。

#include<stdio.h>

#define N 10

void main()

{

 int i,j;

 float cheng=1;

 float sum=0;

 printf("/n1!+2!+3!+...+10!的和/n");

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

 {

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

  {

   cheng*=j;

  }

  sum+=cheng;

  printf("%d!=%-10.2f ",i,cheng);

  cheng=1;

  if(i%4==0)

   printf("/n");

 }

 printf("/n");

 printf("/n1!+2!+3!+...+10!=%.2f/n/n",sum);

}


27.以表格形式显示1到10的乘法表。

#include<stdio.h>

void main()

{

 int i,j;

 int cheng=1;

 printf("/n乘法表:/n/n");

 printf(" X  |   1   2   3   4   5   6   7   8   9  10/n");

 printf("----------------------------------------------/n");


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

 {

  printf(" %-2d |",i);

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

  {

   cheng=i*j;

   printf("%4d",cheng);

   cheng=1;

  }

  printf("/n");

 }

}


28.接收10件商品的每一件价格,并显示出每件商品价格和应付金额。

#include<stdio.h>

void main()

{

 float price[10];

 float sum=0;

 int i;

 printf("/n请输入每一件商品的价格:");

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

 {

  scanf("%f",&price[i]);

  sum+=price[i];

 }

 printf("/n每件商品的价格分别为:/n");

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

 {

  printf("%7.2f",price[i]);

 }

 printf("/n");

 printf("/n应付总金额:%.2f/n",sum);

}

29.一空公司有四个销售员,每位销售员负责销售四件商品。接收每名销售员销售的各类产品的数量。

打印产品销售明细表,明细表包括每类产品的销售总数,以及每位销售的产品数量占总销售量的百分比。

#include<stdio.h>

void main()

{

 int salesman[4][4];

 char product;

 int i,j,sum=0;

 double grand_total=0.0;

 double factor,temp1,temp2,temp3,temp4;

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

 {

  product='A';

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

  {

   printf("/n请输入销售员 %d 销售产品 %c 的数量:",i+1,product);

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

   grand_total+=salesman[i][j];

   product++;

  }

  printf("/n");

 }

 printf("/n产品销售汇总表/n");

 printf("----------------------------------------------/n");

 printf("产品    /tA/tB/tC/tD/n");

 printf("----------------------------------------------/n");

 printf("销售总数");

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

 {

  sum=0;

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

  {

   sum+=salesman[i][j];

  }

  printf("/t%d",sum);

 }

 printf("/n/n/n");

 printf("/n产品销售百分比明细表/n");

 printf("-------------------------------------------------------/n");

 printf("销售员                 产品/n");

 printf("--------------------------------------------------------/n");

 printf("            A       B       C       D     合计(销售员)/n");

 factor=100/grand_total;

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

 {

  temp1=salesman[i][0]*factor;

  temp2=salesman[i][0]*factor;

  temp3=salesman[i][0]*factor;

  temp4=salesman[i][0]*factor;

  printf("/n%d  /t%6.2f /t%6.2f /t%6.2f /t%6.2f /t%6.2f/n",i+1,temp1,temp2,temp3,temp4,temp1+temp2+temp3+temp4);

 }

}

30.将一个数组中的数据逆序,并输出原始数组中听数据及逆序后数组中的数据。

#include<stdio.h>

void main()

{

 int num[10];

 int i;

 printf("/n请输入10个数据:");

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

 {

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

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

 }

 printf("/n逆序后的数据为:/n");

 for(i=9;i>=0;i--)

 {

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

 }

 printf("/n");

}

31.打印杨辉三角形。

#include<stdio.h>

void main()

{

 int num[10][10];

 int i,j;

 printf("/n打印杨辉三角形/n");

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

 {

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

  {

   if(i>1 && j>0 && j<i)

    num[i][j]=num[i-1][j-1]+num[i-1][j];

   else

    num[i][j]=1;

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

  }

  printf("/n");

 }

}


32.在一个已经排好的数组。输入一个数,在数组中查找 是否有这个数,如果有则将该数从数组中删除并不影响原数组的排序;如果没有则显示数组中没有这个数!

#include<stdio.h>

void main()

{

 int sernum,num[5]={1,2,3,4,5};

 int i,j,flag=0;

 printf("/n输入要查找的数字:");

 scanf("%d",&sernum);

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

 {

  if(num[i]==sernum)

  {

   flag=1; 

   j=i+1;

  }

  if(flag)

  {

   num[i]=num[i+1];

  }


 }

 if(flag)

  printf("/n数组第 %d 个元素存在你要查找的数字!/n",j); 

 else

  printf("/n数组中没有你要查找的数字!/n");

 printf("/n删除查找到的元素数字后为:");

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

  printf("%d ",num[i]);

 printf("/n");

}


33.要求用户输入两个正数边界值,输出这两个数之间的所有偶数。如果输入的边界值是偶数,那么也应该将这两个数输出。

#include<stdio.h>

void main()

{

 int num1,num2;

 int *ptr;

 printf("/n请输入区间的下限:");

 scanf("%d",&num1);

 printf("/n请输入区间的上限:");

 scanf("%d",&num2);

 ptr=&num1;

 printf("/n从 %d 到 %d 之间的偶数有:/n",num1,num2);

 for((*ptr);*ptr<=num2;(*ptr)++)

 {

  if((*ptr)%2==0)

  {

   printf("%4d",*ptr);

  }

 }

 printf("/n");

}

34.将班里的n个人围成一圈,顺序编号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,

然后从下一个人重新开始,最后留下的那个人就被选为班长。请问按照这个规则,选出的班长是原来编号的第几号。

#include<stdio.h>

#define MAX 50

void main()

{

 int i,k,n,m,num[MAX],*p;

 printf("/n请输入总人数:");

 scanf("%d",&n);

 p=num;

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

 {

  *(p+i)=i+1;//指定数组中n个人的编号是1到n。

 }

 i=0,k=0,m=0;

 while(m<n-1)

 {

  if(*(p+i)!=0)

   k++;

  if(k==3)

  {

   *(p+i)=0;

   k=0;

   m++;

  }

  i++;

  if(i==n)

   i=0;

 }

 while(*p==0)

 {

  p++;

 }

 printf("/n编号为 %d 的学员被当选为班长/n",*p);

}

35.从键盘输入5个整数存入一个数组。用指针的方法从中查找某个整数,找到时输出该数所在的下标,否则输出“没有找到”。

#include<stdio.h>

void main()

{

 int i,n,t,num[5],*p;

 bool flag=false;

 printf("/n请输入5个整数:");

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

 {

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

 }

 printf("/n输入要查找的整数:");

 scanf("%d",&n);

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

 {

  if(num[i]==n)

  {

   flag=true;

   t=i;

  }

 }

 if(flag)

  printf("/n该数所在的下标为:%d/n",t);

 else

  printf("/n该数没有找到/n");

}


36.将字符数组arr1[5]={'H','e','l','l','o'}和arr2[5]={'W','o','r','l','d'}两个数组用指针打印合并保存在arr3数组中。

#include<stdio.h>

void main()

{

 char arr1[5]={'H','e','l','l','o'};

 char arr2[5]={'W','o','r','l','d'};

 char arr3[15];

 int i;

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

 {

  arr3[i]=arr1[i];

 }

 i=0;

 while(i<5)

 {

  arr3[i+5]=arr2[i];

  i++;

 }

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

  printf("%c",arr3[i]);

 printf("/n");

}

#include<stdio.h>

void main()

{

 char arr1[5]={'H','e','l','l','o'};

 char arr2[5]={'W','o','r','l','d'};

 char arr3[15],*p;

 int i;


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

  {

   p=&arr1[i];

   arr3[i]=*p;

  }

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

  {

   p=&arr2[i];

   arr3[i+5]=*p;

  }

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

  printf("%c",arr3[i]);

 printf("/n");

}

37.接收输入一个数组的5个值,要求以指针实现左右反转输出。

#include<stdio.h>

void main()

{

 int num[5]={12,56,78,34,21};

 int i,*ptr1,*ptr2,temp;

 printf("/n原如数组:/n");

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

 {

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

 }

 printf("/n左右反转顺序:/n");

 for(i=0;i<5/2;i++,ptr1++,ptr2++)

 {

  ptr1=&num[i];

  ptr2=&num[5-i-1];


  temp=*ptr1;

  *ptr1=*ptr2;

  *ptr2=temp;

 }

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

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

 printf("/n");

}

38.接收两个数组的值,将这两个数组中的值依次相加保存在第三个数组中,要求用指向数组的指针实现。

#include<stdio.h>

void main()

{

 int num1[5],num2[5],num3[5];

 int i;

 int *ptr1,*ptr2;

 printf("/n请输入num1的值:");

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

 {

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

 }

 printf("/n请输入num2的值:");

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

 {

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

 }

 ptr1=num1;

 ptr2=num2;

 printf("/n数组num1和num2各元素之和分别排列为:/n");

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

 {

  num3[i]=(*ptr1++)+(*ptr2++);

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

 }

 printf("/n");

}

39.输入一个数,使用内置函数pow()求该数从1到10次幂的值,然后求出该数所有次幂的和。

#include<stdio.h>

#include<math.h>

void main()

{

 int n,i;

 double power,sum=0;

 printf("/n请输入一个数:");

 scanf("%d",&n);

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

 {

  power=pow(n,i);

  printf("%d 的 %d 次幂为:%5.0f/n",n,i,power);

  sum+=power;

 }

 printf("/n所有次幂和为:%5.0f/n",sum);

}


40.完成一个十进制转二进制、十进制转八进制、十进制转十六进制。根据用户的选择作相应的操作,直到用户输入0才退出程序。

#include<stdio.h>

void Hexconver(int );

void main()

{


 int choose;

 do

 {

  printf("/n0、退出/n1、十进制->二进制/n2、十进制->八进制/n3、十进制->十六进制/n");

  printf("/n请选择功能:");

  fflush(stdin);

  scanf("%d",&choose);

  switch(choose)

  {

   case 0:

    printf("/n退出本程序!/n");

    break;

   case 1:

    Hexconver(2);

    break;

   case 2:

    Hexconver(8);

    break;

   case 3:

    Hexconver(16);

    break;

   default:

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


  }


 }while(choose);

}

void Hexconver(int s)

{

 int p[10],count,k,i;

 int num;

 k=s;

 printf("/n请输入一个十进制整数:");

 scanf("%d",&num);

 count=0;

 while(num!=0)

 {

  p[count]=num%k;

  if(p[count]>=10)

  {

   if(p[count]==10)

    p[count]='A';

   else

    p[count]='A'+(p[count]-10);

  }

  num/=k;

  count++;

 }

 printf("/n转换为 %d 进制:",k);

 for(i=count-1;i>=0;i--)

 {

  if(p[i]>=10)

  {

   if(p[i]==10) 

   {


    printf("%c",p[i]);

   }

   else

   {


    printf("%c",p[i]);

   }

  }

  else

   printf("%d",p[i]);

 }

 printf("/n");

}

41.编写一个用于接收3到10之间一个正整数,然后输出由星号组成的正方形。

#include<stdio.h>

void Rec(int );

void main()

{


 int num;

 char ch;

 do

 {

  printf("/n请输入3~10之间的一个正整数:");

  fflush(stdin);

  scanf("%d",&num);

  Rec(num);

  printf("/n还要继续吗(y/n)?");

  fflush(stdin);

  scanf("%c",&ch);

 }while(ch=='y');



}

void Rec(int s)

{

 int k=s;

 int i,j;

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

 {

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

  {

   if(i>0 && i<(k-1) && j>0 && j<(k-1))

    printf(" ");

   else

    printf("*");

  }

  printf("/n");

 }

}


举报

相关推荐

C++期末综合练习

C语言练习

C语言 练习

C语言指针综合应用

C语言,练习6

C语言习题练习

C语言循环练习

0 条评论