C语言程序设计期末考试及答案.docx
- 文档编号:4502774
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:12
- 大小:21.39KB
C语言程序设计期末考试及答案.docx
《C语言程序设计期末考试及答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计期末考试及答案.docx(12页珍藏版)》请在冰豆网上搜索。
C语言程序设计期末考试及答案
第一次试验
1.编写一个程序,求出给定半径r的圆的面积和周长,并且输出计算结果。
其中:
r的值由用户输入,用浮点型数据处理。
#include
voidmain()
{
floatPI=3.1415;
floatr,area,perim;
printf("请输入圆的半径:
\n");
printf("r=");
scanf("%f",&r);//输入半径r
perim=2*PI*r;//周长=2πr
area=PI*r*r;//面积=πr^2
printf("周长:
%f\n面积:
%f\n",perim,area);//输出周长和面积..
}
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;
printf("请输入两个正整数n,m:
");//请用空格隔开
scanf("%d%d,",&n,&m);
if(n { temp=n; n=m; m=temp; } p=n*m; while(m! =0) { r=n%m; n=m; m=r; } printf("它们的最大公约数为: %d\n",n); printf("它们的最小公约数为: %d\n",p/n); return0; } 4.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 #include #include #include inti,a[4]; chart; intmain() { printf("请输入字符串"); for(i=0;;i++) { scanf("%c",&t); if(t=='\n')break; elseif(t>='A'&&t<='Z')a[0]++; elseif(t>='a'&&t<='z')a[0]++; elseif(t=='')a[1]++; elseif(t>='0'&&t<='9')a[2]++; elsea[3]++; } for(i=0;i<4;i++) { if(i==0) printf("字母的个数是"); elseif(i==1) printf("空格的个数是"); elseif(i==2) printf("数字的个数是"); elseif(i==3) printf("其它字符的个数是"); printf("%d\n",a[i]); } system("pause"); return0; } 5.求sn=a+aa+aaa+…+aa...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 { sum=a+sum*10; sun+=sum; ++i; } printf("sun=%d\n",sun); return0; } 第二次试验 1.有一分数序列: 求出这个数列的前20项之和。 #include main() {inti,x,y,a; floatsum=0; x=2; y=1; for(i=1;i<20;i++) { sum+=(float)(x)/y; //printf("%d/%d\n",x,y); a=x; x=x+y; y=a; } printf("%7.5f\n",sum); } 2.求一个3 3矩阵对角线元素之和。 #include voidmain() { inta[3][3]; inti,j; intsum=0; intsum1=0; //input for(i=0;i<=2;i++) { for(j=0;j<=2;j++) { printf("a[%d][%d]: ",i+1,j+1); scanf("%d",&a[i][j]); } printf("\n"); } //sum for(i=0;i<=2;i++) { for(j=0;j<=2;j++) { if(i==j) sum=sum+a[i][j]; if(i+j==2) sum1=sum1+a[i][j]; } } //output printf("DuiJIao1: %d\n",sum); printf("DuiJIao2: %d\n",sum1); //outputmatrix printf("\n"); for(i=0;i<=2;i++) { for(j=0;j<=2;j++) { printf("%d",a[i][j]); } printf("\n"); } } 依次输入9个数 输出两对角线和 3.将一个数组中的值按逆序重新存放,例如原来的顺序为: 8,6,5,4,1。 要求改为: 1,4,5,6,8。 #include voidmain() {inti,b[10]; for(i=0;i<10;i++) scanf("%d",&b[i]); for(i=9;i>-1;i--) printf("%5d",b[i]); printf("\n"); } 4.有一篇文章,共有3行文字,每行有80个字符。 要求分别统计出其中英文大写字母、小写字母、数字、空格、以及其他字符的个数。 #include intmain() {inti,j,upp,low,dig,spa,oth; chartext[3][80]; upp=low=dig=spa=oth=0; for(i=0;i<3;i++) {printf("pleaseinputline%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') upp++; elseif(text[i][j]>='a'&&text[i][j]<='z') low++; elseif(text[i][j]>='0'&&text[i][j]<='9') dig++; elseif(text[i][j]=='') spa++; else oth++; } } printf("\nuppercase: %d\n",upp); printf("lowercase: %d\n",low); printf("digit: %d\n",dig); printf("space: %d\n",spa); printf("other: %d\n",oth); return0; } 第三次实验 1.将字符串computer赋给一个字符数组,然后从第一个字母开始输出该串。 请用指针实现。 #include #include #defineMAX_LENGTH32 intmain() { charstr[MAX_LENGTH]={0}; char*pStr=(char*)&str; //1.将字符串computer赋给一个字符数组 strcpy(str,"computer"); //2.然后从第一个字母开始间隔地输出该串 while(*pStr! ='\0') { printf("%c\n",*pStr); pStr++; } return1; } 2.将无符号八进制数字字符串转换为十进制整数。 例如,输入的字符串为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); } 3.编程输入一行文字,找出其中的大写字母,小写字母,空格,数字,及其他字符的个数,用指针实现。 #include #include #include intmain() { charstr[100]; intnum1,num2,num3,num4; num1=num2=num3=num4=0; gets(str); for(inti=0;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); else printf("%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++; else others++; } } 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); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 期末考试 答案