c语言复习题答案(49题)
更新时间:2023-03-10 04:33:01 阅读量: 综合文库 文档下载
- c语言复数运算推荐度:
- 相关推荐
一、 顺序结构程序设计======================================== 1 已知三角形的三边长为a,b,c,计算三角形面积的公式为:
1(a?b?c) 2要求编写程序,从键盘输入a,b,c的值,计算并输出三角形的面积。
#include
float a,b,c,s,area;
scanf(\ s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(\ b=%7.2f, c=%7.2f, s=%7.2f\\n\ printf(\}
2 编程从键盘输入圆的半径r,计算并输出圆的周长和面积。 #include \#define Pi 3.14 void main() {
float r,c,area;
printf(\请输入圆的半径:\scanf(\c=2*Pi*r; area=Pi*r*r;
printf(\该圆的周长是%.2f,面积是%.2f\\n\}
二、 选择结构程序设计==========================================
area = s(s?a)(s?b)(s?c),s=
1 从键盘任意输入一个年号,判断它是否是闰年。若是闰年,输出“Yes”,否则输出“No”。已知符合下列条件之一者是闰年:
? 能被4整除,但不能被100整除。 ? 能被400整除。 #include
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
flag = 1; /*如果year是闰年,则标志变量flag置1*/ } else { flag = 0; /*否则,标志变量flag置0*/ } if (flag) {
printf(\ /*打印“是闰年”*/ } else { printf(\ /* 打印“不是闰年”*/ } }
2 通过键盘输入一个字符,判断该字符是数字字符、大写字母、小写字母、空格还是其他字符。
#include
}
}
3 华氏和摄氏温度的转换公式为C=5/9×(F-32)。其中,C表示摄氏温度,F表示华氏温
度。要求:华氏0℉~300℉,每隔20℉输出一个华氏温度对应的摄氏温度值。 #include
celsius = 5.0 / 9 * (fahr - 32); printf(\ fahr = fahr + step; } }
4 编程判断输入整数的正负性和奇偶性。 #include
}
{ printf(\/*是负偶数*/ } else { printf(\/*是负奇数*/ } } else { printf(\是0*/ }
5 编程计算分段函数
x?0?e?x?y??1 x?0 ?xx?0??e输入x,打印出y值。流程图如图1-2所示。
#include
int x; double y;
printf(\ scanf(\ /* 输入一个整数*/ if (x > 0) { y = exp(-x); /*如果大于0,计算y=exp(-x)的值 */ }
else if (x == 0) { y = 1; /*x=0,则y=1*/ } else { y = -exp(x); /*x<0,则y=-exp(x)*/ }
printf(\}
6 输入三角形的三条边a,b,c,判断它们能否构成三角形。若能构成三角形,指出是何种三角形(等腰三角形、直角三角形、一般三角形)。 #include
main() { float a, b, c; int flag = 1; printf(\ scanf(\/*输入三角形的三条边*/ /*三角形的基本条件*/ if ((a + b) > c && ((b + c) > a) && ((a + c) > b)) { if (fabs(a-b) <= LIMIT || fabs(b-c) <= LIMIT || fabs(c-a) <= LIMIT) /*等腰三角形的条件*/ { printf(\等腰\ flag = 0; } if (fabs(a * a + b * b - c * c) <= LIMIT || fabs(a * a + c * c - b * b) <= LIMIT || fabs(c * c + b * b - a * a) <= LIMIT) /*直角三角形的条件 */ { printf(\直角\ flag = 0; } if (flag) { printf(\一般\ } printf(\三角形\\n\ } else { printf(\不是三角形\\n\ } }
7 在屏幕上显示一张如下所示的时间表: *****Time***** 1 morning
2 afternoon 3 night
Please enter your choice:
操作人员根据提示进行选择,程序根据输入的时间序号显示相应的问候信息,选择1时显示\, 选择2时显示\, 选择3时显示\,对于其他选择显示\,用switch语句编程实现。 #include
8 读入一个年份和月份,打印出该月有多少天(考虑闰年),用switch语句编程。 #include
case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf(\ break; case 2: if((year % 4== 0 && year % 100 != 0)||(year % 400 == 0)) { printf(\闰年的2月有29天 */ } else { printf(\/*平年的2月有28天 */ } break; case 4: case 6: case 9: case 11: printf(\ break; default: printf(\ } }
三、 循环结构程序设计========================================== 1 编程计算1!+2!+3!+4!+…+10!的值。
#include
}
}
printf(\
2 编程计算 a+aa+aaa+…+aa…a(n个a)的值,n和a的值由键盘输入。
#include
?224466?3 利用?=?????×100项之积计算?的值。 ?…的前...22133557#include
4 计算1?
11111????????,直到最后一项的绝对值小于10-4为止。 23499100#include
x3x5x7x95 利用泰勒级数sin(x)≈x??????,计算sin(x) 的值。要求最后一项的绝对
3!5!7!9!值小于10-5,并统计出此时累加了多少项。 #include
6 打印所有的“水仙花数”。所谓“水仙花数”,是指一个三位数,其各位数字的立方和等
于该数本身。例如,153是“水仙花数”,因为153=13+33+53。 #include
7 从键盘任意输入一个4位数x,编程计算x的每一位数字相加之和(忽略整数前的正负
号)。例如,输入x为1234,则由1234分离出其千位1、百位2、十位3、个位4,然后计算1+2+3+4=10,并输出10。
#include
8 三色球问题。若一个口袋中放有12个球,其中有3个红色的,3个白色的,6个黑色的,
从中任取8个球,问共有多少种不同的颜色搭配?
五、 二维数组========================================== 1 输入5×5阶的矩阵,编程实现:
(1)求两条对角线上的各元素之和。
(2)求两条对角线上行、列下标均为偶数的各元素之积。
#include
main() { int a[ARR_SIZE][ARR_SIZE], i, j, n, sum = 0; long product = 1; printf(\ scanf(\ printf(\ for (i=0; i printf(\} 2 编程打印如下形式的杨辉三角形。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 #include #define ARR_SIZE 11 void YHTriangle(int a[][ARR_SIZE], int n); void PrintYHTriangle(int a[][ARR_SIZE], int n); main() { int a[ARR_SIZE][ARR_SIZE], n; printf(\ n (n<=10):\ scanf(\ /*根据要求输入杨辉三角形的行数*/ YHTriangle(a,n); PrintYHTriangle(a,n); } /*函数功能: 计算杨辉三角形中各元素数值 函数参数: 整型数组a,存放计算得到的杨辉三角形数据 整型变量n,代表杨辉三角形的行数 函数返回值:无 */ void YHTriangle(int a[][ARR_SIZE], int n) { int i, j ; for (i=1; i<=n; i++) { a[i][1] = 1; a[i][i] = 1; } for (i=3; i<=n; i++) { for (j=2; j<=i-1; j++) { a[i][j] = a[i-1][j-1] + a[i-1][j]; } } } /* 函数功能: 输出杨辉三角形 函数参数: 整型数组a,存放杨辉三角形数据 整型变量n,代表杨辉三角形的行数 函数返回值:无 */ void PrintYHTriangle(int a[][ARR_SIZE], int n) { int i , j ; for (i=1; i<=n; i++) { for (j=1; j<=i; j++) { printf(\ } printf(\ } } 3 利用公式cij=aij+bij计算m×n阶矩阵A和m×n阶矩阵B之和。已知aij为矩阵A的元素, bij为矩阵B的元素,cij为矩阵C的元素(i=1,2,…,m;j=1,2,…,n)。 #include #define ROW 2 #define COL 3 /* 函数功能: 输入矩阵元素,存于数组a中 函数参数: 整型数组a,存放矩阵元素 返回值: 无 */ void InputMatrix(int a[ROW][COL]) { int i , j ; for (i=0; i 函数功能: 计算矩阵之和,即计算数组a、b对应位置数据相加之和,结果存于数组c中 函数参数: 整型数组a、b,分别存放两个待求和的矩阵元素 整型数组c,存放矩阵求和结果 返回值: 无 */ void AddMatrix(int a[ROW][COL], int b[ROW][COL], int c[ROW][COL]) { int i , j ; for (i=0; i void PrintMatrix(int a[ROW][COL]) { int i , j ; for (i=0; i main() { int a[ROW][COL], b[ROW][COL], c[ROW][COL]; printf(\ InputMatrix(a); printf(\ InputMatrix(b); } AddMatrix(a, b, c); printf(\PrintMatrix(c); 4* 利用公式cij=?aik*bkj计算矩阵A和矩阵B之积。已知aij为m×n阶矩阵A的元素(i=1, k?1n2,…,m;j=1,2,…,n),bij为n×m阶矩阵B的元素(i=1,2,…,n;j=1,2,…, m),cij为m×m阶矩阵C的元素(i=1,2,…,m;j=1,2,…,m)。 #include #define ROW 2 #define COL 3 /* 函数功能: 计算矩阵相乘之积,结果存于数组c中 函数参数: 整型数组a、b,分别存放两个待求乘积的矩阵元素 整型数组c,存放矩阵相乘的结果 返回值: 无 */ MultiplyMatrix(int a[ROW][COL], int b[COL][ROW], int c[ROW][ROW]) { int i, j, k; for (i=0; i /* 函数功能: 输出矩阵a中的元素 函数参数: 整型数组a,存放矩阵元素 返回值: 无 */ void PrintMatrix(int a[ROW][ROW]) { int i , j ; for (i=0; i main() { int a[ROW][COL], b[COL][ROW], c[ROW][ROW], i, j; printf(\ for (i=0; i 六、字符数组========================================== 1 输入一行字符,统计其中的英文字符、数字字符、空格和其他字符的个数。 #include #define ARR_SIZE 80 main() { char str[ARR_SIZE]; int len, i, letter = 0, digit = 0, space = 0, others = 0; printf(\ string:\ gets(str); 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] == ' ' ) space ++; /*统计空格*/ else others ++; /*统计其他字符的个数*/ } printf(\ %d\\n\ printf(\ %d\\n\ printf(\ %d\\n\ printf(\ %d\\n\} 2 编写一个程序,实现将字符数组中的字符串逆序存放的功能。 #include #define ARR_SIZE 80 void Inverse(char str[], char ptr[]); main() { char a[ARR_SIZE], b[ARR_SIZE]; printf(\ } /*函数功能: 实现将字符数组中的字符串逆序存放 函数参数: 字符数组a,存放源字符串 字符数组b,存放逆序字符串 gets(a); Inverse(a, b); printf(\ puts(b); 函数返回值:无 */ void Inverse(char str[], char ptr[]) { int i = 0, j; j = strlen(str) - 1; while (str[i] != '\\0') { ptr[j] = str[i]; i++; j--; } ptr[i]='\\0'; } 3 从键盘输入一行字符,统计其中有多少单词。假设单词之间以空格分开。 #include gets(str); if (str[0] != ' ') { } else { } for (i=1; str[i]!='\\0'; i++) { if (str[i] != ' ' && str[i-1] == ' ' ) { } num++; num = 0; num = 1; char str[20]; int i, num; } } printf(\ 4 编写一个程序,其功能是删除字符串s中所出现的与变量c相同的字符。 #include void Squeeze(char s[], char c); main() { } void Squeeze(char s[], char c) { for (i=j=0; s[i] != '\\0'; i++) { if (s[i] != c) { } s[j] = s[i] ; j++; int i,j; printf(\gets(str); printf(\c = getchar(); Squeeze(str,c); puts(str); char str[20],c; } } s[j] = '\\0'; 5 不用函数strcat(),编程实现字符串连接函数strcat()的功能,将字符串srcStr连接到字符 串dstStr的尾部。 #include #define ARR_SIZE 80 void MyStrcat(char dstStr[], char srcStr[]); main() { } /* 函数功能:将源字符串srcStr中的字符串连接到目的字符串dstStr之后 函数参数:字符数组srcStr,存放源字符串 printf(\puts(s); MyStrcat(s,t); printf(\gets(s); printf(\gets(t); char s[ARR_SIZE], t[ARR_SIZE]; 字符数组dstStr,存放目的字符串 源字符串srcStr和目的字符串dstStr连接后的字符串也存于此数组中 函数返回值:无 */ void MyStrcat(char dstStr[], char srcStr[]) { unsigned int i, j; i = strlen(dstStr); /*将下标移动到目的字符串末尾*/ for (j=0; j<=strlen(srcStr); j++, i++) { dstStr[i] = srcStr[j]; } } 七、 函 数========================================== 1 设计一个函数,判断一个整数是否为素数。 #include 函数功能: 判断参数是否是素数 函数入口参数: number为整型数,要求为正整数 int n, ret; printf(\scanf(\ret = IsPrimeNumber(n); if (ret != 0) { } else { } printf(\printf(\ 函数返回值: 非0值表示是素数,否则不是素数 */ int IsPrimeNumber(int number) { } k2 编程计算组合数p?Cm?int i; if (number <= 1) return 0; /* 负数、0和1都不是素数 */ for (i=2; i<=sqrt(number); i++) { } if ((number % i) == 0) /* 被整除,不是素数 */ return 0; return 1; m!的值。 k!(m?k)!#include unsigned long Factorial(unsigned int number); main() { do{ unsigned int m, k; double p; } /* printf(\scanf(\ }while(m < k) ; p = (double)Factorial(m) / (Factorial(k) * Factorial (m-k)); printf(\ 函数功能: 计算参数的阶乘 函数入口参数: 无符号整型 函数返回值: 运算结果 */ unsigned long Factorial(unsigned int number) { } 3 设计一个函数MinCommonMultiple(),计算两个正整数的最小公倍数。 #include int MinCommonMultiple(int a, int b); main() { return result; for (i=2; i<=number; i++) result *= i; unsigned long i, result = 1; } /* int a, b, x; printf(\scanf(\ x = MinCommonMultiple(a,b); printf(\ 函数功能: 计算两个正整数的最小公倍数 函数入口参数:两个整型数 函数返回值: 最小公倍数 */ int MinCommonMultiple(int a, int b) { } 4 设计一个函数MaxCommonFactor(),利用欧几里德算法(也称辗转相除法)计算两个正 整数的最大公约数。 #include for (i=1; i if ((i*a) % b == 0) return i*a; int i; } char *pEnd; /*指针变量pEnd指向字符串的最后一个字符*/ len = strlen(pStr); /*求出字符串长度*/ for (pStart=pStr,pEnd=pStr+len-1; pStart temp = *pStart; *pStart = *pEnd; *pEnd = temp; 5 编程判断输入的一串字符是否为“回文”。所谓“回文”,是指顺读和倒读都一样的字符串。如\,\都是回文。 #include printf(\gets(str); len = strlen(str); pStart = str; pEnd = str + len - 1; while ((*pStart == *pEnd) && (pStart < pEnd)) { pStart++; char str[80], *pStart, *pEnd; int len; } pEnd--; } if (pStart < pEnd) { printf(\} else { printf(\} 6 编写一个能对任意m×n阶矩阵进行转置运算的函数Transpose()。 #include #define ROW 3 #define COL 4 void Transpose(int (*a)[COL], int (*at)[ROW], int row, int col); void InputMatrix(int (*s)[COL], int row, int col); void PrintMatrix(int (*s)[ROW], int row, int col); main() { printf(\ InputMatrix(s, ROW, COL); /*输入原矩阵,s指向矩阵s的第0行,是行指针*/ int s[ROW][COL]; int st[COL][ROW]; /*s代表原矩阵*/ /*st代表转置后的矩阵*/ } /* 函数功能: 对任意row行col列的矩阵转置 函数入口参数: 指向一维整型数组的指针变量a,指向单元存放转置前的矩阵元素 整型变量row,矩阵的行数即二维整型数组的行数 整型变量col,矩阵的列数即二维整型数组的列数 函数出口参数: 指向一维整型数组的指针变量at,指向单元存放转置后的矩阵元素 函数返回值: 无 */ void Transpose(int (*a)[COL], int (*at)[ROW], int row, int col) { } void InputMatrix(int (*s)[COL], int row, int col) /*输入矩阵元素*/ { for (i=0; i for (i=0; i for (j=0; j *(*(at+j)+i) = *(*(a+i)+j); int i, j; printf(\ PrintMatrix(st, COL, ROW); /*输出转置矩阵,*st指向st的第0行,是行指针*/ Transpose(s, st, ROW, COL); /*对矩阵s进行转置,结果存放于st中*/ } { } for (j=0; j scanf(\ /*这里*(s+i)+j等价于&s[i][j]*/ void PrintMatrix(int (*s)[ROW], int row, int col) /*输入矩阵元素*/ { } 7 用指针数组编程实现:从键盘任意输入一个数字表示月份值n,程序输出该月份的英文表示,若n不在1~12之间,则输出“Illegal month”。 #include int n; static char *monthName[]={\month\\\ \\\\\ for (i=0; i for (j=0; j printf(\ printf(\这里*(*(s+i)+j)等价于s[i][j]*/ int i, j; \ \ printf(\ scanf(\ /*输入月份*/ \ \ \ if ((n <= 12) && (n >= 1)) { printf(\输出相应月份*/ } else { printf(\ } } 8 口袋中有若干红、黄、蓝、白、黑五种颜色的球,每次从口袋中取出3个球,编程打印出得到3种不同颜色的球的所有可能取法。 #include for(i=0;i<5;i++) { for(j=i+1;j<5;j++) { for(k=j+1;k<5;k++) char *ballColor[]={\int i,j,k,m=0; /*输出错误*/
正在阅读:
c语言复习题答案(49题)03-10
新世纪国外马克思主义的发展趋势和特点06-02
河南工程学院ug数控加工试题10-21
高一物理上学期期中考试试题新人教版04-19
电气预案05-22
最开心的日子作文600字03-21
2018-2024年中国手动剃须刀市场竞争格局报告(目录) - 图文09-10
幸福从未走远作文400字07-05
学校教材订购系统 详细设计10-31
博思开票操作步骤和常见问题 - 图文09-23
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 复习题
- 答案
- 语言
- 浅谈王熙凤人物性格 - 图文
- 应届大学生培养方案
- 跳高跳远训练计划
- 知名动漫公司郑州开分号 河南动漫年销售将达50亿
- 黑苹果显卡驱动详解
- PayPal&Ipsos 2015年全球跨境贸易报告 - 图文
- 防范资金风险采取的措施及成效
- 系统辨识第三次作业
- 徐州市2018届高三第三次调研测试 语文(2)
- 北京市2012房屋建筑与装饰工程预算定额说明与计算规则
- 研究生计算机图形学课程室内场景OpenGL--实验报告
- 宁波市照明灯具批发行业企业名录2018版519家 - 图文
- 玩转APM:Rover 无人车 第一篇
- MPLS TE快速重路由技术白皮书
- 有效课堂与高效课堂解读
- 利用隐圆求最大或最小值--完美资料
- 2.1.寻访小动物 - 图文
- 7种最佳健脑食物帮你提高记忆力 - 图文
- 2019届高三数学一轮复习 第十二章 复数、算法、推理与证明 第四
- 建筑电气设计中节能措施与方法论文