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");
 }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值