当前位置:文档之家› C语言程序设计期末考试及答案

C语言程序设计期末考试及答案

第一次试验1.编写一个程序,求出给定半径r的圆的面积和周长,并且输出计算结果。

其中:r的值由用户输入,用浮点型数据处理。

#include<>voidmain(){floatPI=;floatr,area,perim;printf("请输入圆的半径:\n");printf("r=");scanf("%f",&r);}2.给一百分制成绩,要求输出成绩等级’A’、’B’、’C’、’D’、’E’。

90分以上为’A’,80~89分为’B’,70~79分为’C’,60~69分为’D’,60分以下为’E’。

#include<>voidmain(){intiNum;printf("请输入分数:");scanf("%d",&iNum);switch(iNum/10){case10:case9:printf("学生成绩A\n");break;case8:printf("学生成绩B\n");break;case7:printf("学生成绩C\n");break;case6:printf("学生成绩D\n");break;default:printf("学生成绩E\n");break;}}3. 输入两个正整数m 和n ,求其最大公约数和最小公倍数。

#include<>intmain(){intp,r,n,m,temp;4. printf("请输入两个正整数n,m:");.a (n 个a )之值,其中a 是一个数字。

例如:2+22+222+2222+22222(此时n=5),n 由键盘输入。

#include<>intmain(void){intsum=0;intsun=0;inta;intn;inti=0;printf("请入入a 值(整数):\n");printf("a=");scanf("%d",&a);printf("请入入n 值:\n");printf("n=");scanf("%d",&n);while(i<n){sum=a+sum*10;sun+=sum;++i;}printf("sun=%d\n",sun);return0;}第二次试验1. 有一分数序列: (13)21,813,58,35,23,12求出这个数列的前20项之和。

#include<>main(){inti,x,y,a;floatsum=0;x=2;y=1;for(i=1;i<20;i++){sum+=(float)(x)/y;字符串computer赋给一个字符数组strcpy(str,"computer");后从第一个字母开始间隔地输出该串while(*pStr!='\0'){printf("%c\n",*pStr);pStr++;}return1;}1.将无符号八进制数字字符串转换为十进制整数。

例如,输入的字符串为556,则输出十进制整数366。

用指针实现。

#include<>voidmain(){char*p,s[6];intn=0;p=s;gets(p);while(*p!='\0'){n=n*8;n=n+(*p-'0');p++;}printf("%d\n",n);}2.编程输入一行文字,找出其中的大写字母,小写字母,空格,数字,及其他字符的个数,用指针实现。

#include<>#include<>#include<>intmain(){charstr[100];intnum1,num2,num3,num4;num1=num2=num3=num4=0;gets(str);for(inti=0;i<strlen(str);i++){if(islower(str[i]))num1++;elseif(isupper(str[i]))num2++;elseif(isdigit(str[i]))num3++;elseif(str[i]=='')num4++;}printf("小写字母:%d\n",num1);printf("大写字母:%d\n",num2);printf("数字:%d\n",num3);printf("空格:%d\n",num4);return0;}第四次实验1.写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。

#include<>#include<>intprime(intx){inttemp,i,k;temp=(int)(sqrt(x));for(i=2;i<=temp;++i)if(x%i==0){k=0;break;}if(i>temp)k=1;returnk;}voidmain(){intx;intk;scanf("%d",&x);k=prime(x);if(k)printf("%disprime\n",x);elseprintf("%disnotprime\n",x);}2.写一函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。

#include<>#include<>char*fanxu(charstr1[100])//返回类型{inti,j,t;charstr2[100];strcpy(str2,str1);t=strlen(str1);for(i=0,j=t-1;j>-1;i++,j--)str1[i]=str2[j];returnstr2;}intmain(intargc,char*argv[]){charstr0[100];gets(str0);fanxu(str0);puts(str0);return0;}3.写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串及输出上述的结果。

#include<>#include<>intalph,digit,space,others;voidcount(charstr[]);voidmain(void){chartext[80];printf("\n输入字符串:\n");gets(text);printf("字符串是:");puts(text);strcat(text,"\n");alph=0;digit=0;space=0;others=0;count(text);printf("\n%d字母,%d数字,%d空格,%d其它字符\n",alph,digit,space,others);}voidcount(charstr[]){inti;for(i=0;str[i]!='\n';i++){if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))alph++;elseif(str[i]>='0'&&str[i]<='9')digit++;elseif(str[i]=='')space++;elseothers++;}}4.写一函数,使给定的一个二维数组(3×3)转置,即行列互换。

#include<>voidx(inta[3][3])//x是行列互换的函数名{inti,j;printf("行列互换后:\n");for(i=0;i<3;i++){for(j=0;j<3;j++){printf("%d\t",a[j][i]);}printf("\n");}}voidmain(){intsum[3][3],i,j;printf("请输入3*3的矩阵数:");for(i=0;i<3;i++){for(j=0;j<3;j++){scanf("%d",&sum[i][j]);}}x(sum);}。

相关主题