c语言大一经典题目

经典题目

一、熟悉编程环境

编程题

实验01-1:熟悉编程环境,实现基本输出设计

在屏幕上输出短句:Programming in C is fun!

实验01-2:熟悉编程环境,实现基本输出设计

在屏幕上输出短句:What is a computer?

实验01-3:熟悉编程环境,实现基本输出设计

在屏幕上输出一个倒三角形,如下列所示:

* * * *
 * * *
  * *
   *

二、格式化输出

编程题

实验01-4:简单程序设计,格式化输入输出

【问题描述】计算摄氏温度:输入华氏温度,输出对应的摄氏温度。计算公式如下: c = 5 × ( f − 32 ) ÷ 9 c=5×(f-32)÷9 c=5×(f32)÷9其中, c c c表示摄氏温度, f f f表示华氏温度,均使用浮点数存储数据。
【输入形式】输入一个温度值。
【输出形式】输出的数值结果前带有字符串 C e l s i u s = Celsius= Celsius=”,输出保留二位小数。
【样例输入】 150 150 150
【样例输出】 C e l s i u s = 65.56 Celsius=65.56 Celsius=65.56

实验01-5:简单程序设计,格式化输入输出

【问题描述】求给定序列 ( 1 + 1 / 2 + 1 / 3 + … … ) (1+1/2+1/3+……) (1+1/2+1/3+……) n n n项的和:输入一个正整数 n n n​,计算序列 1 + 1 / 2 + 1 / 3 + … … 1+1/2+1/3+…… 1+1/2+1/3+……的前 n n n项之和;
【输入形式】输入一个整数值,输出一个单精度浮点数。
【输出形式】输出n的值,前面包含字符串" n = n= n=“;输出逗号” , , ,“;输出求和后的结果值,前面包含字符串" s u m = sum= sum=”,保留 7 7 7位小数
【样例输入】 5 5 5
【样例输出】 n = 5 , s u m = 2.2833335 n=5,sum=2.2833335 n=5,sum=2.2833335
【补充说明】若结果为总是为1,请仔细思考有关数据类型运算规则的问题。同时思考,若使用双精度浮点输出,结果应该是多少?

实验01-6:简单程序设计,格式化输入输出

【问题描述】阶梯电价:某电力公司执行“阶梯电价”,居民用电分为两个阶梯:月用电量 50 50 50千瓦时(含 50 50 50千瓦时)以内的,电价为 0.53 0.53 0.53元/千瓦时,超过 50 50 50千瓦时的,超出部分的用电量电价上调 0.05 0.05 0.05元/每千瓦时。编写程序,输入用户的月用电量(千瓦时),计算并输出该用户应支付的电费(元)。
【输入形式】用电量(整数数据)
【输出形式】包含用电量及电费数据(浮点型数据,保留两位小数),可参考样例
【样例输入】 40 40 40
【样例输出】 k W h = 40 , p a y = 21.20 kWh=40,pay=21.20 kWh=40,pay=21.20

实验01-7:大小写字母转换

【问题描述】输入一个字母字符,如果是大写字母,将其转换成相应的小写字母,如果是小写字母,将其转换成及相应的大写字母
【样例输入】 a a a
【样例输出】 A A A
【样例说明】输入 A A A 输出 a a a

三、循环

编程题

实验03-1:循环:最大公约数和最小公倍数

【问题描述】输入两个数 m m m n n n,输出他们的最大公约数和最小公倍数
【输入形式】下划线为输入内容," I n u p t m , n : Inupt m,n: Inuptm,n:"为提示信息,需跟换行符

I n p u t m , n : Input m,n: Inputm,n:
3 7

【输出形式】分别输出最大公约数和最小公倍数,以空格分隔
【样例输入】

I n p u t m , n : Input m,n: Inputm,n:
3 7

【样例输出】 121 1 21 121

实验03-2:循环:字符提取

【问题描述】输入一组各类字符,以#号字符作为结尾,输出这组字符中所有的数字。
【输入形式】各类字符一组,以#号字符结束
【输出形式】字符中的数字,连续输出,中间没有间隔
【样例输入】abc123edf4!2#
【样例输出】 12342 12342 12342

实验03-3:循环:求一组数据中的最小值

【问题描述】输入一个正整数n,再输入n个整数,输出其中最小的值。
【输入形式】先输入一个整数n,再根据n,输入n个数
【输出形式】输出最小值,形式: m i n = ? min=? min=?
【样例输入】
5 5 5
10224672 10 22 4 67 2 10224672
【样例输出】
m i n = 2 min=2 min=2

实验03-4:循环:提取整数的各位数字并求和

【问题描述】输入一个整数,求该整数的位数以及各位数字之和。
【输入形式】一个整数
【输出形式】两个整数值,分别是输入整数的位数值及其各位数字之和的值,两个数之间用空格分隔。
【样例输入】 1237 1237 1237
【样例输出】 413 4 13 413

实验03-5:循环:求出三位数给定区间内的水仙花数

【问题描述】输入两个三位数 m m m n ( m < n ) n(mn(m<n)​,求出该区间内所有的水仙花数。
【输入形式】由小到大的两个三位整数
【输出形式】提示信息" N a r c N o : Narc No: NarcNo:​"及 0 0 0​或多个水仙花数,用空格分隔
【样例输入】 100400 100 400 100400
【样例输出】 N a r c N o : 153370371 Narc No:153 370 371 NarcNo:153370371

实验03-6:循环:输出三角形字符阵列图形

【问题描述】输入一个正整数 n ( n < 7 ) n(n<7) n(n<7)​​;输出 n n n​​行由大写字符 A A A​​开始的,构成三角形字符阵列图形,具体参考样例。
【输入形式】一个整数 n n n​​
【输出形式】上三角字符阵列,其字符按由行到列的方式,依次按字母表顺序输出,字母之间有一个空格
【样例输入】 4 4 4
【样例输出】

A B C D A B C D ABCD
E F G E F G EFG
H I H I HI
J J J

四、函数

程序片段编程题

实验04-1:求一组数中奇数的和

【问题描述】输入一批正整数,以零或复数为结束标记,求其中所有奇数的和。要求定义和调用函数 e v e n ( n ) even(n) even(n)​判断整数的奇偶性,当 n n n​为偶数时返回 1 1 1,否则返回零。
根据程序中的提示,在对应位置编写相关函数及内容。

#include
//在此处编写函数代码
int even(int n){
    
}
int main(){
	int sum=0,x;
	scanf("%d",&x);
	while(x>0){
		if(even(x)==0)
			sum=sum+x;
		scanf("%d",&x);
	}
	printf("sum=%d\n",sum);
	return 0;
}
实验04-2:使用函数计算两点间的距离

【问题描述】给定平面上任意两点坐标 ( x 1 , y 1 ) (x1,y1) (x1,y1)​和 ( x 2 , y 2 ) (x2,y2) (x2,y2)​,求这两点之间的距离(保留两位小数)。要求定义和调用函数 d i s t ( x 1 , y 1 , x 2 , y 2 ) dist(x1,y1,x2,y2) dist(x1,y1,x2,y2)计算两点间的距离。
根据程序中的提示,在对应位置编写相关函数及内容。

#include
#include
//在此处编写dist函数
double dist(float x1,float y1,float x2,float y2){

}
int main(){
	float xs,ys,xe,ye,d;
	scanf("%f%f",&xs,&ys);
	scanf("%f%f",&xe,&ye);
	d=dist(xs,ys,xe,ye);
	printf("Distance=%.2f",d);
	return 0;
}
实验04-3:使用函数计算素数并求和

【问题描述】输入两个正整数 m m m n ( m < = 1 , n < = 500 ) n(m<=1,n<=500) n(m<=1,n<=500),统计并输出 m m m n n n之间的素数个数以及这些素数的和。注意: 1 1 1​不是素数,要求定义并调用函数 p r i m e ( m ) prime(m) prime(m)​判断 m m m​是否为素数,当 m m m为素数是返回 1 1 1​,否则返回 0 0 0。根据程序中的提示,在对应位置编写相关函数及内容。

#include
//在此处添加函数声明

int main(){
	int m,n,ct=0,sum=0,i;
	scanf("%d%d",&m,&n);
	if(m<2) m=2;
	for(i=m;i<=n;i++)
		if(prime(i)){
			ct++;
			sum=sum+i;
		}
	printf("count=%d,sum=%d\n",ct,sum);
	return 0;
}
int prime(int m){
//在此处编写函数
}
实验04-4:使用函数统计指定数字个数

【问题描述】输入一个整数 m m m,再输入一个数字 n n n,统计该整数中一共包含了几个数字 n n n。输出统计结果。要求定义并调用函数 c o u n t d i g i t ( n u m b e r , d i g i t ) countdigit(number,digit) countdigit(number,digit)​,它的功能是统计整数 n u m b e r number number​中数字 d i g i t digit digit的个数。根据程序中的提示,在对应位置编写相关函数及内容。

#include
//根据题意,在此处编写函数代码
int countdigit(int number,int digit){
	
}
int main(){
	int n,d,y;
	scanf("%d%d",&n,&d);
	y=countdigit(n,d);
	printf("Number of digit %d:%d",d,y);
	return 0;
}
实验04-5:使用函数求余弦函数的近似值

【问题描述】输入精度e,用公式就 c o s ( x ) cos(x) cos(x)的近似值,精确到最后一项的绝对值小于 e e e
c o s ( x ) cos(x) cos(x)的公式: c o s ( x ) = x 0 / 0 ! − x 2 / 2 ! + x / 4 ! − x 6 / 6 ! + … … cos(x)=x^0/0! -x^2/2!+x^/4!-x^6/6!+…… cos(x)=x0/0!x2/2!+x/4!x6/6!+……​​
要求定义和调用函数 f u n c o s ( e , x ) funcos(e,x) funcos(e,x)求余弦函数的值。

#include
#include
//在此处编写要求的函数
double funcos(double e,double x){
	
}
int main(){
	double e,x,rz;
	scanf("%lf%lf",&e,&x);
	rz=funcos(e,x);
	printf("sum=%lf",rz);
	return 0;
}

编程题

实验04-6:统计字符串中各类字符个数

【问题描述】输入一行字符,统计其中英文字母、空格、数字和其他字符的个数。
【输入形式】输入一行字符。
【输出形式】输出各类字符串的个数。
【样例输入1】

Programming is fun!​​

【样例输出】

letter=16,blank=2,digit=0,other=1​

【样例输入2】

13 is a luck digit​​​​

【样例输出】

letter=12,blank=4,digit=2,other=0​​​​

【样例说明】输入的数据之间以一个空格相隔。英文字母区分大小写。必须严格按样例输入输出。

实验04-7:编程题,输出m ~n 之间所有的Fibonacci 数

【问题描述】
输入 2 2 2​​​个正整数m和 n ( m < 1 , n < = 10000 ) n(m<1,n<=10 000) n(m<1n<=10000)​​​​,输出 m − n m-n mn​​​ 之间所有的 F i b o n a c c i Fibonacci Fibonacci​​数。 F i b o n a c c i Fibonacci Fibonacci​​数列(第一项起): 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 1,1,2,3,5,8,13,21, 1,1,2,3,5,8,13,21,​​…。要求定义并调用函数 f i b ( n ) fib(n) fib(n)​​,它的功能是返回第 n n n​项 F i b o n a c c i Fibonacci Fibonacci​ 数。例如, f i b ( 7 ) fib(7) fib(7)​的返回值是13。
【输入形式】从键盘输入 2 2 2​个整数 m m m​和 n n n​​。
【输出形式】输出 m − n m-n mn​之间所有的 F i b o n a c c i Fibonacci Fibonacci 数。
【样例输入1】

Input m: 20
Input n: 100

【样例输出1】

21 34 55 89

【样例输入2】

Input m: 50
Input n: 300

【样例输出2】

55 89 144 233

【样例说明】
输入提示符后要加一个空格。例如 I n p u t i n t e g e r s : Input integers: Inputintegers:,其中:后要加一个且只能一个空格。输出数据之间有且仅有一个空格。英文字母区分大小写。必须严格按样例输入输出。

实验04-8:求m~n 之间的所有完数

【问题描述】输入 2 2 2​​ 个正整数 m m m​​ 和 n ( m > = 1 , n > = 1000 ) n(m>=1,n>=1 000) n(m>=1,n>=1000)​​,输出 m − n m -n mn​​ 之间的所有完数,完数就是因子和与它本身相等的数。要求定义并调用函数 f a c t o r s u m ( n u m b e r ) factorsum(number) factorsum(number)​,它的功能是返回 n u m b e r number number 的因子和。
例如, f a c t o r s u m ( 12 ) factorsum(12) factorsum(12)​的返回值是 16 ( 1 + 2 + 3 + 4 + 6 ) 16(1 +2 +3 +4 +6) 16(1+2+3+4+6)​​。
【输入输出样例1】 (加粗部分为键盘输入,其余部分为程序输出)

Input m: 1
Input n: 100
1 6 28 (输出格式控制符为:%5d)

【输入输出样例2】 (下划线部分为键盘输入,其余部分为程序输出)

Input m: 1
Input n: 500
1 6 28 496 (输出格式控制符为:%5d)

【样例说明】输入提示符后要加一个空格。例如" I n p u t m : Input m: Inputm: “,其中”:"后要加一个且只能一个空格。英文字母区分大小写。必须严格按样例输入输出。

实验04-9:求两个正整数之间的水仙花数

【问题描述】输入 2 2 2​​​ 个正整数 m m m​​​ 和 n ( 1 < m , n < 1000 ) n(1n(1<m,n<1000)​​​​​,输出 m − n m-n mn​​之间的所有水仙花数。水仙花数是指各位数字的立方和等于其自身的数。要求定义并调用函数 i s ( n u m b e r ) is(number) is(number)​判断 n u m b e r number number​​的各位数字之立方和是否等于其自身。
【输入形式】输入 2 2 2​个正整数 m m m​​ 和 n ( 1 < m , n > 1000 ) n(11000) n(1<m,n>1000)​​
【输入输出样例1】 (下划线部分表示输入)

Input m: 100
Input n: 400
153
370
371

【样例说明】
输入提示符后要加一个空格。例如 I n p u t m : Input m: Inputm: ,其中:后要加一个且只能一个空格。英文字母区分大小写。必须严格按样例输入输出。

实验04-10:验证歌德巴赫猜想

【问题描述】任何一个大于 6 6 6的偶数均可表示为 2 2 2个素数之和。例如 6 = 3 + 3 , 8 = 3 + 5 6=3+3,8=3+5 6=3+3,8=3+5​,…, 18 = 5 + 13 18=5+13 18=5+13。将 6 − 100 6-100 6100之间的偶数都表示成 2 2 2个素数之和,打印时一行打印5组。素数就是只能被1和自身整除的正整数,最小的素数是2。要求定义并调用函数 p r i m e ( m ) prime(m) prime(m)判断 m m m​是否为素数,当 m m m​为素数时返回 1 1 1​,否则返回 0 0 0​。
【输入形式】无输入
【输出形式】按从小到大、每组五行。每组的格式为:%4d=%2d+%2d, 等号和加号两侧无空格。
a + a a + a a a + a a … a a +aa +aaa +aa…a a+aa+aaa+aaa( n n n a a a​​) 之和
【问题描述】输入2个正整数a和n,求a+aa+aaa+aa…a(n个a)之和。例如,输入2和3,输出246(2+22+222)。
【输入形式】从键盘输入正整数a和正整数n。
[输入输出样例1]】(下划线部分表示输入)

Input a, n: 8 5
s=98760

【样例说明】输入提示符后要加一个空格。其中":“后要加一个且只能一个空格。输出语句的”="两边无空格。英文字母区分大小写。必须严格按样例输入输出。

五、数组

编程题

实验06-1:在有序数组中插入数据并保持有序

【问题描述】已知一个整数数组大小为6,先输入6个有序数据。再输入一个正整数,将输入的整数放入到数组中,并使其依然保持有序(数组只存放6个元素,最大的数据会被舍弃)
【输入形式】
1 3 5 7 9 11
8
【输出形式】1 3 5 7 8 9

实验06-2:将数组中的数逆序存放

【问题描述】输入一个正整数n(1 【输入形式】先输入一个整数n,再输入n个整数,用空格间隔
【输出形式】输出n个整数,用空格间隔
【样例输入】
5
1 2 3 4 5
【样例输出】
5 4 3 2 1

实验06-3:找出不是两个数组共有的元素

【问题描述】输入一个正整数n(1 【输入形式】先输入一个正整数n后,输入n个整数,用空格分隔。再输入一个正整数m,再输入m个整数,用空格分隔。
【输出形式】一组整数,用空格分隔数据
【样例输入】
5
1 3 5 7 9
6
1 2 3 4 5 6
【样例输出】
7 9 2 4 6

实验06-4:对数组中的数据进行排序

【问题描述】输入10个数到数组中,对数组中的数按由小到大排序并输出
【输入形式】10个整数,用空格分隔
【输出形式】10个由小到大的整数,用空格分隔
【样例输入】
1 3 5 2 9 4 6 0 7 8
【样例输出】
0 1 2 3 4 5 6 7 8 9

实验06-5:寻找二维数组中的鞍点

【问题描述】输入一个4×4的矩阵中的所有元素,设其最多只有一个鞍点,寻找该鞍点,如果有,则输出其下标及对应的值,若没有,则输出"NO"。鞍点是指二维数组中的一个元素,在该行上最大,在该列上最小。
【输入形式】输入16个整数,存放在一个4×4的二维数组中
【输出形式】若有鞍点,则输出其下标(两个整数)和对应的值,若无鞍点,则输出"NO"。
【样例输入】
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9
【样例输出】
[2][1] 6

实验06-6:输出螺旋方阵外边

【问题描述】螺旋方阵,是指对任意给定的n,将1到n×n的数字从左上角第一个格子开始,按顺时针螺旋方向顺序填入n×n的方阵里(向内螺旋)。输入一个正整数,输出螺旋方阵的外边内容(仅输出外边内容,有能力的同学可考虑输出整个螺旋方阵)。
【输入形式】一个正整数n(n小于等于6)
【输出形式】螺旋方阵外边。
【样例输入】5
【样例输出】
1 2 3 4 5
16 0 0 0 6
15 0 0 0 7
14 0 0 0 8
13 12 11 10 9
【样例说明】输出每个整数占两个字符位,中间用空格隔开

实验06-7:查找指定字符

【问题描述】输入一个字符,再输入一个以回车结束的字符串(少于80个字符)在字符串中查找该字符。
【输入形式】一个字符后,再输入一个字符串
【输出形式】一个整数,说明该字符在字符串中的位置,若无该字符,则显示"Not Found"
【样例输入】
m
programming
【样例输出】
7
【样例说明】查找并输出第一个字符的位置,位置从1开始计数。

实验06-8:字符串转换成十进制整数

【问题描述】输入一个以’#‘结束的字符串,滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数的字符串,然后将其转化为十进制数后输出。如果过滤后字符串的首字符为’-‘,代表的是负数。
【输入形式】一个字符串
【输出形式】一个十进制整数
【样例输入】+P-xf4±1!#
【样例输出】-3905
【样例说明】输入的内容,按十六进制数要求将数值(09,AE)和符号(在数值之前的’-')保留,得到-f41,转换为十进制后市-3905
【评分标准】

实验06-9:求一组整数的最大值及其下标

【问题描述】输入一个正整数n(1 【输入形式】从键盘输入一个正整数n和n个整数。
【输入输出样例1】(下划线部分表示输入)
Input n: 5
Input 5 integers: 1 2 5 4 0
max=5, index=2
【样例说明】
输入提示符后要加一个空格。例如Input n: ,其中:后要加一个且只能一个空格。
等号前后无空格,逗号后有一个空格。
英文字母区分大小写。必须严格按样例输入输出。

六、指针

程序片段编程题

实验07-1:利用指针实现拆分实数

【问题描述】拆分实数的整数和小数部分:要求自定义一个函数void splitfloat(float x,int *intpart,flaot *fracpart)。其中x是要被拆分的实数,intpart和fracpart分别是将实数拆分出来的整数和小数部分。通过定义的主函数,编写对应的splitflaot函数内容。
【样例输入】
12.4567
【样例输出】
The intpart is 12
The fracpart is 0.456700

#include
void strmcpy(char *st,char *tt,int m){

}
int main(){
 	char st[20],tt[20],ch;
 	int i=0,m;
 	scanf("%c",&ch);
	while(ch!='\n'){
		tt[i++]=ch;
		scanf("%c",&ch);
	}
	tt[i]='\0';
 	scanf("%d",&m);
 	strmcpy(st,tt,m);
 	printf("%s\n",st);
}
实验07-2:使用函数进行选择法排序

【问题描述】定义函数void sort(int a[], int n),用选择法对数组a中的元素升序排序。主函数中输入n(n<=10)再输入n个数放入数组,调用函数排序后输出数组内容。
【样例输入】
6
1 5 -9 2 4 -6
【样例输出】
-9 -6 1 2 4 5

#include
void sort(int a[], int n){

}

int main(){
	int a[10],n,i;
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%d",&a[i]);
	sort(a,n);	
	for(int i=0;i<n;i++)
		printf("%d ",a[i]);
	
}
实验07-3:在数组中查找指定元素

【问题描述】输入一个正整数n,再输入n个整数存入数组中,再输入一个整数x,在数组中查找x,如果找到则输出相应的下标,否则输出“Not found”。要求定义并调用函数search(list,n,x),其功能是在数组中查找元素x,若找到则返回相应下标,否则返回-1;
【样例输入】
3
1 2 -6
2
【样例输出】
1

#include
void printArray(int a[],int n){

}
void setArray(int a[],int n){

}
int search(int list[],int n,int x){

}

int main(){
	int a[10],n,r,x;
	scanf("%d",&n);
	setArray(a,n);
	scanf("%d",&x);
	r=search(a,n,x);
	if(r>=0)
		printf("%d\n",r);
	else
		printf("Not found\n");	
}
实验07-4:字符串逆序

【问题描述】设计一个函数void f(char *p),对p指向的字符串进行逆序,要求函数不能定义任何数组、不能调用任何字符串处理函数。在主函数中输入字符串,调用f(),输出逆序后的字符串。
【样例输入】
abcd
【样例输出】
dcba

#include
void f(char *p){
char ch;
int i,k=0;
//strlen
	for(i=0;*(p+i)!='\0';i++)
		k++;

	for(i=0;i<k/2;i++){
    	ch=*(p+i);
    	*(p+i)=*(p+k-i-1);
    	*(p+k-i-1)=ch;
  	}

}
int main(){
	char st[20];
	scanf("%s",st);
	f(st);
	printf("%s",st);	
}
实验07-6:使用函数实现字符串复制

【问题描述】输入一个字符串t和正整数m,将字符串t中从第m个字符开始的全部字符复制到字符串s中,再输出字符串s。要求使用字符指针定义并调用函数strmcpy(s,t,m),其功能是将字符串t中的第m个字符开始的全部字符,复制到串s中。
【样例输入】
happy new year
7
【样例输出】
new year

#include
void strmcpy(char *st,char *tt,int m){
	
}

int main(){
 	char st[20],tt[20],ch;
 	int i=0,m;
 	scanf("%c",&ch);
	while(ch!='\n'){
		tt[i++]=ch;
		scanf("%c",&ch);
	}
	tt[i]='\0';
 	scanf("%d",&m);
 	strmcpy(st,tt,m);
 	printf("%s\n",st);
}

编程题

实验07-5:寻找最长的字符串

【问题描述】输入5个字符串,输出其中最长的字符串。通过输入函数scanf(“%s”,sx)的形式输入字符串。
【输入形式】li wang zhang jin xian
【输出形式】zhang

七、结构体

编程题

实验08-1:时间换算

【问题描述】用结构体类型表示时间内容(时间以时分秒表示)输入一个时间数据,在输入一个秒数n(n<60),以h : m : s的形式输出过了n秒后的时间。(超过24点以0点开始)
【输入形式】输入的时间必须是以"时:分:秒"格式输入
【输出形式】同样以格式"时:分:秒"输出
【样例输入】
11:59:40
30
【样例输出】
12:0:10

实验08-2:计算学生信息中成绩的平均值

【问题描述】建立一个学生的结构记录,包含学号、姓名和成绩,输入整数n(n<=10),再输入n个学时的基本信息,计算并输出他们的平均成绩。
【样例输入】
3
1 zhang 70
2 wang 80
3 qian 90
【样例输出】
80.00

实验08-3:从书籍结构体中查找定价最高的书籍

【问题描述】从键盘输入n(n<=10),本书的名称和定价并存入结构体数组中,从中查找定价最高的和最低的数的名称及定价,并输出,价格输出保留2位小数。
【样例输入】
3
Programming_in_c 21.5
Programming_in_VB 18.5
Programming_in_Delphi 25.0
【样例输出】
18.50,Programming_in_VB
25.00,Programming_in_Delphi

实验08-4:有理数比较

【问题描述】编写函数CompareRational(),比较两个有理数的大学,该函数的参数为两个有理数(结构体类型,包含分子分母两个整数),若第一个有理数小于第二个,返回一个负数;若相等,返回0;若第一个有理数大于第二个,则返回正数。以分数的形式输入两个有理数,输出比较结果。
【输入形式】两个有理数,分数形式,格式为:“分子/分母”
【输出形式】输入的两个有理数,中间用比较运算符连接表示其大小关系。有理数格式同上。
【样例输入】
1/2 3/4
【样例输出】
1/2<3/4

八、递归函数

程序片段编程题

实验09-1:用递归求阶乘的和

【问题描述】输入一个整数n(0 【输入形式】一个整数
【输出形式】一个浮点数,但不保留小数部分。
【样例输入】3
【样例输出】9

#include
double fact(int x){

}

int main(){
	int i,n;
	double sum=0;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
		sum=sum+fact(i);
	printf("%.0lf",sum);	
}
实验09-3:十进制转二进制

【问题描述】输入一个正整数n,输出其转换为二进制后的形式。要求定义并调用函数dectobin(n),其功能是输出n的二进制(在函数中输出)。
【输入形式】一个正整数
【输出形式】该正整数的二进制形式
【样例输入】100
【样例输出】1100100

#include
void dectobin(int n){

}
int main(){
	int x;
	scanf("%d",&x);
	dectobin(x);
}
实验09-4:递归实现整数的顺序、逆序输出

【问题描述】输入一个正整数,编写两个递归函数,分别实现对其按位顺序、逆序输出。
【输入形式】一个正整数
【输出形式】先顺序输出该整数的每一位值,中间用空格分开;再逆序输出该整数的每一位值,中间用空格分开
【样例输入】1024
【样例输出】
1 0 2 4
4 2 0 1

#include
void posi(int n){ 

}
void nega(int n){

}
int main(){
	int x;
	scanf("%d",&x);
	posi(x);
	printf("\n");
	nega(x);
}

编程题

实验09-2:递归计算函数值Ack(m,n)的值

【问题描述】递归计算函数Ack(m,n)的值,输入两个整数m和n(m和n均大于0 ),输出函数Ack的值。Ack(m,n)的定义为:
当m=0时,Ack(m,n)=n+1;
当n=0且m>0时,Ack(m,n)=Ack(m-1,1);
当n>0且m>0时,Ack(m,n)=Ack(m-1,Ack(m,n-1));
【输入形式】两个整数m和n
【输出形式】函数的名称,具体参数和计算结果。
【样例输入】2 3
【样例输出】Ack(2,3)=9

九、单链表

编程题

实验10-1:单向链表的建立

【问题描述】输人若干个学生信息(包括学号、姓名和成绩),输人学号为0时输人结束,建立一个单向链表,再输人一个成绩值,将成绩大于等于该值的学生信息输出。试编写相应程序。
【样例输入】
1 zhang 78
2 wang 80
3 Li 75
4 zhao 85
0
80
【样例输出】
2 wang 80
4 zhao 85

实验10-2:逆序建立链表

【问题描述】输人若干个正整数(输人-1为结束标志),要求按输人数据的逆序建立一个链表,并输出。试编写相应程序。
【样例输入】
1 2 3 4 5 6 7 -1
【样例输出】
7 6 5 4 3 2 1

实验10-3:删除单项链表偶数节点

【问题描述】输人若干个正整数(输入-1 为结束标志),并建立个单向链表,将其中的偶数值结点删除后输出。试编写相应程序。
【样例输入】
1 2 3 4 5 6 7 -1
【样例输出】
1 3 5 7

实验10-4:链表逆置

【问题描述】输人若千个正整数(输人-1为结束标志)建立一个单向链表,再将链表逆置后输出,即表头置为表尾,表尾置为表头。试编写相应程序。
【样例输入】
1 2 3 4 5 6 -1
【样例输出】
6 5 4 3 2 1

十、文件

编程题

将短句“Programming is fun!”写入文件f1.txt.

【问题描述】将短句“Programming is fun!”写入文件f1.txt.
【输入形式】无
【输出形式】文件f1.txt,内容是:Programming is fun!
【样例输入】
【样例输出】Programming is fun!
【样例说明】注意空格。
【评分标准】无

从键盘输入一行字符,写到文件f3.txt中。

【问题描述】从键盘输入一行字符,写到文件f3.txt中。
【输入形式】键盘输入一行字符
【输出形式】文件f3.txt
【样例输入】I love programming!
【样例输出】文件f3.txt内容:I love programming!
【样例说明】请注意是一行字符。
【评分标准】无

统计文件的行数

【问题描述】读lx12_3.txt文件,显示在屏幕上,如果有大写字母,则改成小写字母再输出,并统计行数。根据回车符统计文件的行数。
【输入形式】读文件
【输出形式】输出到屏幕
【样例输入】文件内容如
A
bC
【样例输出】
a
bc
line is 2
【样例说明】
【评分标准】

字符串替换(新)

【问题描述】
编写程序将一个指定文件中某一字符串替换为另一个字符串。要求:(1)被替换字符串若有多个,均要被替换;(2)指定的被替换字符串,大小写无关。
【输入形式】
给定文件名为filein.txt。从控制台输入两行字符串(不含空格,行末尾都有回车换行符),分别表示被替换的字符串和替换字符串。
【输出形式】
将替换后的结果输出到文件fileout.txt中。
【样例输入】
从控制台输入两行字符串:
in
out
文件filein.txt的内容为:

#include 
void main()
{
    FILE * IN;
    if((IN=fopen("in.txt","r"))==NULL)
    {
       printf("Can’t open in.txt!");
       return;
    }
    fclose(IN);
}

【样例输出】
文件fileout.txt的内容应为:

#outclude <stdio.h>
void maout()
{
    FILE * out;
    if((out=fopen("out.txt","r"))==NULL)
    {
       prouttf("Can’t open out.txt!");
       return;
    }
    fclose(out);
}

【样例说明】
输入的被替换字符串为in,替换字符串为out,即将文件filein.txt中的所有in字符串(包括iN、In、IN字符串)全部替换为out字符串,并输出保存到文件fileout.txt中。
【评分标准】
该题要求得到替换后的文件内容,共有5个测试点。上传C语言文件名为replace.c。

将文本文件test.txt中所有包含字符串 for 的行输出

【问题描述】编写一程序,用于将文本文件test.txt中所有包含字符串 for 的行输出
【输入形式】文件
【输出形式】屏幕,包含字符串 for 的行输出
【样例输入】文件test.txt内容:
I love programming!
I love my country !
Thank you very much for your favor!
【样例输出】The row including ‘for’ is :3
Thank you very much for your favor!
【样例说明】注意输出中的空格
【评分标准】无

十一、向前冲-期末测试

编程题

求1-1/4+1/7-1/10+1/13-1/16+…的前n 项之和

【问题描述】
输入一个正整数n,计算1-1/4+1/7-1/10+1/13-1/16+…的前n 项之和,输出时保留3位小数。
【输入形式】
从键盘输入一个正整数n。
【输入输出样例1】(下划线部分表示输入)
Enter n: 3
sum=0.893
【输入输出样例2】(下划线部分表示输入)
Enter n: 10
sum=0.819
【样例说明】
输入提示符后要加一个空格。其中":“后要加一个且只能一个空格。
输出语句的”="两边无空格。
英文字母区分大小写。必须严格按样例输入输出。
小数形式与科学计数法转换
【问题描述】
编写一个程序,将用小数或整数形式输入的数据,转换成科学计数法的形式输出。输入的数据没有符号。输入数据全为有效数据,即若输入的数据为小数形式,则末尾不含数字0;并且若输入的数据大于1,则最高位数字不为0。
提示:以字符串形式保存相关数据。
【输入形式】
控制台输入一小数或整数,最后会有回车换行符,所有输入的字符数不会超过100。
【输出形式】
以科学计数法形式输出数据。输出的数据由以下几部分构成:
1.底数部分是一个小数或整数,若为小数,则小数点前后必有数字,而且都为有效数字。即:小数点前只有一位大于0的数字,小数点后的末尾数字不能为0。若为整数,则只有一位数字,不带小数点。
2.必有小写字母“e”。
3.指数部分是一个整数。若大于等于0,则不带符号;若小于0,则需要带负号“-”。且整数的最高位数字不为0。
【输入样例1】
0.000000000000002
【输出样例1】
2e-15
【输入样例2】
898456.23489651700659
【输出样例2】
8.9845623489651700659e5
【输入样例3】
367298599999090000000000000000000000000000
【输出样例3】
3.6729859999909e41
【样例说明】
以小数或整数形式输入数据,然后转换成相应的科学计数法形式输出。
【评分标准】
该题要求以科学计数法形式输出数据,提交程序文件名为notation.c。

超长正整数的减法

【问题描述】编写程序实现两个超长正整数(每个最长80位数字)的减法运算。
【输入形式】
从键盘读入两个整数,要考虑输入高位可能为0的情况(如00083)。

  1. 第一行是超长正整数A;

  2. 第二行是超长正整数B;

【输出形式】
输出只有一行,是长整数A减去长整数B的运算结果,从高到低依次输出各位数字。要求:
1、若结果大于0,则只输出结果数字,不输出正号;若结果为负,则输出负号;若结果为0,则只输出一个0。
2、除非结果为0,否则输出的结果的最高位不能为0,并且各位数字紧密输出。
【输入样例】
234098
134098703578230056
【输出样例】
-134098703577995958
【样例说明】
进行两个正整数减法运算, 234098 - 134098703578230056 = -134098703577995958。
【评分标准】
该题要求输出超长整数减法结果,提交程序文件名为subtract.c或subtract.cpp。

国王的麦粒

【问题描述】
相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜欢象棋,决定让宰相自己选择何种赏赐。
这位聪明的宰相指着8×8共64格的象棋盘说:陛下,请您赏给我一些麦子吧,就在棋盘的第一个格子中放1粒,第2格中放2粒,第3格放4粒,以后每一格都比前一格增加一倍,依此放完棋盘上的64个格子,我就感恩不尽了。舍罕王让人扛来一袋麦子,他要兑现他的许诺。
国王能兑现他的许诺吗?试编程计算舍罕王共要多少麦子赏赐他的宰相,这些麦子合多少立方米(volume)?
(已知1立方米麦子约1.42e8粒)
总粒数为:sum=1+2+22+23+…+263
函数pow(a,b)表示求a^b
double pow(double base, double exponent);
需要math.h头文件
【输入形式】
【输出形式】volume: 1.299066e+011

求一个整数中2的个数

【问题描述】
读入一个整数,统计并输出该数中2的个数。要求定义并调用函数countdigit(number,digit),它的功能是统计整数number 中数字digit 的个数。例如,countdigit(10090,0) 的返回值是3。
【输入形式】
输入一个整数
[输入输出样例1] (下划线部分表示输入)
Enter an integer: 21252
Number of digit 2: 3
【样例说明】
输入提示符后要加一个空格。例如Enter an integer: ,其中:后要加一个且只能一个空格。
输出语句的:后要加一个且只能一个空格。
英文字母区分大小写。必须严格按样例输入输出。
交换最大、最小值
【问题描述】
输入一个正整数n(1 【输入形式】
从键盘输入一个正整数n和n个整数。
[输入输出样例1] (下划线部分表示输入)
Input n: 5
Input 5 integers: 8 2 5 1 4
After swapped: 1 2 5 4 8 (每个输出数据间有一个空格)
【样例说明】
输入提示符后要加一个空格。例如Input n: ,其中:后要加一个且只能一个空格。
英文字母区分大小写。必须严格按样例输入输出。

将一笔钱换算成1分、2分和5分的硬币组合

【问题描述】
将一笔钱(大于8分,小于1元,精确到分)换算成1分、2分和5分的硬币组合。输入金额,问有几种换算方法?要求每种硬币至少有一枚。
【输入形式】
从键盘输入一个正整数n。
[输入输出样例1] (下划线部分表示输入)
Input money: 10
count=2
【样例说明】
输入提示符后要加一个空格。其中:后要加一个且只能一个空格。
英文字母区分大小写。必须严格按样例输入输出。
多项式加法
【问题描述】编写一个程序实现两个一元多项式相加的运算。
【输入形式】从当前目录下的poly.in文件读入两行以空格分隔的整数,每一行代表一个多项式,且该多项式中各项的系数均为0或正整数,最高幂次不超过50。对于多项式(n<50)的表示方法如下:
an n an-1 n-1 …… a1 1 a0 0
即相邻两个整数分别表示表达式中一项的系数和指数。在输入文件中只出现系数不为0的项。
【输出形式】将运算结果输出到当前目录下的poly.out文件中。将系数不为0的项按指数从高到低的顺序输出,每次输出其系数和指数,均以空格分隔。在行的末尾输出一个回车符。
【输入文件】54 8 2 6 7 3 25 1 78 0
43 7 4 2 8 1
【输出文件】54 8 43 7 2 6 7 3 4 2 33 1 78 0
【样例说明】输入文件的两行分别代表了表达式54x8+2x6+7x3+25x+78+43x7+4x2+8x其和为54x8+43x7+2x6+7x3+4x2+33x+78
【评分标准】结果正确则该测试点得满分,否则该测试点得0分。上传C语言文件名为 poly.c

求m到n之间所有数字的和

【问题描述】输入一个正整数m和n,输出从m开始到n结束(包含m和n)的所有整数数字的和。
【输入形式】两个正整数,用空格分隔
【输出形式】两个正整数之间的整数数字的和,以“sum=?”的形式输出。
【样例输入】1 100
【样例输出】sum=5050

学生成绩排序

【问题描述】
对某班学生成绩排序。从键盘依次输入某班学生的姓名和成绩(一个班级人数最多不超过50人)并保存,然后分别按学生成绩由高到低顺序输出学生姓名和成绩,成绩相同时,则按输入次序排序。
【输入形式】
从键盘依次输入最多不超过50个学生的学生姓名和成绩:
第一行输入班级学生人数;
在单独行上输入空格隔开的学生姓名和成绩,其中学生成绩是整数。
【输出形式】
按学生成绩由高到低顺序输出学生姓名和成绩,每行输出一位学生的姓名和成绩,其中姓名(英文)占15位,成绩占5位,均按缺省方式对齐。成绩相同时按输入次序排序。
【输入样例】
4
aaa 50
bbb 70
ccc 65
ddd 90
【输出样例】
############ddd###90
############bbb###70
############ccc###65
############aaa###50
(注意:其中#号代表空格)
【样例说明】
输入了四个学生姓名和成绩,按成绩排序输出。
【评分标准】
按成绩顺序输出学生姓名和成绩,完全正确得50分,共五个测试点,每个测试点10分,提交程序名为c02.c。

十二、超越自我

编程题

求差集1

【问题描述】两个集合的差集定义如下:
集合A、B的差集,由所有属于A但不属于B的元素构成。
输入两个集合A、B,每个集合中元素都是自然数。求集合A、B的差集。
【输入形式】
从标准输入先输入集合元素个数,然后在下一行输入集合中的自然数元素,以空格分隔。
其中,每个集合都不输入重复的元素。
【输出形式】
输出差运算后集合中的元素,以空格分隔。输出元素的顺序与原有集合A输入的顺序一致。
如果A、B的差集为空集,则不输出任何数值。
【样例输入】
4
2 8 3 4
4
6 1 4 9
【样例输出】
2 8 3
【样例说明】从标准输入接收集合的元素个数和每个元素,输出集合A、B的差集。
【评分标准】该题要求输出差运算后集合中的元素,共有5个测试点。上传C语言文件名为sets.c。

求孪生数

【问题描述】孪生数定义: 如果 A 的约数(因数,包含1,但不包含A本身)之和等于 B , B 的约数(因数)之和等于 A , A 和 B 称为孪生数(A和B不相等)。试找出正整数 M 和 N 之间的孪生数。
【输入形式】从控制台输入两个正整数M和N(1<=M 【输出形式】
在标准输出上输出符合题目描述的M和N之间的全部孪生数对(包括M和N)。每行输出一对孪生数,用一个空格隔开,小的先输出;各行孪生数按照第一个数从小到大的顺序输出,一对孪生数只输出一次。 如果没有符合要求的孪生数对,则输出字符串“NONE”。
【输入样例1】 20300 20 300 20300
【输出样例1】
220284 220 284 220284
【输入样例2】
200250 200 250 200250
【输出样例2】
N O N E NONE NONE
【样例说明】
样例1输入的区间为[20,300],其间有一对孪生数对,即: 220 ( 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284 ) 220(1+2+4+5+10+11+20+22+44+55+110=284) 220(1+2+4+5+10+11+20+22+44+55+110=284)​​​和 284 ( 1 + 2 + 4 + 71 + 142 = 220 ) 284(1+2+4+71+142=220) 284(1+2+4+71+142=220)​​​。样例2输入的区间是 [ 200 , 250 ] [200,250] [200,250],其间没有孪生数对,所以输出字符串: N O N E NONE NONE
【评分标准】
该题要求输出区间中的所有孪生数对,共有5个测试点,提交程序文件名为example1.c或example1.cpp。

你可能感兴趣的:(c语言,算法,开发语言)