c语言

C语言经典例25-阶乘累加求和

大憨熊 提交于 2020-02-09 03:33:40
目录 1 题目 2 分析 3 实现 4 运行结果 1 题目 求1!+2!+3!+…+20!的和。 2 分析 本题的本质就是求阶乘,观察规律可以发现, 1 ! 1! 1 ! 和 2 ! 2! 2 ! 只差乘2, 2 ! 2! 2 ! 和 3 ! 3! 3 ! 只差乘3,所以每个相加项都和前一项有规律的倍数关系,所以就可以利用循环语句来完成, 如第一次循环的时候加1即 1 ! 1! 1 ! ,第二次循环就乘2即 2 ! 2! 2 ! ,从1循环到20即可。当然求阶乘还有用递归的方法,但是用在本题效率很低,递归求阶乘的方法如下: int factorial ( int n ) { if ( n == 0 || n == 1 ) return 1 ; // 0和1的阶乘都是1 return n * ( factorial ( n - 1 ) ) ; } 3 实现 # include <stdio.h> int main ( ) { double sum = 0 ; double x = 1 ; for ( int i = 1 ; i <= 20 ; i ++ ) { x = x * i ; sum = sum + x ; } printf ( "%f\n" , sum ) ; } 4 运行结果 2561327494111820300.000000 来源: CSDN 作者: syzdev

PTA|《C语言程序设计(第3版)》习题7-1 选择法排序 (20分)

巧了我就是萌 提交于 2020-02-09 03:31:38
题目 本题要求将给定的n个整数从大到小排序后输出。 输入格式: 输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。 输出格式: 在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。 输入样例: 4 5 1 7 6 输出样例: 7 6 5 1 参考解答 # include <stdio.h> int main ( ) { int n , i , j , num [ 10 ] , index , tmp ; scanf ( "%d" , & n ) ; for ( i = 0 ; i < n ; i ++ ) scanf ( "%d" , & num [ i ] ) ; for ( i = 0 ; i < n ; i ++ ) { index = i ; for ( j = i ; j < n ; j ++ ) { if ( num [ j ] > num [ index ] ) index = j ; } tmp = num [ index ] ; num [ index ] = num [ i ] ; num [ i ] = tmp ; } for ( i = 0 ; i < n ; i ++ ) { if ( i != 0 ) printf ( " " ) ; printf ( "%d" , num [ i ] ) ; }

PTA|《C语言程序设计(第3版)》习题7-2 求一批整数中出现最多的个位数字 (20分)

两盒软妹~` 提交于 2020-02-08 23:34:34
题目 给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。 输入格式: 输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。 输出格式: 在一行中按格式“M: n1 n2 …”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大的顺序排列。数字间以空格分隔,但末尾不得有多余空格。 输入样例: 3 1234 2345 3456 输出样例: 3 : 3 4 参考解答 # include <stdio.h> int main ( ) { int n , i , j , num , max , numsum [ 10 ] = { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ; scanf ( "%d" , & n ) ; for ( i = 0 ; i < n ; i ++ ) { scanf ( "%d" , & num ) ; if ( num < 0 ) num = - num ; while ( num != 0 ) { numsum [ num % 10 ] ++ ; num = num / 10 ; } } max = numsum [ 0 ] ; for ( i

PTA|《C语言程序设计(第3版)》习题7-3 判断上三角矩阵 (15分)

我与影子孤独终老i 提交于 2020-02-08 22:30:34
题目 上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。 本题要求编写程序,判断一个给定的方阵是否上三角矩阵。 输入格式: 输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。 输出格式: 每个矩阵的判断结果占一行。如果输入的矩阵是上三角矩阵,输出“YES”,否则输出“NO”。 输入样例: 2 3 1 2 3 0 4 5 0 0 6 2 1 0 - 8 2 输出样例: YES NO 参考解答 # include <stdio.h> int judge ( int n , int num [ 10 ] [ 10 ] ) { int i , j , k , ret = 1 ; for ( i = 0 ; i < n ; i ++ ) { for ( j = i - 1 ; j >= 0 ; j -- ) { if ( num [ i ] [ j ] != 0 ) { ret = 0 ; break ; } } } return ret ; } int main ( ) { int T , n , i , j , k ; int num [ 10 ] [ 10 ] ; scanf ( "%d" , & T ) ; for ( i = 0 ;

PTA|《C语言程序设计(第3版)》练习8-2 计算两数的和与差 (10分)

喜夏-厌秋 提交于 2020-02-08 22:04:18
题目 本题要求实现一个计算输入的两数的和与差的简单函数。 函数接口定义: void sum_diff ( float op1 , float op2 , float * psum , float * pdiff ) ; 其中op1和op2是输入的两个实数, psum和 pdiff是计算得出的和与差。 裁判测试程序样例: # include <stdio.h> void sum_diff ( float op1 , float op2 , float * psum , float * pdiff ) ; int main ( ) { float a , b , sum , diff ; scanf ( "%f %f" , & a , & b ) ; sum_diff ( a , b , & sum , & diff ) ; printf ( "The sum is %.2f\nThe diff is %.2f\n" , sum , diff ) ; return 0 ; } /* 你的代码将被嵌在这里 */ 输入样例: 4 6 输出样例: The sum is 10.00 The diff is - 2.00 参考解答 void sum_diff ( float op1 , float op2 , float * psum , float * pdiff ) { * psum =

C语言for循环嵌套示例

爱⌒轻易说出口 提交于 2020-02-08 21:18:43
打印九九乘法表 #include <stdio.h> int main() { int n,i,j; for (i=1;i<=9;i++) printf ( "%-4d" ,i); printf ( "\n" ); for (i=1;i<=9;i++) for (j=1;j<=i;j++) { printf ( "%-4d" ,i*j); if (j==i) printf ( "\n" ); } return 0; } 打印实心三角形图案 #include <stdio.h> int main( ) { int i,j,n; printf ( "\nPlease Enter n:" ); scanf ( "%d" ,&n); for (i=1;i<=n;i++) { for (j=1;j<=n-i;j++) printf ( " " ); for (j=1;j<=2*i-1;j++) printf ( "*" ); printf ( "\n" ); } return 0; } 打印空心三角形图案 #include <stdio.h> int main( ) { int i,j,n; printf ( "\nPlease Enter n:" ); scanf ( "%d" ,&n); for (i=1;i<=n;i++) { for (j=1;j<=n-i;j++) printf (

PTA|《C语言程序设计(第3版)》习题7-4 求矩阵各行元素之和 (15分)

北战南征 提交于 2020-02-08 20:35:34
题目 本题要求编写程序,求一个给定的m×n矩阵各行元素之和。 输入格式: 输入第一行给出两个正整数m和n(1≤m,n≤6)。随后m行,每行给出n个整数,其间以空格分隔。 输出格式: 每行输出对应矩阵行元素之和。 输入样例: 3 2 6 3 1 - 8 3 12 输出样例 : 9 - 7 15 参考解答 # include <stdio.h> int main ( ) { int m , n , i , j ; int rec [ 6 ] [ 6 ] , sum [ 6 ] = { 0 } ; scanf ( "%d %d" , & m , & n ) ; for ( i = 0 ; i < m ; i ++ ) { for ( j = 0 ; j < n ; j ++ ) { scanf ( "%d" , & rec [ i ] [ j ] ) ; sum [ i ] + = rec [ i ] [ j ] ; } } for ( i = 0 ; i < m ; i ++ ) { printf ( "%d\n" , sum [ i ] ) ; } return 0 ; } 来源: CSDN 作者: 烫烫烫奥特曼 链接: https://blog.csdn.net/weixin_44421292/article/details/104227001

C语言寒假大作战02

為{幸葍}努か 提交于 2020-02-08 20:32:06
这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/CST2019-1 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/10245 这个作业的目标 学会Gitee与git基础命令与使用 作业正文 https://i-beta.cnblogs.com/posts/edit 其他参考文献 百度 学长讲解视频 Git自助手册 (待补) 来源: https://www.cnblogs.com/wllrky/p/12284561.html

PTA|《C语言程序设计(第3版)》习题7-5 找鞍点 (20分)

天大地大妈咪最大 提交于 2020-02-08 20:24:22
题目 一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。 本题要求编写程序,求一个给定的n阶方阵的鞍点。 输入格式: 输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。 输出格式: 输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。 输入样例1: 4 1 7 4 1 4 8 3 6 1 6 1 2 0 7 8 9 输出样例1: 2 1 输入样例2: 2 1 7 4 1 输出样例2: NONE 参考解答 # include <stdio.h> int main ( ) { int a [ 6 ] [ 6 ] , i , j , k , n , b [ 6 ] ; scanf ( "%d" , & n ) ; for ( i = 0 ; i < n ; i ++ ) { for ( j = 0 ; j < n ; j ++ ) scanf ( "%d" , & a [ i ] [ j ] ) ; } for ( i = 0 ; i < n ; i ++ ) { b [ i ] = a [ i ] [ 0 ] ; for ( j = 0 ; j < n ; j ++ ) { if ( a [ i ] [ j ] > b [ i ] ) b

C语言寒假大作战02

眉间皱痕 提交于 2020-02-08 20:04:07
C语言寒假大作战02 这个作业属于哪个课程 班级链接 这个作业要求在哪里 作业链接 这个作业的目标 使用函数、Switch语句来完成菜单程序 作业正文 本随笔 其他参考文献 学长写的Git操作快速入门 2.2.2 设计思路和遇到的问题 用switch和while函数做题 用自定义函数完成某些步骤 没带书回来,记忆又差浪费很多时间回顾知识 各种小错误导致心情烦躁 2.2.3 程序结果截图 2.2.4 程序代码 #include<stdio.h> int help(int x); int exit(int y); int main(void) { printf("====口算生成器====\n"); printf("欢迎使用此生成器(滑稽)\n\n"); printf("帮助信息\n"); printf("您需要输入命令代号来进行操作,且\n"); printf("一年级的题目为不超过十位数的加减法;\n"); printf("二年级的题目为不超过百位数的乘除法:\n"); printf("三年级的题目为不超过百位数的加减乘除的混合题目.\n"); int a=-1; int b=0; int bangzhu,tuichu,x,y; while(a!=0) { printf(" \n"); printf("操作列表:\n"); printf("1)一年级 2)二年级 3)三年级\n")