《2023年C语言程序设计期末考试及答案.pdf》由会员分享,可在线阅读,更多相关《2023年C语言程序设计期末考试及答案.pdf(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 第 一 次 试 验 1.编写一个程序,求出给定半径 r 的圆的面积和周长,并且输出计算结果。其中:r 的值由用户输入,用浮点型数据处理。#include void main()float PI=3.1415;float r,area,perim;printf(请输入圆的半径:n);printf(r=);scanf(%f,&r);/输入半径 r perim=2*PI*r;/周长=2 r area=PI*r*r;/面积=r2 printf(周长:%fn 面积:%fn,perim,area);/输出周长和面积.2.给 一 百 分 制 成 绩,要 求 输 出 成 绩 等级A、B、C、D、E。90 分
2、以上为A,8089 分为B,7079 分为C,6069 分为D,60 分以下为E。#include void main()int iNum;printf(请输入分数:);scanf(%d,&iNum);switch(iNum/10)case 10:case 9:printf(学生成绩 An);break;case 8:printf(学生成绩 Bn);break;case 7:printf(学生成绩 Cn);break;case 6:printf(学生成绩 Dn);break;default:printf(学生成绩 En);break;3.输入两个正整数 m和 n,求其最大公约数和最小公倍数。#
3、include int main()int p,r,n,m,temp;printf(请输入两个正整数 n,m:);/请用空格隔开 scanf(%d%d,&n,&m);if(nm)temp=n;n=m;m=temp;p=n*m;while(m!=0)r=n%m;n=m;m=r;printf(它们的最大公约数为:%dn,n);printf(它们的最小公约数为:%dn,p/n);return 0;4.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。#include#include#include int i,a4;char t;int main()printf(请输入字符串);fo
4、r(i=0;i+)scanf(%c,&t);if(t=n)break;else if(t=A&t=Z)a0+;分为分以下为请输入分数学生成绩学生成绩学生成绩学生成绩学生成绩输入两个正整数和求其最大公约数和最小公倍 母空格数字和其他字符的个数请输入字符串字母的个数是空格的个数是数字的个数是其它字符的个数是求个之值其中 矩阵对角线元素之和依次输入个数输出两对角线和将一个数组中的值按逆序重新存放例如原来的顺序为要求改为有一 else if(t=a&t=0&t=9)a2+;else a3+;for(i=0;i4;i+)if(i=0)printf(字母的个数是);else if(i=1)printf(空
5、格的个数是);else if(i=2)printf(数字的个数是);else if(i=3)printf(其它字符的个数是);printf(%dn,ai);system(pause);return 0;5.求 sn=a+aa+aaa+aa.a(n 个 a)之值,其中 a 是一个数字。例如:2+22+222+2222+22222(此时 n=5),n 由键盘输入。#include int main(void)int sum=0;int sun=0;int a;int n;int i=0;printf(请入入 a 值(整数):n);printf(a=);scanf(%d,&a);printf(请入入
6、 n 值:n);printf(n=);scanf(%d,&n);分为分以下为请输入分数学生成绩学生成绩学生成绩学生成绩学生成绩输入两个正整数和求其最大公约数和最小公倍 母空格数字和其他字符的个数请输入字符串字母的个数是空格的个数是数字的个数是其它字符的个数是求个之值其中 矩阵对角线元素之和依次输入个数输出两对角线和将一个数组中的值按逆序重新存放例如原来的顺序为要求改为有一while(in)sum=a+sum*10;sun+=sum;+i;printf(sun=%d n,sun);return 0;第二次试验 1.有一分数序列:.1321,813,58,35,23,12求出这个数列的前 20 项
7、之和。#include main()int i,x,y,a;float sum=0;x=2;y=1;for(i=1;i20;i+)sum+=(float)(x)/y;/printf(%d/%dn,x,y);a=x;x=x+y;y=a;printf(%7.5fn,sum);2.求一个 33 矩阵对角线元素之和。#include void main()int a33;int i,j;int sum=0;int sum1=0;/input for(i=0;i=2;i+)分为分以下为请输入分数学生成绩学生成绩学生成绩学生成绩学生成绩输入两个正整数和求其最大公约数和最小公倍 母空格数字和其他字符的个数请
8、输入字符串字母的个数是空格的个数是数字的个数是其它字符的个数是求个之值其中 矩阵对角线元素之和依次输入个数输出两对角线和将一个数组中的值按逆序重新存放例如原来的顺序为要求改为有一 for(j=0;j=2;j+)printf(a%d%d:,i+1,j+1);scanf(%d,&aij);printf(n);/sum for(i=0;i=2;i+)for(j=0;j=2;j+)if(i=j)sum=sum+aij;if(i+j=2)sum1=sum1+aij;/output printf(DuiJIao 1:%dn,sum);printf(DuiJIao 2:%dn,sum1);/output m
9、atrix printf(n);for(i=0;i=2;i+)for(j=0;j=2;j+)printf(%d,aij);printf(n);依次输入 9 个数 输出两对角线和 分为分以下为请输入分数学生成绩学生成绩学生成绩学生成绩学生成绩输入两个正整数和求其最大公约数和最小公倍 母空格数字和其他字符的个数请输入字符串字母的个数是空格的个数是数字的个数是其它字符的个数是求个之值其中 矩阵对角线元素之和依次输入个数输出两对角线和将一个数组中的值按逆序重新存放例如原来的顺序为要求改为有一3.将一个数组中的值按逆序重新存放,例如原来的顺序为:8,6,5,4,1。要求改为:1,4,5,6,8。#inc
10、lude void main()int i,b10;for(i=0;i-1;i-)printf(%5d,bi);printf(n);4.有一篇文章,共有 3 行文字,每行有 80 个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格、以及其他字符的个数。#include int main()int i,j,upp,low,dig,spa,oth;char text380;upp=low=dig=spa=oth=0;for(i=0;i3;i+)printf(please input line%d:n,i+1);gets(texti);for(j=0;j=A&textij=a&textij
11、=0&textij=9)dig+;else if(textij=)spa+;else oth+;printf(nupper case:%dn,upp);分为分以下为请输入分数学生成绩学生成绩学生成绩学生成绩学生成绩输入两个正整数和求其最大公约数和最小公倍 母空格数字和其他字符的个数请输入字符串字母的个数是空格的个数是数字的个数是其它字符的个数是求个之值其中 矩阵对角线元素之和依次输入个数输出两对角线和将一个数组中的值按逆序重新存放例如原来的顺序为要求改为有一 printf(lower case:%dn,low);printf(digit:%dn,dig);printf(space:%dn,sp
12、a);printf(other:%dn,oth);return 0;第三次实验 1.将字符串 computer 赋给一个字符数组,然后从第一个字母开始输出该串。请用指针实现。#include#include#define MAX_LENGTH 32 int main()char strMAX_LENGTH=0;char*pStr=(char*)&str;/1.将字符串 computer 赋给一个字符数组 strcpy(str,computer);/2.然后从第一个字母开始间隔地输出该串 while(*pStr!=0)printf(%cn,*pStr);pStr+;return 1;2.将无符号
13、八进制数字字符串转换为十进制整数。例如,输分为分以下为请输入分数学生成绩学生成绩学生成绩学生成绩学生成绩输入两个正整数和求其最大公约数和最小公倍 母空格数字和其他字符的个数请输入字符串字母的个数是空格的个数是数字的个数是其它字符的个数是求个之值其中 矩阵对角线元素之和依次输入个数输出两对角线和将一个数组中的值按逆序重新存放例如原来的顺序为要求改为有一入的字符串为 556,则输出十进制整数 366。用指针实现。#include void main()char*p,s6;int n=0;p=s;gets(p);while(*p!=0)n=n*8;n=n+(*p-0);p+;printf(%d n,
14、n);3.编程输入一行文字,找出其中的大写字母,小写字母,空格,数字,及其他字符的个数,用指针实现。#include#include#include int main()char str100;int num1,num2,num3,num4;num1=num2=num3=num4=0;gets(str);for(int i=0;istrlen(str);i+)if(islower(stri)num1+;else if(isupper(stri)num2+;else if(isdigit(stri)num3+;else if(stri=)num4+;printf(小写字母:%dn,num1);p
15、rintf(大写字母:%dn,num2);printf(数字:%dn,num3);printf(空格:%dn,num4);return 0;分为分以下为请输入分数学生成绩学生成绩学生成绩学生成绩学生成绩输入两个正整数和求其最大公约数和最小公倍 母空格数字和其他字符的个数请输入字符串字母的个数是空格的个数是数字的个数是其它字符的个数是求个之值其中 矩阵对角线元素之和依次输入个数输出两对角线和将一个数组中的值按逆序重新存放例如原来的顺序为要求改为有一 第四次实验 1.写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。#include#include int prime(int x)
16、int temp,i,k;temp=(int)(sqrt(x);for(i=2;itemp)k=1;return k;void main()int x;int k;scanf(%d,&x);k=prime(x);if(k)printf(%d is primen,x);else printf(%d is not primen,x);2.写一函数,使输入的一个字符串按反序存放,在主函数中分为分以下为请输入分数学生成绩学生成绩学生成绩学生成绩学生成绩输入两个正整数和求其最大公约数和最小公倍 母空格数字和其他字符的个数请输入字符串字母的个数是空格的个数是数字的个数是其它字符的个数是求个之值其中 矩阵对
17、角线元素之和依次输入个数输出两对角线和将一个数组中的值按逆序重新存放例如原来的顺序为要求改为有一输入和输出字符串。#include#include char*fanxu(char str1100)/返回类型 int i,j,t;char str2100;strcpy(str2,str1);t=strlen(str1);for(i=0,j=t-1;j-1;i+,j-)str1i=str2j;return str2;int main(int argc,char*argv)char str0100;gets(str0);fanxu(str0);puts(str0);return 0;3.写一函数,由
18、实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串及输出上述的结果。#include#include int alph,digit,space,others;void count(char str);void main(void)char text80;printf(n 输入字符串:n);gets(text);printf(字符串是:);puts(text);strcat(text,n);alph=0;digit=0;分为分以下为请输入分数学生成绩学生成绩学生成绩学生成绩学生成绩输入两个正整数和求其最大公约数和最小公倍 母空格数字和其他字符的个数请输入字符
19、串字母的个数是空格的个数是数字的个数是其它字符的个数是求个之值其中 矩阵对角线元素之和依次输入个数输出两对角线和将一个数组中的值按逆序重新存放例如原来的顺序为要求改为有一 space=0;others=0;count(text);printf(n%d 字母,%d 数字,%d 空格,%d 其它字符 n,alph,digit,space,others);void count(char str)int i;for(i=0;stri!=n;i+)if(stri=a&stri=A&stri=0&stri=9)digit+;else if(stri=)space+;else others+;4.写一函数,
20、使给定的一个二维数组(3 3)转置,即行列互换。#include void x(int a33)/x 是行列互换的函数名 int i,j;printf(行列互换后:n);for(i=0;i3;i+)for(j=0;j3;j+)printf(%dt,aji);printf(n);void main()int sum33,i,j;printf(请输入 3*3 的矩阵数:);for(i=0;i3;i+)分为分以下为请输入分数学生成绩学生成绩学生成绩学生成绩学生成绩输入两个正整数和求其最大公约数和最小公倍 母空格数字和其他字符的个数请输入字符串字母的个数是空格的个数是数字的个数是其它字符的个数是求个之值其中 矩阵对角线元素之和依次输入个数输出两对角线和将一个数组中的值按逆序重新存放例如原来的顺序为要求改为有一 for(j=0;j3;j+)scanf(%d,&sumij);x(sum);分为分以下为请输入分数学生成绩学生成绩学生成绩学生成绩学生成绩输入两个正整数和求其最大公约数和最小公倍 母空格数字和其他字符的个数请输入字符串字母的个数是空格的个数是数字的个数是其它字符的个数是求个之值其中 矩阵对角线元素之和依次输入个数输出两对角线和将一个数组中的值按逆序重新存放例如原来的顺序为要求改为有一