收藏 分销(赏)

大学经典C语言编程试题.doc

上传人:鼓*** 文档编号:12148853 上传时间:2025-09-17 格式:DOC 页数:51 大小:125.50KB 下载积分:8 金币
下载 相关 举报
大学经典C语言编程试题.doc_第1页
第1页 / 共51页
大学经典C语言编程试题.doc_第2页
第2页 / 共51页


点击查看更多>>
资源描述
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"); else printf("E级
展开阅读全文

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


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

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

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

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

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

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

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

客服