收藏 分销(赏)

C语言练习题.doc

上传人:xrp****65 文档编号:7034305 上传时间:2024-12-25 格式:DOC 页数:52 大小:113KB 下载积分:10 金币
下载 相关 举报
C语言练习题.doc_第1页
第1页 / 共52页
C语言练习题.doc_第2页
第2页 / 共52页


点击查看更多>>
资源描述
1.输入两个正整数,m和n,求其最大公约数和最小公倍数。 #include<stdio.h> void main() {  int hcf(int,int);      /*函数声明*/  int lcd(int,int,int);  /*函数声明*/  int u,v,h,l;  printf("Please input two numbers:\n");  scanf("%d,%d",&u,&v);  h=hcf(u,v);  printf("H.C.F=%d\n",h);  l=lcd(u,v,h);  printf("L.C.D=%d\n",l); } int hcf(int u,int v) {  int t,r;  if(v>u)  {t=u;u=v;v=t;}  while((r=u%v)!=0)  {u=v;v=r;}  return(v); } int lcd(int u,int v,int h) {  return(u*v/h); } 2.输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数。 #include<stdio.h> int letter,digit,space,others; void main() {  void count(char[]);  char text[80];  printf("Please input string:\n");  gets(text);  printf("string:\n");  puts(text);  letter=0;  digit=0;  space=0;  others=0;  count(text);  printf("letter:%d,digit:%d,space:%d,others:%d\n",letter,digit,space,others); } void count(char str[]) {  int i;  for(i=0;str[i]!='\0';i++)   if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))    letter++;   else if(str[i]>='0'&&str[i]<='9')    digit++;   else if(str[i]==32)    space++;   else    others++; } 3.输入一个正整数求出它是几位数;输出原数和位数。 #include<stdio.h> int digit; void main() {  void count(char[]);  char text[80];  printf("Please input numbers:\n");  gets(text);  printf("Numbers:\n");  puts(text);  digit=0;  count(text);  printf("digit:%d\n",digit); } void count(char str[]) {  int i;  for(i=0;str[i]!='\0';i++)    if(str[i]>='0'&&str[i]<='9')    digit++; } 4.输入一个正整数,输出原数并逆序打印出各位数字。 #include<stdio.h> void invertLongInt(long); void main() {  unsigned long iNumber;  printf("Please input a number:\n");  scanf("%ld",&iNumber);  printf("The input number is:%ld\n",iNumber);  printf("The inverse number is:");  invertLongInt(iNumber); } void invertLongInt(long x) {  if(x>=0&&x<=9)   printf("%d\n",x);  else  {   printf("%d",x%10);   invertLongInt(x/10);  } } 5.从键盘上输入若干学生的一门课成绩,统计并输出最高成绩和最低成绩及相应的序号,当输入负数时结束输入。 6.从键盘上输入若干学生的一门课成绩,计算出平均分,当输入负数时结束输入。将结果输出。 7.求1!+2!+3!+……+20!,将结果输出。 #include<stdio.h> void main() {  float s=0,t=1;  int n;  for(n=1;n<=20;n++)  {   t=t*n;   s=s+t;  }  printf("1!+2!+3!+……+20!=%e\n",s); } 8.打印以下图案:       *                       ***                      *****                     ******* #include<stdio.h> void main() {  int i,j;  printf("The picture is:\n");  static char picture[4][7]={{' ',' ',' ','*'},  {' ',' ','*','*','*'},{' ',' *','*','*','*','*'},{'*','*','*','*','*','*','*'}};  for(i=0;i<=3;i++)  {   for(j=0;j<=6;j++)      printf("%c",picture[i][j]);   printf("\n");  } } 9.打印以下图案:    * ** *** **** #include<stdio.h> void main() {  int i,j;  printf("The picture is:\n");     char picture[4][4]={{'*'},  {'*','*'},{' *','*','*'},{'*','*','*','*'}};  for(i=0;i<=3;i++)  {   for(j=0;j<=3;j++)      printf("%c",picture[i][j]);   printf("\n");  } } 10.求下列试子的值:1-1/2+1/3-1/4+……+1/99-1/100,将结果输出。 #include<stdio.h> void main() {  float sum=1.0,t,s=1;  int i;  for(i=1;i<=100;i++)  {   t=s/i;   sum=sum+t;   s=-s;  }  printf("1-1/2+1/3-1/4+……+1/99-1/100=%5.4f\n",sum); } 11.打印出100~999之间的所有水仙花数。 #include<stdio.h> void main() {  int i,j,k,n;  printf("100~999之间的所有水仙花数 are:\n");  for(n=100;n<1000;n++)  {   i=n/100;   j=n/10-i*10;   k=n%10;   if(n==i*i*i+j*j*j+k*k*k)    printf("%d  ",n);  }  printf("\n"); } 12.求Sn=a+aa+aaa+…+aa…a之值,n,a由键盘输入。 #include<stdio.h> void main() {  int a,n,i=1,sn=0,tn=0;  printf("a,n=:");  scanf("%d,%d",&a,&n);  while(i<=n)  {   tn=tn+a;   sn=sn+tn;   a=a*10;   ++i;  }  printf("a+aa+aaa+…+aa…a=%d\n",sn); } 13.打印以下图案:   *******    *******     *******      *******  #include<stdio.h> void main() {  char a[7]={'*','*','*','*','*','*','*'};  int i,j,k;  char space=' ';  printf("The picture is:");  for(i=0;i<4;i++)  {   printf("\n");   printf("    ");   for(j=1;j<=i;j++)    printf("%c",space);   for(k=0;k<7;k++)    printf("%c",a[k]);  }  printf("\n"); } 14.打印以下图案:       1      121     12321    1234321 15. 打印以下图案:    1234321     12321      121       1 16.编写一个统计学生成绩程序,完成以下功能:输入4个学生的2门课成绩;求出全班的总平均分,将结果输出。 #include<stdio.h> #define N 4 struct student {  char num[3];  char name[4];  float score[2];  float avr; } stu[N]; void main() {  int i,j;  float sum,average;  for(i=0;i<N;i++)            /*输入数据*/  {   printf("input scores of student%d:\n",i+1);   printf("name:");   scanf("%s",stu[i].name);   for(j=0;j<2;j++)   {    printf("score %d:",j+1);    scanf("%f",&stu[i].score[j]);   }  }  average=0;              /*计算*/  for(i=0;i<N;i++)  {   sum=0;   for(j=0;j<2;j++)    sum+=stu[i].score[j];   stu[i].avr=sum/2;   average+=stu[i].avr;  }  average/=N;  printf("   Name    score1   score2   average\n");  for(i=0;i<N;i++)  {   printf("%5s%10s",stu[i].num,stu[i].name);   for(j=0;j<2;j++)    printf("%9.2f",stu[i].score[j]);   printf("   %8.2f\n",stu[i].avr);  }  printf("average=%5.2f\n",average); } 17. 打印以下图案:     *****      *****       *****        *****         ***** #include<stdio.h> void main() {  char a[5]={'*','*','*','*','*'};  int i,j,k;  char space=' ';  printf("The picture is:");  for(i=0;i<5;i++)  {   printf("\n");   printf("    ");   for(j=1;j<=i;j++)    printf("%c",space);   for(k=0;k<5;k++)    printf("%c",a[k]);  }  printf("\n"); } 18.给出年、月、日,计算该日是该年的第几天。 #include<stdio.h> void main() {  int sum_day(int,int);  int leap(int year);  int year,month,day,days;  printf("input date(year,month,day):");  scanf("%d,%d,%d",&year,&month,&day);  printf("%d/%d/%d",year,month,day);  days=sum_day(month,day);  if(leap(year)&&month>=3)   days=days+1;  printf("is the %dth day in this year.\n",days); } int sum_day(int month,int day) {  int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};  int i;  for(i=1;i<month;i++)   day+=day_tab[i];  return(day); } int leap(int year) {  int leap;  leap=year%4==0&&year%100!=0||year%400==0;  return(leap); } 19.求一个3*3的整型矩阵对角线元素之和。将原矩阵和求出的和输出。 #include<stdio.h> void main() { float a[3][3],sum=0; int i,j; printf("请输入元素:\n"); for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%f",&a[i][j]); for(i=0;i<3;i++) sum=sum+a[i][i]; printf("对角线之和是:%6.2f\n",sum); for(i=0;i<=3;i++) {  for(j=0;j<=3;j++)   printf("%5.2f",a[i][j]);  printf("\n"); } } 20.求一个4*3的矩阵各行元素的平均值;将原矩阵和求出的平均值全部输出。 #include<stdio.h> void main()  {   int a[4][3],s[4],i,j,k;   for(i=0;i<4;i++)    for(j=0;j<3;j++)    scanf("%d",*(a+i)+j);      for(i=0;i<4;i++)   {    k=0;    for(j=0;j<3;j++)     k+=a[i][j];    printf("第%d行的平均值是%d",i+1,k);    printf("\n");   } } 21.求一个3*4的矩阵各列元素的平均值;将原矩阵和求出的平均值全部输出。 #include<stdio.h> void main()  {   int a[4][3],s[4],i,j,k;   for(i=0;i<4;i++)    for(j=0;j<3;j++)    scanf("%d",*(a+i)+j);      for(i=0;i<4;i++)   {    k=0;    for(j=0;j<3;j++)     k+=a[i][j];    printf("第%d行的平均值是%d",i+1,k);    printf("\n");   } } 22.求一个3*5的矩阵各列元素的最大值,将原矩阵和求出的最大值全部输出。 #include<stdio.h> void main()  {   int a[3][5],s[3],i,j,k;   for(i=0;i<3;i++)   for(j=0;j<5;j++)   scanf("%d",*(a+i)+j);     for(i=0;i<3;i++)   { *(s+i)= *(*(a+j));   for(j=1;j<5;j++)   if(*(s+i) < *(*(a+i)+j))   *(s+i)= *(*(a+i)+j);   }     for(i=0;i<3;i++)   {   printf("Line=%d Max=%d",j,s[j] );   printf("\n");   }  } 23.求一个4*3的矩阵各行元素的最大值,将原矩阵和求出的最大值全部输出。 #include<stdio.h> void main()  {   int a[4][3],s[4],i,j,k;   for(i=0;i<4;i++)   for(j=0;j<3;j++)   scanf("%d",*(a+i)+j);     for(i=0;i<4;i++)   { *(s+i)= *(*(a+i));   for(j=1;j<3;j++)   if(*(s+i) < *(*(a+i)+j))   *(s+i)= *(*(a+i)+j);   }     for(i=0;i<4;i++)   {   printf("Row=%d Max=%d",i,s[i] );   printf("\n");   }  } 24.求一个M*N的矩阵中元素的最大值,将原矩阵和求出的最大值全部输出。 #include<stdio.h>   #define N 10 #define M 10 void main()  {   int a [N],i,j,k ,max,m,n;      scanf("%d %d",&m,&n);     for(i=0;i<m;i++)    for(j=0;j<n;j++)    scanf("%d",*(a+i)+j);   for(i=0;i<m;i++)    {    for(j=0;j<n-1;j++)    {     if(a[i][j]<=a[i][j+1])      max=a[i][j+1];     else      max=a[i][j];    }    k[i]=max;   }   for(i=0;i<m-1;i++)   {    if(k[i]<=k[i+1])     max=k[i+1];    else     max=k[i];   }   printf("%d",max); } 25.判断一个N*N的矩阵是否为对称矩阵,将原矩阵输出,判断结果输出。 #include<stdio.h>   #define N 10 void main()  {   int a[N][N],i,j,k,n;     scanf("%d",&n);     for(i=0;i<n;i++)    for(j=0;j<n;j++)    scanf("%d",&a[i][j]);   for(i=0;i<n;i++)    {    for(j=i+1;j<n;j++)    {     if(a[i][j]==a[j][i])      k=1;     else      k=0;    }   }   if(k=0)    printf("bushi");   else    printf("shi\n");   for(i=0;i<n;i++)     for(j=0;j<n;j++)     printf("%d",a[i][j]); } 26.有一篇文章,有三行文字,每行有80个字符。要求统计出其中英文大写字母、消协字母、数字、空格以及其他字符的个数。 #include<stdio.h> void main() {  int i,j,big=0,sma=0,num=0,spa=0,oth=0;  char text[3][80];  for(i=0;i<3;i++)  {   printf("请输入行%d:\n",i+1);   gets(text[i]);   for(j=0;j<80&&text[i][j]!='\0';j++)   {    if(text[i][j]>='A'&&text[i][j]<='Z')     big++;    else if(text[i][j]>='a'&&text[i][j]<='z')     sma++;    else if(text[i][j]>='0'&&text[i][j]<='9')     num++;    else if(text[i][j]==' ')     spa++;    else     oth++;   }  }  printf("大写字母:%d\n",big);  printf("小写字母:%d\n",sma);  printf("数字:%d\n",num);  printf("空格:%d\n",spa);  printf("其它:%d\n",oth); } 27.将20个整数放到一维数组中,输出该数组的最大值和最小值。 #include<stdio.h> void main() {  int i,j,min,max,a[21];  printf("请输入数据:\n");  for(i=1;i<=20;i++)  {   printf("a[%d]=",i);   scanf("%d",&a[i]);  }  for(i=1;i<=19;i++)  {   min=i;   for(j=2;j<=19;j++)    if(a[min]>a[j]);    a[min]=a[j];  }  for(i=1;i<=19;i++)  {   max=i;   for(j=2;j<=19;j++)    if(a[max]<a[j]);    a[max]=a[j];  }  printf("最大数为:%d\n",a[max]);  printf("最小数为:%d\n",a[min]); } 28.将15个整数放到一维数组中,输出该数组中的最大值它的下标,然后将它和数组中的最前面的元素对换。 #include<stdio.h> void main() {  int i,j,min,max,a[16],m,n;  printf("请输入数据:\n");  for(i=1;i<=15;i++)  {   printf("a[%d]=",i);   scanf("%d",&a[i]);  }  for(i=1;i<=14;i++)  {   max=i;   for(j=2;j<=14;j++)    if(a[max]<a[j]);    a[max]=a[j];             m=I,n=j  }  printf("最大数下标为:%d,%d\n",m,n); } 29.将字符数组str1种下标为偶数的元素赋给另一字符数组str2,并输出str1和str2。 #include<stdio.h>   #include<string.h> #define N 10 void main()  {   int i,n;  char str1[N],str2[N];      gets(str1);   for(n=0;n<N;n++)   {   i=2*n;   str2[n]=str1[i];   }      puts(str1);   puts(str2); } 30.编写一个程序,将两个字符串连接起来,不要使用strcat函数。 #include<stdio.h> void main() {  char str1[20],str2[20];  int i=0,j=0;  printf("请输入字符串1:\n");  scanf("%s",str1);  printf("请输入字符串2:\n");  scanf("%s",str2);  while (str1[i]!='\0')   i++;  while (str2[j]!='\0')   str1[i++]=str2[j++];  str1[i]='\0';  printf("合并之后的字符串为:%s\n",str1); } 31.编写一个程序,将字符数组a中的全部字符复制到字符数组b中。不要使用strcpy函数。 #include<stdio.h> #include<string.h> void main() {  char a[40],b[40];  int i;  printf("请输入a:\n");  scanf("%s",a);  for(i=0;i<=strlen(a);i++)   b[i]=a[i];  printf("b:%s\n",b); } 32.编写一个程序,找出3个字符串中的最大者,将它输出。 #include<stdio.h> #include<string.h> void main() {  char string[20];  char str[3][20];  int i;  for(i=0;i<3;i++)   gets (str[i]);  if(strcmp(str[0],str[1])>0)   strcpy(string,str[0]);  else   strcpy(string,str[1]);  if(strcmp(str[2],string)>0)   strcpy(string,str[2]);  printf("最大的字符串是:\n%s\n",string); } 33.编写程序,输入任意一个1~7之间的整数,将他们转换成对应的英文单词。例如:1转换成Monday,7转换成Sunday。  #include<stdio.h> void main() {  int a;  printf("输入一个整数:\n");  scanf("%d",&a);  if(a==1) printf("Monday\n");  else if(a==2) printf("Tuesday\n");  else if(a==3) printf("Wendesday\n");  else if(a==4) printf("Thursday\n");  else if(a==5) printf("Friday\n");  else if(a==6) printf("Saturday\n");  else if(a==7) printf("Sunday\n");  else printf("错误\n"); } 34.编写程序,输入两个整数,和+、-、*、/之中的任意一个运算符,输出计算结果。 #include<stdio.h> void main() {  float a,b;  char c;         printf("请输入一个运算符:\n");  scanf("%c",&c);  printf("请输入两个整数:\n");  scanf("%d,%d",&a,&b);  switch(c)  {    case'+':printf("%f\n",a+b);break;    case'-':printf("%f\n",a-b);break;    case'*':printf("%f\n",a*b);break;    case'/':printf("%f\n",a/b);break;    default:printf("错误");     } } 35.输入年号,计算这一年的2月份的天数,将结果输出。 #include<stdio.h> void main() {  int year,leap;  printf("请输入年份:\n");  scanf("%d",&year);  if(year%4==0)  {   if(year%100==0)   {    if(year%400==0)     leap=1;    else     leap=0;   }   else    leap=1;  }  else   leap=0;  if(leap)   printf("%d年的2月有29天",year);  else   printf("%d年的2月有28天",year); } 36.输入三角形的三边a,b,c,判断a,b,c,能否构成三角形,若能,计算面积。 #include<stdio.h> #include<math.h> void main() {  float a,b,c,area;  double s;  printf("Please enter three sides of a triangle:\n");  scanf("%f,%f,%f",&a,&b,&c);  s=(a+b+c)/2.0;  area=sqrt(s*(s-a)*(s-b)*(s-c));  if(a+b<c||b+c<a||a+c<b)   printf("They can't form a triangle.\n");  else      printf("The area of the triangle is:%f\n",area); } #include<stdio.h>   #define N 10 #define M 10 void main()   {      int   i,j,k,m,n,flag1,flag2,a[N] ,max,maxj;  printf("输入行数n[n<10]:");  scanf("%d",&n);  printf("输入列数m[m<10]:");    scanf("%d",&m);    for(i=0;i<n;i++)  {           printf("第%d行\n",i+1);     for(j=0;j<m;j++)           scanf("%d",&a[i][j]);    }   37. 输入三角形的三边a,b,c,判断a,b,c,能否构成三角形,何种类型的三角形:等腰、等边、直角、等腰直角、一般。 #include<stdio.h> #include<math.h> void main() {  float a,b,c;  printf("请输入三角形边长:\n");  scanf("%f%f%f",&a,&b,&c);  if((a-b>=c)||(b-c>=a)||(c-a>=b)) printf("不能够成三角形\n");  else if ((a*a+b*b==c*c)||(b*b+c*c==a*a)||(c*c+a*a==b*b))   if ((a==b)||(b==c)||(c==a)) printf("等腰直角三角形\n");   else printf("直角三角形\n");  else if ((a==b)&&(b==c)) printf("等边三角形\n");  else if ((a==b)&&(b!=c)||(c==b)&&(b!=a)||(a==c)&&(c!=a)) printf("等腰三角形\n");  else printf("一般三角形\n"); } 38.输入奖金数a,计算并输出税率、应缴税款和实得奖金数。(用if语句编程) #include<stdio.h> void main() {  int a;  float r,t,s;  printf("请输入奖金数:\n");  scanf("%d",&a);  if (a<500) r=0.00;  else if (a<1000) r=0.05;  else if (a<2000) r=0.08;  else if (a<2000) r=0.10;  else r=0.15;  t=a*r;  s=a-t;  printf("税率:%7.2f\n",r);  printf("税款:%7.2f\n",t);  printf("实得奖金:%7.2f\n",s); } 39.输入奖金数a,计算并输出税率、应缴税款和实得奖金数。(用switch语句编程) #include<stdio.h> void main() {  int a,e;  float r,t,s;  printf("请输入奖金数:\n");  scanf("%d",&a);  e=a/500;  switch(e)  {case 0:r=0.00;break;  case 1:r=0.05;break;  case 2:  case 3:r=0.08;break;  case 4:  case 5:  case 6:  case 7:  case 8:  case 9:r=0.10;break;  default:r=0.15;break;  }  t=a*r;  s=a-t;  printf("税率:%7.2f\n",r);  printf("税款:%7.2f\n",t);  printf("实得奖金:%7.2f\n",s); } 40.输入学生的成绩,利用计算机将学生的成绩划分出等级并输出:    90~100:A级;  80~89:B级;  70~79:C级;  60~69:D级;  0~59:E级; #include<stdio.h> void main() {  float m;  printf("输入学生成绩:\n");  scanf("%f",&m);  if ((m>100)||(m<0)) printf("数据有误\n");  else if (m>=90) printf("A级\n");  else if (m>=80) printf("B级\n");  else if (m>=70) printf("C级\n");  else if (m>=60) printf("D级\n")
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服