浙大版《C语言程序设计(第3版)》题目集
浙大版《C语言程序设计(第3版)》题目集
问题出现再研究
挣扎的咸鱼
展开
-
练习8-2 计算两数的和与差 (10分)(简单)
本题要求实现一个计算输入的两数的和与差的简单函数。函数接口定义: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原创 2020-08-27 14:41:48 · 945 阅读 · 0 评论 -
习题7-8 字符串转换成十进制整数 (15分)(注意这题不区分大小写)
输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。输入格式:输入在一行中给出一个以#结束的非空字符串。输出格式:在一行中输出转换后的十进制数。题目保证输出在长整型范围内。输入样例:+-P-xf4+-1!#输出样例:-3905参考答案:#include<stdio.h>int main().原创 2020-08-27 14:32:54 · 711 阅读 · 0 评论 -
习题7-7 字符串替换 (15分)(把替换看作a + b都等于’A‘+‘Z‘就行了)
本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:原字母 对应字母 A Z B Y C X D W … … X C Y B Z A 输入格式:输入在一行中给出一个不超过80个字符、并以回车结束的字符串。输出格式:输出在一行中给出替换完成后的字符串。输入样例:Only the 11 CAPItaL LeTtERS are replaced.输出样例:Lnly the原创 2020-08-27 13:50:34 · 371 阅读 · 0 评论 -
习题7-6 统计大写辅音字母 (15分)(比较简单)
英文辅音字母是除A、E、I、O、U以外的字母。本题要求编写程序,统计给定字符串中大写辅音字母的个数。输入格式:输入在一行中给出一个不超过80个字符、并以回车结束的字符串。输出格式:输出在一行中给出字符串中大写辅音字母的个数。输入样例:HELLO World!输出样例:4参考答案:#include<stdio.h>int main() { int i = 0, flag = 0; char a[81] = {'0'};//输入的字原创 2020-08-27 12:30:21 · 493 阅读 · 0 评论 -
习题7-5 找鞍点 (20分)(有个疑惑,如何处理同一行或者同一列两个相同大小的数字,其余的逻辑我会写在注释里)
一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。本题要求编写程序,求一个给定的n阶方阵的鞍点。输入格式:输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。输出格式:输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。输入样例1:41 7 4 14 8 3 61 6 1 20 7 8 9输出样例1:2 1输原创 2020-08-26 15:01:45 · 548 阅读 · 0 评论 -
习题7-4 求矩阵各行元素之和 (15分)(可以说相当简单了)
本题要求编写程序,求一个给定的m×n矩阵各行元素之和。输入格式:输入第一行给出两个正整数m和n(1≤m,n≤6)。随后m行,每行给出n个整数,其间以空格分隔。输出格式:每行输出对应矩阵行元素之和。输入样例:3 26 31 -83 12输出样例:9-715参考答案:#include<stdio.h>int main(){ int i, j, m, n; int a[6][6], sum[6] = {0}; s原创 2020-08-20 23:07:20 · 819 阅读 · 0 评论 -
习题7-3 判断上三角矩阵 (15分)(用函数的方式,逻辑比较清晰)
上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。本题要求编写程序,判断一个给定的方阵是否上三角矩阵。输入格式:输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。输出格式:每个矩阵的判断结果占一行。如果输入的矩阵是上三角矩阵,输出“YES”,否则输出“NO”。输入样例:231 2 30 4 50 0 621 0-8原创 2020-08-20 22:47:07 · 207 阅读 · 0 评论 -
习题7-2 求一批整数中出现最多的个位数字 (20分)(不难)
给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。输入格式:输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。输出格式:在一行中按格式“M: n1 n2 ...”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大的顺序排列。数字间以空格分隔,但末尾不得有多余空格。输入样例:31234 2345原创 2020-08-19 13:50:26 · 992 阅读 · 1 评论 -
习题7-1 选择法排序 (20分)(冒泡排序)
本题要求将给定的n个整数从大到小排序后输出。输入格式:输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。输出格式:在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。输入样例:45 1 7 6输出样例:7 6 5 1参考答案:#include<stdio.h>int main(){ int i, j, n, temp;//input int a[10]; scanf("%原创 2020-08-18 21:40:15 · 1064 阅读 · 0 评论 -
练习7-11 字符串逆序 (15分)(代码简单,但是。。。)
输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。输入格式:输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。输出格式:在一行中输出逆序后的字符串。输入样例:Hello World!输出样例:!dlroW olleH参考答案:#include<stdio.h>int main(){ int i, n = 0; char s[82]; fgets(s, 82, stdin); while(s原创 2020-08-18 08:50:16 · 261 阅读 · 5 评论 -
练习7-10 查找指定字符 (15分)(注意怎么让输入的字符后面回车结束即可)
本题要求编写程序,从给定字符串中查找某指定的字符。输入格式:输入的第一行是一个待查找的字符。第二行是一个以回车结束的非空字符串(不超过80个字符)。输出格式:如果找到,在一行内按照格式“index = 下标”输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出"Not Found"。输入样例1:mprogramming输出样例1:index = 7输入样例2:a1234输出样例2:Not Found参考答案:#includ原创 2020-08-18 00:34:26 · 836 阅读 · 1 评论 -
练习7-9 计算天数 (15分)(比较简单)
本题要求编写程序计算某年某月某日是该年中的第几天。输入格式:输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。输出格式:在一行输出日期是该年中的第几天。输入样例1:2009/03/02输出样例1:61输入样例2:2000/03/02输出样例2:62参考答案:#include<stdio.h>int m原创 2020-08-18 00:14:15 · 230 阅读 · 0 评论 -
练习7-8 方阵循环右移 (20分)(晕了晕了)
本题要求编写程序,将给定n×n方阵中的每个元素循环向右移m个位置,即将第0、1、⋯、n−1列变换为第n−m、n−m+1、⋯、n−1、0、1、⋯、n−m−1列。输入格式:输入第一行给出两个正整数m和n(1≤n≤6)。接下来一共n行,每行n个整数,表示一个n阶的方阵。输出格式:按照输入格式输出移动后的方阵:即输出n行,每行n个整数,每个整数后输出一个空格。输入样例:2 31 2 34 5 67 8 9输出样例:2 3 1 5 6 4 8 9 7 参考答案:原创 2020-08-17 23:38:17 · 333 阅读 · 0 评论 -
练习7-7 矩阵运算 (20分)(不使用动态赋值)
给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。输入格式:输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。输出格式:在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。输入样例:42 3 4 15 6 1 17 1 8 11 1 1 1输出样例:35参考答案:#include<stdio.h>int原创 2020-08-17 22:49:13 · 123 阅读 · 0 评论 -
练习7-4 找出不是两个数组共有的元素 (20分)(做的有点麻烦)
给定两个整型数组,本题要求找出不是两者共有的元素。输入格式:输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。输出格式:在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。输入样例:10 3 -5 2 8 0 3 5 -15 9 10011 6 4 8 2 6 -5 9 0 100 8 1输出样例:3 5 -15 6 4 1参原创 2020-08-17 09:46:28 · 1514 阅读 · 0 评论 -
练习7-3 将数组中的数逆序存放 (20分)(不需要两个数组)
本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。输入格式:输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。输出格式:在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格。输入样例:410 8 1 2输出样例:2 1 8 10参考答案 :#include"stdio.h"int main(){ int n, i; int a[10原创 2020-08-15 00:01:35 · 210 阅读 · 0 评论 -
练习7-2 求最大值及其下标 (20分)(设置flag比较大小)
本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。输入格式:输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。输出格式:在一行中输出最大值及最大值的最小下标,中间用一个空格分开。输入样例:62 8 10 1 9 10输出样例:10 2参考答案:#include"stdio.h"int main(){ int a[10]; int n, i, j, flag = 0; .原创 2020-08-14 23:32:39 · 353 阅读 · 0 评论 -
习题6-8 统计一行文本的单词个数 (15分)(不难,有点绕)
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。输入格式:输入给出一行字符。输出格式:在一行中输出单词个数。输入样例:Let's go to room 209.输出样例:5参考答案:#include<stdio.h>int main(){ int count = 0, i = 0, flag = 1; char c[1000]; gets(c);//原创 2020-08-13 23:38:27 · 157 阅读 · 0 评论 -
习题6-7 简单计算器 (20分)(不要把题目想复杂了,就简单了)
模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。输入格式:输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。输出格式:在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。输入样例:1+2*10-10/2=输出样例:10参考答案:#include<stdio.h>int main(){原创 2020-08-13 22:31:56 · 523 阅读 · 0 评论 -
习题6-6 使用函数输出一个整数的逆序数 (20分)(简单)
本题要求实现一个求整数的逆序数的简单函数。函数接口定义:int reverse( int number );其中函数reverse须返回用户传入的整型number的逆序数。裁判测试程序样例:#include <stdio.h>int reverse( int number );int main(){ int n; scanf("%d", &n); printf("%d\n", reverse(n)); return原创 2020-08-12 22:02:17 · 2488 阅读 · 0 评论 -
习题6-5 使用函数验证哥德巴赫猜想 (20分)(如何保证前一项比后一项小)
本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。函数接口定义:int prime( int p );void Goldbach( int n );其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数Goldbach按照格式“n=p+q”输出n的素数分解,其中p≤q均为素数。又因为这样的分解不唯一(例如24可以分解为5+19,还可以分解为7+17),原创 2020-08-12 13:49:24 · 313 阅读 · 0 评论 -
习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)(稍难,比如怎么保证最后一位没空格)
本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有Fibonacci数。所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列。函数接口定义:int fib( int n );void PrintFN( int m, int n );其中函数fib须返回第n项Fibonacci数;函数PrintFN要在一行中输出给定范围[m,n]内的所有Fibonacci数,相邻数字间有.原创 2020-08-12 09:16:49 · 203 阅读 · 0 评论 -
习题6-3 使用函数输出指定范围内的完数 (20分)(稍复杂)
本题要求实现一个计算整数因子和的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有完数。所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。函数接口定义:int factorsum( int number );void PrintPN( int m, int n );其中函数factorsum须返回int number的因子和;函数PrintPN要逐行输出给定范围[m,n]内每个完数的因子累加形式的分解式.原创 2020-08-11 19:11:17 · 1009 阅读 · 2 评论 -
习题6-2 使用函数求特殊a串数列和 (20分)(简单)
给定两个均不超过9的正整数a和n,要求编写函数求a+aa+aaa++⋯+aa⋯a(n个a)之和。函数接口定义:int fn( int a, int n );int SumA( int a, int n );其中函数fn须返回的是n个a组成的数字;SumA返回要求的和。裁判测试程序样例:#include <stdio.h>int fn( int a, int n );int SumA( int a, int n ); int main(){ int原创 2020-08-11 15:24:52 · 642 阅读 · 0 评论 -
习题6-1 分类统计字符个数 (15分)(简单)
本题要求实现一个函数,统计给定字符串中英文字母、空格或回车、数字字符和其他字符的个数。函数接口定义:void StringCount( char s[] );其中char s[]是用户传入的字符串。函数StringCount须在一行内按照letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数的格式输出。裁判测试程序样例:#include <stdio.h>#define MAXS..原创 2020-08-11 15:01:44 · 748 阅读 · 0 评论 -
习题5-7 使用函数求余弦函数的近似值 (15分)(稍难)
本题要求实现一个函数,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e:cos(x)=x0/0!−x2/2!+x4/4!−x6/6!+⋯函数接口定义:double funcos( double e, double x );其中用户传入的参数为误差上限e和自变量x;函数funcos应返回用给定公式计算出来、并且满足误差要求的cos(x)的近似值。输入输出均在双精度范围内。裁判测试程序样例:#include <stdio.h>#i原创 2020-08-11 13:45:20 · 360 阅读 · 0 评论 -
习题5-6 使用函数输出水仙花数 (20分)(稍难)
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,n)内所有的水仙花数。函数接口定义:int narcissistic( int number );void PrintN( int m, int n );函数narcissistic判断number是否为水仙花数,是则返回1,否则返回0。函数PrintN则打印开区原创 2020-08-11 00:22:37 · 577 阅读 · 1 评论 -
习题5-5 使用函数统计指定数字的个数 (15分)(有坑)
本题要求实现一个统计整数中指定数字的个数的简单函数。函数接口定义:int CountDigit( int number, int digit );其中number是不超过长整型的整数,digit为[0, 9]区间内的整数。函数CountDigit应返回number中digit出现的次数。裁判测试程序样例:#include <stdio.h>int CountDigit( int number, int digit );int main(){ int n原创 2020-08-10 23:41:44 · 1336 阅读 · 0 评论 -
习题5-4 使用函数求素数和 (20分)(稍复杂)
本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。函数接口定义:int prime( int p );int PrimeSum( int m, int n );其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数PrimeSum返回区间[m,n]内所有素数的和。题目保证用户传入的参数m≤n。裁判测试程序样例:#include <stdio.h>#inclu.原创 2020-08-10 23:23:55 · 519 阅读 · 0 评论 -
习题5-3 使用函数计算两点间的距离 (10分)(简单)
本题要求实现一个函数,对给定平面任意两点坐标(x1,y1)和(x2,y2),求这两点之间的距离。函数接口定义:double dist( double x1, double y1, double x2, double y2 );其中用户传入的参数为平面上两个点的坐标(x1,y1)和(x2,y2),函数dist应返回两点间的距离。裁判测试程序样例:#include <stdio.h>#include <math.h>double..原创 2020-08-10 23:11:58 · 662 阅读 · 0 评论 -
习题5-2 使用函数求奇数和 (15分)(简单)
本题要求实现一个函数,计算N个整数中所有奇数的和,同时实现一个判断奇偶性的函数。函数接口定义:int even( int n );int OddSum( int List[], int N );其中函数even将根据用户传入的参数n的奇偶性返回相应值:当n为偶数时返回1,否则返回0。函数OddSum负责计算并返回传入的N个整数List[]中所有奇数的和。裁判测试程序样例:#include <stdio.h>#define MAXN 10int even( in原创 2020-08-10 23:06:08 · 639 阅读 · 0 评论 -
习题5-1 符号函数 (10分)(简单)
本题要求实现符号函数sign(x)。函数接口定义:int sign( int x );其中x是用户传入的整型参数。符号函数的定义为:若x大于0,sign(x)=1;若x等于0,sign(x)=0;否则,sign(x)=−1。裁判测试程序样例:#include <stdio.h>int sign( int x );int main(){ int x; scanf("%d", &x); printf("sign(%d)...原创 2020-08-10 23:00:01 · 529 阅读 · 0 评论 -
练习5-3 数字金字塔 (15分)(简单)
本题要求实现函数输出n行数字金字塔。函数接口定义:void pyramid( int n );其中n是用户传入的参数,为[1, 9]的正整数。要求函数按照如样例所示的格式打印出n行数字金字塔。注意每个数字后面跟一个空格。裁判测试程序样例:#include <stdio.h>void pyramid( int n );int main(){ int n; scanf("%d", &n); pyramid(n);原创 2020-08-10 22:56:52 · 508 阅读 · 0 评论 -
练习5-2 找两个数中最大者 (10分)(函数入门)
本题要求对两个整数a和b,输出其中较大的数。函数接口定义:int max( int a, int b );其中a和b是用户传入的参数,函数返回的是两者中较大的数。裁判测试程序样例:#include <stdio.h>int max( int a, int b );int main(){ int a, b; scanf("%d %d", &a, &b); printf("max = %d\n", max(a, b原创 2020-08-10 22:46:29 · 503 阅读 · 0 评论 -
练习5-1 求m到n之和 (10分)(函数入门)
本题要求实现一个计算m~n(m<n)之间所有整数的和的简单函数。函数接口定义:int sum( int m, int n );其中m和n是用户传入的参数,保证有m<n。函数返回的是m~n之间所有整数的和。裁判测试程序样例:#include <stdio.h>int sum(int m, int n);int main(){ int m, n; scanf("%d %d", &m, &n); prin原创 2020-08-10 22:43:49 · 987 阅读 · 0 评论 -
习题4-11 兔子繁衍问题 (15分)(看起来有点难)
一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?输入格式:输入在一行中给出一个不超过10000的正整数N。输出格式:在一行中输出兔子总数达到N最少需要的月数。输入样例:30输出样例:9参考答案:#include<...原创 2020-05-06 00:29:28 · 198 阅读 · 0 评论 -
习题4-10 猴子吃桃问题 (15分)(逆向思考)
一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?输入格式:输入在一行中给出正整数N(1<N≤10)。输出格式:在一行中输出第一天共摘了多少个桃子。输入样例:3输出样例:10...原创 2020-05-05 23:41:56 · 250 阅读 · 0 评论 -
习题4-9 打印菱形图案 (15分)(做的有点晕)
本题要求编写程序,打印一个高度为n的、由“*”组成的正菱形图案。输入格式:输入在一行中给出一个正的奇数n。输出格式:输出由n行星号“*”组成的菱形,如样例所示。每个星号后跟一个空格。输入样例:7输出样例: * * * * * * * * * * * * * * * * * * * * * * * * ...原创 2020-05-05 23:34:12 · 381 阅读 · 0 评论 -
习题4-8 高空坠球 (20分)(有小坑,注意n=0的情况)
皮球从某给定高度自由落下,触地后反弹到原高度的一半,再落下,再反弹,……,如此反复。问皮球在第n次落地时,在空中一共经过多少距离?第n次反弹的高度是多少?输入格式:输入在一行中给出两个非负整数,分别是皮球的初始高度和n,均在长整型范围内。输出格式:在一行中顺序输出皮球第n次落地时在空中经过的距离、以及第n次反弹的高度,其间以一个空格分隔,保留一位小数。题目保证计算结果不超过双精度...原创 2020-05-05 13:30:37 · 370 阅读 · 0 评论 -
习题4-7 最大公约数和最小公倍数 (15分)(不难)
本题要求两个给定正整数的最大公约数和最小公倍数。输入格式:输入在一行中给出两个正整数M和N(≤1000)。输出格式:在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。输入样例:511 292输出样例:73 2044参考答案:#include<stdio.h>int main(){ int m, n, i, j,...原创 2020-05-05 13:07:19 · 166 阅读 · 0 评论