2022年C语言程序设计期末考试及答案.pdf
第一次试验1. 编写一个程序, 求出给定半径r 的圆的面积和周长,并且输出计算结果。其中:r 的值由用户输入,用浮点型数据处理。#include void main( )float PI=;float r,area,perim;printf(请输入圆的半径: n);printf(r=);scanf(%f,&r); 2. 给一百分制成绩,要求输出成绩等级A、B、C 、D 、E。90 分以上为 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,求其最大公约数和最小公倍数。#include 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 7 页 - - - - - - - - - - int main() int p,r,n,m,temp;4. printf(请输入两个正整数n,m:);.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(请入入 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 项之和。#include main() 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 7 页 - - - - - - - - - - int i,x,y,a; float sum=0; x=2; y=1; for(i=1;i20;i+) sum+=(float)(x)/y; 将字符串 computer 赋给一个字符数组 strcpy(str, computer); 然后从第一个字母开始间隔地输出该串 while(*pStr != 0 ) printf(%cn, *pStr); pStr+; return 1; 1. 将无符号八进制数字字符串转换为十进制整数。例如, 输入的字符串为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,n);2. 编程输入一行文字,找出其中的大写字母,小写字母,空格,数字,及其他字符的个数,用指针实现。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 7 页 - - - - - - - - - - #include#include#includeint 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);printf(大写字母 :%dn,num2); printf(数字 :%dn,num3);printf(空格 :%dn,num4); return 0;第四次实验1. 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。#include #include int prime(int x) 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. 写一函数, 使输入的一个字符串按反序存放,在主函数中输入和输出字符串。# 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; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 7 页 - - - - - - - - - - gets(str0); fanxu(str0); puts(str0); return 0; 3. 写一函数,由实参传来一个字符串,统计此字符串中字母、数字、 空格和其他字符的个数,在主函数中输入字符串及输出上述的结果。#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; 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+; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 7 页 - - - - - - - - - - 4. 写一函数,使给定的一个二维数组(33)转置,即行列互换。#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);精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 7 页 - - - - - - - - - -