本题库来源于某大学在线编程社区C语言课程的1-12周的习题(到指针),收录截止时间为2020/06/13,可能会过时,但不会拥有更新。
题目顺序按照周数的先后进行编排。所有习题答案都是本人亲自做并ac过,问题应该不大(除了有些题(比如指针)真的不太会写,写的乱七八糟的)
P.S.为了节省空间所有代码均会进行整理(缩行之类的),部分代码可能会拥有注释(看我整理的速度了)
请善用CTRL+F搜索题目和对应答案
20200704更新完毕
20220228迁移完毕
1530: 实验1-1:程序改错1
题目描述
复制下列程序到编译环境中,修改其中的语法错误。
1 2 3 4 5 6 7 8 9 10 11 #include<stdio.h> int mian() { print(“你好,C语言!”); return 0 }
输入
无
输出
你好,C语言!
样例输出
你好,C语言!
Problem1530:
1 2 3 4 5 6 7 8 9 10 11 12 13 #include<stdio.h> int main() { printf("你好,C语言!\n"); return 0; }
1531: 实验1-2:程序改错2
题目描述
复制下列程序到编译环境中,修改其中的语法错误。
1 2 3 4 5 6 7 8 9 10 11 include <studio.h> int main( ) x=2; y=3; z=x+y; printf("z=%d\n”, z); return 0;
输入
无
输出
z=5
样例输出
z=5
Problem1531:
1 2 3 4 5 6 7 8 9 10 11 12 13 #include <stdio.h> int main( ) { int x=2,y=3; int z=x+y; printf("z=%d\n", z); return 0; }
1532: 实验1-3:程序改错3
题目描述
复制下列程序到编译环境中,修改其中的语法错误。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #include<stdio.h> void main() { int max,a,b; a=3,b=7; max=max(a,b); printf("最大值是:%d",max); int max(int x,int y) { int z; if (x>y) z=x; else z=y; return (z); } }
输入
无
输出
最大值是:7
样例输出
最大值是:7
Problem1532:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 #include<stdio.h> int max(int x,int y) { int z; if (x>y){ z=x; } else { z=y; } return (z); } void main() { int fk,a,b; a=3,b=7; fk = max(a,b); printf("最大值是:%d",fk); }
1206: 实验2-1 :计算圆的面积和周长(数据类型、运算符、输入输出部分)
题目描述
从键盘输入圆的半径,根据该半径的值,计算圆的周长和面积。输出保留两位小数。
输入
3
输出
18.84
28.26
样例输入
3
样例输出
18.84
28.26
Problem1206:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include<stdio.h> #define PI 3.14 int main(){ int r; float c,s; scanf("%d",&r); c=2*PI*r; s=PI*r*r; printf("%.2f\n%.2f\n",c,s); return 0; }
1210: 实验2-2:计算输出长方体的体积(数据类型、运算符、输入输出部分)
题目描述
定义一个长方体的长宽高,从键盘读取这三个参数,计算输出这个长方体的体积。
输入
长方体长宽高
输出
长方体体积
样例输入
1
2
3
样例输出
6
Problem1210:
1 2 3 4 5 6 7 8 9 10 11 12 13 #include<stdio.h> int main(){ int a,b,c; scanf("%d%d%d",&a,&b,&c); printf("%d\n",a*b*c); return 0; }
1528: 实验2-3 :计算平方和
题目描述
编写一个程序,由键盘输入两个整数a、b,计算并输出两数的平方和。
输出格式为(可直接复制):"a=%d,b=%d,sum=%d"
输入
整数a 和b
输出
平方和
样例输入
2 3
样例输出
a=2,b=3,sum=13
Problem1528:
1 2 3 4 5 6 7 8 9 10 11 12 13 #include<stdio.h> int main(){ int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d,sum=%d",a,b,a*a+b*b); return 0; }
1213: 实验2-4:计算方程式(数据类型、运算符、输入输出部分)
题目描述
定义一个线性函数(形如y=kx+b)的系数k,b,从键盘读取这两个系数,并读取任意x值,输出对应的y值。
输入
例如:y=2x+3 则k为2, b为3, 任意x值
输入:
2
3
1
输出
例如:y=2x+3 则k为2, b为3, 任意x值
输出:
5
样例输入
2
3
1
样例输出
5
Problem1213:
1 2 3 4 5 6 7 8 9 10 11 12 13 #include<stdio.h> int main(){ int a,b,c; scanf("%d%d%d",&a,&b,&c); printf("%d\n",a*c+b); return 0; }
1214: 实验2-5 :计算平均值
题目描述
定义任一学生3门课程的成绩,从键盘读取这3门课程的成绩,计算输出该学生的平均成绩(结果保留整数)
输入
90
91
92
输出
91
样例输入
90
91
92
样例输出
91
Problem1214:
1 2 3 4 5 6 7 8 9 10 11 12 13 #include<stdio.h> int main(){ int a,b,c; scanf("%d%d%d",&a,&b,&c); printf("%d\n",(a+b+c)/3); return 0; }
1216: 实验2-6 :计算圆椎体体积(数据类型、运算符、输入输出部分)
题目描述
编写程序:由键盘输入圆锥体的半径和高值,计算圆椎体的体积并输出计算结果,结果保留两位小数。Π=3.14
输入
输入圆锥体的半径和高
输出
输出圆椎体的体积
样例输入
3.0 5.0
样例输出
47.10
Problem1216:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include<stdio.h> #define PI 3.14 int main(){ float r,h,v; scanf("%f%f",&r,&h); v=PI*r*r*h/3; printf("%.2f\n",v); return 0; }
1208: 实验2-7 :计算ASCII码值并输出(数据类型、运算符、输入输出部分)
题目描述
已知字符‘a’的ASCII值是97,从键盘输入一个字母,请根据字符‘a’的ASCII值,计算出该输入字母的ASCII值并输出。
输入
b
输出
98
样例输入
b
样例输出
98
Problem1208:
1 2 3 4 5 6 7 8 9 10 11 12 13 #include<stdio.h> int main(){ char r; scanf("%c",&r); printf("%d\n",r); return 0; }
1533: 实验2-8:程序改错 题目描述 复制下列程序到编译环境中,修改其中的错误。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include<stdio.h> int main() { int c,a,b; a=3.2 , b=7.5; c=a+b; printf("z=%d",c); }
输入
无
输出
z=10.700000
样例输出
z=10.700000
Problem1533:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include<stdio.h> int main() { float a,b,c; a=3.2 , b=7.5; c=a+b; printf("z=%f",c); return 0; }
1537: 实验2-9:输出点坐标
题目描述
已知一条直线3x+5=y,从键盘上输入该直线上某点的x坐标(x值为float型),输出该点的(x, y)坐标值。输出格式为(可直接复制):"(%f, %f)", x, y
输入
x
输出
(x, y)
样例输入
-2
样例输出
(-2.000000, -1.000000)
Problem1537:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include<stdio.h> int main(){ float x,y; scanf("%f",&x); y=3*x+5; printf("(%f, %f)", x, y); return 0; }
1207: 实验3-1 :输出各数位的数字(数据类型、运算符、输入输出部分)
题目描述
从键盘输入一个四位数,输出各个位颠倒之后的数字,如输入1234,则要求输出4321
输入
1234
输出
4321
样例输入
1234
样例输出
4321
Problem1207:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include<stdio.h> int main(){ int i; char str[100]; for(i=0;i<4;i++){ scanf("%c",&str[3-i]); } printf("%s",str); return 0; }
1209: 实验3-2:输出字符的ASCII值和
题目描述
编写程序:输入三个字符和输出对应ASCII值的和。
输入
三个字符
输出
所有字符ASCII值的和
样例输入
abc
样例输出
294
Problem1209:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include<stdio.h> int main(){ int i; int j=0; char str[100]; for(i=0;i<3;i++){ scanf("%c",&str[i]); j+=str[i]; } printf("%d",j); return 0; }
1211: 实验3-3 :输出新字母序列
题目描述
编写程序:输入三个小写字母,依次对每个字母输出其后3位的字母,组成新的字母序列输出。例如,输入单词“cat”,则输出字母序列“fdw”。提示:’x’对应’a’, ’y’对应’b’, ’z’对应’c’。
输入
cat
输出
fdw
样例输入
cat
样例输出
fdw
Problem1211:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include<stdio.h> int main(){ int i; char str[100]; scanf("%s",&str); for(i=0;str[i]!='\0';i++){ if(str[i]>='a'&&str[i]<='w') { printf("%c",str[i]+3); }else{ printf("%c",str[i]-23); } } return 0; }
1212: 实验3-4 :scanf、printf测试 题目描述
用scanf函数输入数据,a和b是整数,x和y是实型数,c1和c2是单字符,用printf函数进行输出。
输入
各种变量的值
输出
各种变量的值
样例输入
3
7
8.2
123.22
A
a
样例输出
3
7
8.2
123.22
A
a
Problem1212:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include<stdio.h> int main(){ int a,b; float x,y; char xa,xb; scanf("%d\n%d\n%f\n%f\n%c\n%c",&a,&b,&x,&y,&xa,&xb); printf("%d\n%d\n%g\n%g\n%c\n%c\n",a,b,x,y,xa,xb); return 0; }
1536: 实验3-5:字母的序号 题目描述
输入一个大写字母,输出该字母在字母表中的位置。例如输入字母B,则输出2;输入字母Z,则输出26。
输入
一个大写字母
输出
该字母在字母表中的序号
样例输入
B
样例输出
2
Problem1536:
1 2 3 4 5 6 7 8 9 10 11 12 13 #include<stdio.h> int main(){ char r; scanf("%c",&r); printf("%d\n",r-64); return 0; }
1529: 实验3-6:数字转换字符
题目描述
从键盘读入一个3位整数,将各个权位的数字转化为字符后输出。例如输入123,则转换为三个字符’1’,’2’,’3’,输出1,2,3
输入
一个三位数
输出
转换为字符单个输出
样例输入
456
样例输出
4,5,6
Problem1529:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include<stdio.h> int main(){ int i; char str[4]; scanf("%s",&str); printf("%c,%c,%c",str[0],str[1],str[2]); return 0; }
1534: 实验3-7:程序输入格式改错 题目描述
复制下列程序到编译环境中,根据输入样例,修改其中的输入格式错误。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include<stdio.h> int main() { int c,a,b; scanf("a=%d b=%d", a, b); c=a*b; printf("两个数的乘积是:%d",c); }
输入
a和b的值
输出
两个数的乘积是:%d
样例输入
2 5
样例输出
两个数的乘积是:10
Problem1534:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include<stdio.h> int main() { int c,a,b; scanf("%d%d",&a,&b); c=a*b; printf("两个数的乘积是:%d",c); }
1535: 实验3-8:程序输出格式改错 题目描述 复制下列程序到编译环境中,根据输入输出样例,修改其中的输出格式错误。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include<stdio.h> #include<math.h> int main() { int c,a; scanf("%d", &a); if(a>0) c=sqrt( a ); //sqrt是求平方根的数学函数 else c=0; printf("a的平方根是:%d"); }
输入
a的值
输出
a的平方根是:
样例输入
9
样例输出
a的平方根是:3.000000
Problem1535:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include<stdio.h> #include<math.h> int main() { int a; float c; scanf("%d", &a); if(a>0) c=sqrt( a ); //sqrt是求平方根的数学函数 else c=0; printf("a的平方根是:%f",c); }
1538: 实验3-9:日期的输入和输出
题目描述
按指定格式输入输出年月日。
输入格式:2020-2-26,
输出格式:"%d年\n%d月\n%d日\n"
2020年
2月
26日
输入
2020-2-26
输出
2020年
2月
26日
样例输入
2020-2-26
样例输出
2020年
2月
26日
Problem1538:
1 2 3 4 5 6 7 8 9 10 11 12 13 #include<stdio.h> int main(){ int y,m,d; scanf("%d-%d-%d",&y,&m,&d); printf("%d年\n%d月\n%d日\n",y,m,d); return 0; }
1539: 实验3-10:解方程 题目描述
定义一个一元二次方程:y=ax²+bx+c=0(a≠0)的系数a,b,c, 从键盘读取这三个系数,并读取任意x值,输出对应的y值。a、b和c为整型,x和y为float型。
输出格式:"y=%.2f"
输入
a、b、c三个系数
x的值
输出
y的值
样例输入
2 3 1
1
样例输出
y=6.00
Problem1539:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include<stdio.h> int main(){ int a,b,c; float x,y; scanf("%d%d%d%f",&a,&b,&c,&x); y=a*x*x+b*x+c; printf("y=%.2f",y); return 0; }
1540: 实验3-11:大写字母转换为小写字母 题目描述
编写程序,从键盘输入一个大写英文字母,将其转换为一个小写字母输出。
输入
大写字母
输出
对应的小写字母
样例输入
A
样例输出
a
Problem1540:
1 2 3 4 5 6 7 8 9 10 11 12 13 #include<stdio.h> int main(){ char ste; scanf("%c",&ste); printf("%c",ste+32); return 0; }
1555: 实验3-12:整数转换为时间 题目描述 输入一个按分钟计量的时间,把它转换成小时和分钟的格式输出,例如,输入50,输出0小时50分
输出格式:"%d小时%d分"
输入
整数
输出
小时和分钟的格式
样例输入
50
样例输出
0小时50分
Problem1555:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include<stdio.h> int main(){ int tim,hou,min=0; scanf("%d",&tim); hou=tim/60; min=tim%60; printf("%d小时%d分",hou,min); return 0; }
1556: 实验3-13:计算两个坐标点间的距离 题目描述 输入两个点的二维坐标,计算两个点之间的距离,并输出。
输入数据为float型变量。
输出格式:"d=%g"
距离公式如下:
输入
两个点的二维坐标
输出
两点间的距离
样例输入
(3,2)
(2,4)
样例输出
d=2.23607
Problem1556:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include<stdio.h> #include<math.h> int main(){ float xa,ya,xb,yb,d; scanf("(%f,%f)\n(%f,%f)",&xa,&ya,&xb,&yb); d=sqrt((xa-xb)*(xa-xb)+(ya-yb)*(ya-yb)); printf("d=%g",d); return 0; }
1229: 实验4-1 :华氏摄氏温度转换(顺序结构)
题目描述
计算华氏温度F对应的摄氏温度。计算公式:C=5×(F-32)/9,式中:C表示摄氏温度,F表示华氏温度。
要求输入华氏温度,输出摄氏温度,输入输出数据要求为整型数据。
输出格式:fahr=%d,celsius=%d
输入
华氏温度
输出
摄氏温度
样例输入
150
样例输出
fahr=150,celsius=65
Problem1229:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include<stdio.h> int main(){ int c,f; scanf("%d",&f); c=(f-32)*5/9; printf("fahr=%d,celsius=%d",f,c); return 0; }
1228: 实验4-2 :计算分段函数
题目描述
计算下列分段函数f(x)的值:
要求输入输出的数据为float,输出结果保留小数点后两位。
输出格式:f(x)=%.2f
输入
x
输出
f(x)=%.2f
样例输入
15
样例输出
f(x)=3.87
Problem1228:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include<stdio.h> #include<math.h> int main(){ float x,fx; scanf("%f",&x); if(x>=0) fx=sqrt(x); else fx=(x+1)*(x+1)+2*x+1/x; printf("f(x)=%.2f",fx); return 0; }
1227: 实验4-3 :判断3的倍数
题目描述
从键盘上输入一个3位整数x,判断其各位数字之和是否为3的倍数,若是,输出yes,否则输出no
输入
x
输出
yes或no
样例输入
123
样例输出
yes
Problem1227:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include<stdio.h> int main(){ int a,b,c; scanf("%1d%1d%1d",&a,&b,&c); if((a+b+c)%3==0) printf("yes"); else printf("no"); return 0; }
1226: 实验4-4:判断体重
题目描述
输入某人的身高height(整型,单位cm)及体重weight(实型,单位kg),根据公式判断其体重与标准体重(公斤)的关系。(标准体重=height-105)
如果是标准体重,则输出“perfect!”
低于标准体重,输出”underweight!”
高于标准体重,输出”slightly fat!”
输入
height
weight
输出
结论
样例输入
168
60.5
样例输出
underweight!
Problem1226:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include<stdio.h> int main(){ float a,b; scanf("%f\n%f",&a,&b); if(b==a-105) printf("perfect!"); else if(b<a-105) printf("underweight!"); else printf("slightly fat!"); return 0; }
1225: 实验4-5:判断奇偶数
题目描述
编写程序,从键盘读取任意一个整数n,如果是奇数,则乘2输出,如果是偶数,则除以2输出。
输入
n
输出
n*2或n/2
样例输入
6
样例输出
3
Problem1225:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include<stdio.h> int main(){ int a; scanf("%d",&a); if(a%2!=0) printf("%d",a*2); else printf("%d",a/2); return 0; }
1224: 实验4-6 :存款利息的计算(顺序结构)
题目描述
设某人有money元,想存5年,输出以下5种存款方式得到的本息额(保留小数点后2位,rn指n年定期存款利息):
(1)一次存5年期。
money × (1 + 5 × r5)
(2)先存2年期,到期后将本息再存3年期。(money × (1 + 2 × r2)) × (1 + 3 × r3)
(3)先存3年期,到期后将本息再存2年期。
(money × (1 + 3 × r3)) × (1 + 2 × r2)
(4)存1年期,到期后将本息再存1年期,连续存5次。
money × pow(1 + r1, 5)
(5)存活期存款。活期利息每一季度结算一次。
money × pow((1 + r0 / 4), 4 × 5)
2018年12月的银行存款利息如下:
1年期定期存款利息为4.14%;
2年期定期存款利息为4.68%;
3年期定期存款利息为5.4%;
5年期定期存款利息为5.85%;
活期存款利息为0.72%(活期存款每一季度结算一次)
要求输入money,输出5种存款方式得到的本息额(保留小数点后2位)。
输出格式:%.2f,%.2f,%.2f,%.2f,%.2f
输入
money
输出
%.2f,%.2f,%.2f,%.2f,%.2f
样例输入
1000
样例输出
1292.50,1270.76,1270.76,1224.86,1036.62
Problem1224:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #include<stdio.h> #include<math.h> int main(){ float a,b,c,d,e,f; float r0=0.0072,r1=0.0414,r2=0.0468,r3=0.054,r5=0.0585; scanf("%f",&f); a=f*(1+5*r5); b=(f*(1+2*r2))*(1+3*r3); c=(f*(1+3*r3))*(1+2*r2); d=f*pow((1+r1),5); e=f*pow((1+r0/4),4*5); printf("%.2f,%.2f,%.2f,%.2f,%.2f",a,b,c,d,e); return 0; }
1223: 实验4-7 :计算which day
题目描述
假设今天是周二,计算并输出其后的第n天是周几。
输出值为:1~7
输入
n
输出
day
样例输入
30
样例输出
4
Problem1223:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 #include<stdio.h> int main(){ int a; scanf("%d",&a); int c=a%7; switch(c){ case 0: printf("2"); break; case 1: printf("3"); break; case 2: printf("4"); break; case 3: printf("5"); break; case 4: printf("6"); break; case 5: printf("7"); break; case 6: printf("1"); break; } return 0; }
1222: 实验4-8:出租车计价
题目描述
根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:
起步里程为3公里,起步费10元;
超起步里程后10公里内,每公里2元;
超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。
要求:输入公里数m(实型)和分钟t(整型)
输出钱数(实型,小数点后保留0位)
输入
输入公里数m(实型)和分钟t(整型)
输出
输出钱数(实型,小数点后保留0位)
样例输入
10
20
样例输出
32
Problem1222:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include<stdio.h> int main(){ float distance,time,feea; scanf("%f%f",&distance,&time); if(distance<=3) feea=10; else if(distance>3&&distance<=10) feea=10+2*(distance-3); else if(distance>10) feea=24+3*(distance-10); printf("%.0f",feea+2*time/5); return 0; }
1221: 实验4-9:判断并计算三角形面积和周长
题目描述
根据输入的三角形三条边a、b、c,判断计算输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=√s(s-a)(s-b)(s-c),其中s=(a+b+c)/2。
输出格式:area=%.2f,perimeter=%.2f
或者 error input
输入
三角形的三条边a、b、c
输出
error input或者三角形的面积和周长
样例输入
-1
-1
-1
样例输出
error input
Problem1221:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include<stdio.h> #include<math.h> int main(){ float a,b,c,s; scanf("%f\n%f\n%f",&a,&b,&c); if(a+b>c&&a+c>b&&b+c>a){ s=(a+b+c)/2; printf("area=%.2f,perimeter=%.2f",sqrt(s*(s-a)*(s-b)*(s-c)),a+b+c); } else printf("error input"); return 0; }
1560: 实验4-10:判断IP地址的有效性
题目描述
输入一个IPv4格式的IP地址,判断地址的有效性。
IPv4格式的地址由4组十进制数构成,数据由句点间隔,每组数据的范围介于0~255之间。
例如:
202.118.11.24 为有效IP地址,
而 202,118,11,24 及201.118.258.21都为无效的IP地址。
输入
IP地址
输出
有效或无效
样例输入
202.118.11.24
样例输出
有效
Problem1560:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include<stdio.h> #include<math.h> int main(){ int a,b,c,d; scanf("%d.%d.%d.%d",&a,&b,&c,&d); if(a<=255&&b<=255&&c<=255&&d<=255&&a>=0&&b>=0&&c>=0&&d>=0) printf("有效"); else printf("无效"); return 0; }
1549: 实验4-11:判断数据的同号和异号
题目描述
输入两个整数,如果这两个数同号(均为正或均为负),输出它们的积,否则输出它们的和。
输入
两个整数
输出
两个数同号,输出它们的积,否则输出它们的和。
样例输入
-2 -4
样例输出
8
Problem1549:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include<stdio.h> #include<math.h> int main(){ int a,b; scanf("%d%d",&a,&b); if(a>0&&b>0||a<0&&b<0) printf("%d",a*b); else printf("%d",a+b); return 0; }
1550: 实验4-12:购物找零
题目描述
从键盘输入某用户购买的某一物品数量n以及该物品单价p,某顾客支付m元人民币,计算找零结果,若付款金额不足,输出“Failed”提示。
输出格式:"找零:%.2f"
或 "Failed"
输入
m元 商品数量n 单价p
输出
找零结果
样例输入
100 2 35.5
样例输出
找零:29.00
Problem1550:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include<stdio.h> #include<math.h> int main(){ float a,b,c,d; scanf("%f%f%f",&a,&b,&c); d=a-b*c; if(d>0) printf("找零:%.2f",d); else printf("Failed"); return 0; }
1551: 实验4-13:求四个数中的最大值
题目描述
输入四个整数,输出其中的最大值。
输出格式:"The max number is:%d"
输入
四个整数
输出
最大值
样例输入
80 87 78 81
样例输出
The max number is:87
Problem1551:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #include<stdio.h> #include<math.h> int main(){ int a,b,c,d; scanf("%d%d%d%d",&a,&b,&c,&d); if(a>b&&a>c&&a>d) printf("The max number is:%d",a); else if(b>a&&b>c&&b>d) printf("The max number is:%d",b); else if(c>a&&c>b&&c>d) printf("The max number is:%d",c); else if(d>b&&d>c&&d>a) printf("The max number is:%d",d); return 0; }
1215: 实验4-14:字符加密
题目描述
编写程序:实现密码加密,四位由任意数字和字母组成的密码,依次对其中每个字符输出其后2位的数字或字母,组成新的密码输出。提示:’y’对应’a’, ’Z’对应’B’,’8’对应’0’,’9’对应’1’。
输入
四位由任意数字和字母组成的明文
输出
四位密文
样例输入
29ad
样例输出
41cf
Problem1215:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 #include<stdio.h> int main(){ int i; char str[100]; scanf("%s",&str); for(i=0;str[i]!='\0';i++){ if(str[i]>='a'&&str[i]<='x') { printf("%c",str[i]+2); }else if(str[i]=='y'||str[i]=='z'){ printf("%c",str[i]-24); }else if(str[i]=='8'||str[i]=='9'){ printf("%c",str[i]-8); }else{ printf("%c",str[i]+2); } } return 0; }
1566: 实验4-15:乘运算列竖式
题目描述
从键盘读入2个两位以内的整数,进行乘法运算并以竖式输出。(注意,乘号以小写字母x代替,横线以7个减号代替),注意数据的输出格式。
例如:
输入:99 99
输入:-23 45
输出为:(其中表示空格)
99 x99 -—— 891 + 891 -—— 9801
输出为:(其中表示空格)
45 x-23 -—— -135 +-90 -—— -1035
输入
两个整数
输出
乘法竖式
样例输入
8 28
样例输出
28 x 8 -—— 224
Problem1566:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 #include<stdio.h> int main(){ int a,b,c,d,e; scanf("%d%d",&a,&b); if(a<b){ e=b; b=a; a=e;} else{ } if(b>=10&&a>=10||b<=-10&&a<=-10||b<=-10&&a>=10||b>=10&&a<=-10){ printf("%6d\n",a); printf("x%5d\n",b); printf("-------\n"); c=b/1%10; d=b/10%10; printf("%6d\n",a*c); printf("+%4d\n",a*d); printf("-------\n"); printf("%6d\n",a*b); } else { printf("%6d\n",a); printf("x%5d\n",b); printf("-------\n"); printf("%6d\n",a*b); } return 0; }
1267: 实验5-1:根据输入选择输出(多分支结构)
题目描述
根据用户输入的时间序号n,显示相应的问候信息:
输入1时显示”Good morning!”
输入2时显示”Good afternoon!”
输入3时显示”Good night!”
其他输入显示”input error!”
输入
n
输出
相应问候语
样例输入
2
样例输出
Good afternoon!
Problem1267:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 #include<stdio.h> int main(){ int a; scanf("%d",&a); switch(a) { case 1: printf("Good morning!"); break; case 2: printf("Good afternoon!"); break; case 3: printf("Good night!"); break; default: printf("input error!"); } return 0; }
1266: 实验5-2:判断字符类别(多分支结构)
题目描述
编写一个程序,其功能为:从键盘输入一个字符ch,判别该字符的类别,并输出向相应信息。
如果输入的字符介于’A’-‘Z’之间,输出”It’s a uppercase letter.”
如果输入的字符介于’a’-‘z’之间,输出”It’s a lowercase letter.”
如果输入的字符介于’0’-‘9’之间,输出”It’s a numeric character.”
其他字符,输出”It’s a other character.”
输入
ch
输出
It’s a uppercase letter.
或
It’s a lowercase letter.
或
It’s a numeric character.
或
It’s a other character.
样例输入
s
样例输出
It’s a lowercase letter.
Problem1266:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #include<stdio.h> int main(){ char a; scanf("%c",&a); if(a>='A'&&a<='Z') printf("It's a uppercase letter."); else if(a>='0'&&a<='9') printf("It's a numeric character."); else if(a>='a'&&a<='z') printf("It's a lowercase letter."); else printf("It's a other character."); return 0; }
1265: 实验5-3:阶梯式用电收费计算(多分支结构)
题目描述
阶梯式用电收费计算:
用电数量 收费标准
0~200 x*0.5元
201~400 100+(x-200)*0.65元
401~600 230+(x-400)*0.8元
601以上 390+(x-600)*1.0元
编写程序,对于一个输入的用电数量x,计算用户的缴费额。
输出格式:"charge:%.2f"
或者”input error!”
输入
x
输出
用户的缴费额
样例输入
320
样例输出
charge:178.00
Problem1265:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #include<stdio.h> int main(){ int a; scanf("%d",&a); if(a>=0&&a<=200) printf("charge:%.2f",a*0.5); else if(a>=201&&a<=400) printf("charge:%.2f",100+(a-200)*0.65); else if(a>=401&&a<=600) printf("charge:%.2f",230+(a-400)*0.8); else if(a>=601) printf("charge:%.2f",390+(a-600)*1.0); else printf("input error!"); return 0; }
1264: 实验5-4:简单计算器程序(多分支结构)
题目描述
简单计算器程序。用户输入运算数和四则运算符(+、-、*、/),输出计算结果。
输出格式:"%.2f%c%.2f=%.2f"
或”input error!”
提示:如果是除运算,当除数为0时,也需要输出”input error!”
输入
运算数和四则运算符
输出
运算结果
样例输入
2*3
样例输出
2.00*3.00=6.00
Problem1264:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 #include<stdio.h> int main(){ float a,b; char h; scanf("%f%c%f",&a,&h,&b); switch(h){ case '+': printf("%.2f%c%.2f=%.2f",a,h,b,a+b); break; case '-': printf("%.2f%c%.2f=%.2f",a,h,b,a-b); break; case '*': printf("%.2f%c%.2f=%.2f",a,h,b,a*b); break; case '/': if(b!=0){ printf("%.2f%c%.2f=%.2f",a,h,b,a/b); break; } else{ } default: printf("input error!"); } return 0; }
1263: 实验5-5:求序列和(简单循环结构)
题目描述
求下列序列前n项的和:1/2, 2/3, 3/5, 5/8…
输出格式:"sum=%.2f"
或 “input error!”
输入
n
输出
前n项的和
样例输入
10
样例输出
sum=6.10
Problem1263:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 #include<stdio.h> int main(){ int i,n,j; float sum=0,k=1,l=1; scanf("%d",&n); if(n>=1){ for(i=0;i<n;i++){ j=k; k+=l; l=j; sum+=l/k; } printf("sum=%.2f",sum); } else { printf("input error!"); } return 0; }
1262: 实验5-6:求奇数和(简单循环结构)
题目描述
输出m~n(包括m和n,有可能m>n)之间所有奇数的和。
输入
m n
输出
奇数和
样例输入
1 10
样例输出
25
Problem1262:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 #include<stdio.h> int main(){ int a,b,c,n,i; int s=0; scanf("%d%d",&a,&b); if(a>b){ c=b; b=a; a=c; } else{ } n=(b-a)/2+1; if(a%2!=0||a==1){ for(i=0;i<n;i++){ s+=a; a+=2; } } else{ a++; for(i=0;i<n;i++){ s+=a; a+=2; } } printf("%d",s); return 0; }
1261: 实验5-7:求e的近似值(简单循环结构)
题目描述
计算 e 的近似值(e≈2.71828 18284 59……),e的计算公式为 e=1+1/1!+1/2!+1/3!+…+1/n!
输出格式:
"%.12lf"
或
“input error!”
输入
输入n
输出
输出e
样例输入
12
样例输出
2.718281828286
Problem1261:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #include<stdio.h> #include <math.h> int main(){ int i,n; double k=1,l=1; scanf("%d",&n); if(n>=1){ for(i=0;i<n;i++){ l=l*(i+1); k+=1/l; } printf("%.12lf",k); } else{ printf("input error!"); } return 0; }
1260: 实验5-8:求最小公倍数和最大公约数(简单循环结构)
题目描述
输入两个整数m和n,用辗转相除法求两个数的最小公倍数和最大公约数。
输出格式:the greatest common divisor:%d\nthe minimum common multiple:%d\n
输入
输入两个整数
输出
两个数的最小公倍数和最大公约数
样例输入
4 6
样例输出
the greatest common divisor:2
the minimum common multiple:12
Problem1260:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 #include<stdio.h> int main() { int a,b,c,x,y; scanf("%d%d",&a,&b); x=a; y=b; if (a<b) { c=a; a=b; b=c; } while (b!=0) { c=a; a=b; b=c%b; } c=x*y/a; printf("the greatest common divisor:%d\nthe minimum common multiple:%d\n",a,c); return 0; }
1259: 实验5-9:斐波那契数列(简单循环结构)
题目描述
输出斐波那契数列的前n项。斐波那契数列:1 1 2 3 5 8 13 21 …..
输入
n
输出
斐波那契数列
样例输入
20
样例输出
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
Problem1259:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 #include<stdio.h> int main(){ int k=1,l=1,j; int a,i; scanf("%d",&a); if(a==1) { printf("1"); } else if(a==2) { printf("1 1"); } else if(a>2){ printf("1 1 "); for(i=0;i<a-2;i++){ j=k+l; printf("%d",j); printf(" "); k=l; l=j; } } return 0; }
1258: 实验5-10:判断平方数
题目描述
编写程序,从键盘读取任意一个非0正整数x,判断这个数是否是平方数,如果是,则输出这个数的平方根,如果不是,则输出0。
输入
x
输出
x的平方根,或0
样例输入
9
样例输出
3
Problem1258:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include<stdio.h> #include <math.h> int main(){ float a,b; int c; scanf("%f",&a); c=sqrt(a); if(c*c==a) printf("%d",c); else printf("0"); return 0; }
1257: 实验5-11:分解质因数(简单循环结构)
题目描述
编写程序,输入一个大于1的正整数,分解出其质因数。例如:输入90,输出23 3*5。
输入
90
输出
23 3*5
样例输入
90
样例输出
23 3*5
Problem1257:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 #include<stdio.h> int main() { int i=2,m,j=0; scanf("%d", &m); for ( ; i<m ; i++ ){ for ( ; m%i==0 ; j++ ) { m/=i; printf("%d",i); if(m!=1) printf("*"); else{ break; } } } if(m!=1) printf("%d",m); else{ } return 0; }
1561: 实验5-12:统计输入数据的类型
题目描述
编写程序,利用循环输入十个整数,统计其中正数、负数和零的个数并输出。
输出格式:"正数:%d\n负数:%d\n0的个数:%d"
输入
十个整数
输出
正数、负数和0的个数
样例输入
20 3 -1 -5 11 0 0 4 0 -9
样例输出
正数:4
负数:3
0的个数:3
Problem1561:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 #include<stdio.h> int main(){ int a,i; int j=0,k=0,l=0; for(i=0;i<10;i++) { scanf("%d",&a); if(a>0) { j++; } else if(a<0) { k++; } else { l++; } } printf("正数:%d\n负数:%d\n0的个数:%d",j,k,l); return 0; }
1571: 实验5-13:分段函数(多分支)
题目描述
编写程序实现下面的分段函数:
提示:以10为底的log函数的定义形式为 double log10(double x)
函数的定义在math.h中
输出格式:"y=%g"
输入
x
输出
y
样例输入
0.3
样例输出
y=0.512
Problem1571:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #include<stdio.h> #include<math.h> int main(){ double x,y; scanf("%lf",&x); if(x>=10){ y= log10(x); }else if(x>=1&&x<10){ y=cos(x)+4; }else if(x>=0&&x<1){ y=pow(x+0.5,3); }else if(x<0){ y=fabs(x); } printf("y=%g",y); return 0; }
1581: 实验5-14:求阶乘和
题目描述
从键盘输入1~10间的整数n,输出1!+2!+3!+…+n!的值,或者输出”input error”
输入
1~10间的整数n
输出
阶乘和
或
“input error”
样例输入
4
样例输出
33
Problem1581:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #include<stdio.h> int main(){ int i,n,k=1,l=0; scanf("%d",&n); if(n>0&&n<11){ for(i=1;i<=n;i++){ k*=i; l+=k; } printf("%d",l); } else { printf("input error"); } return 0; }
1287: 实验6-1:求整数位数(循环结构)
题目描述
输入一个不多于9位的正整数,要求一、逆序输出各位数字,二、输出它是几位数。
输入
正整数
输出
逆序输出各位数字
几位数
样例输入
234567891
样例输出
1 9 8 7 6 5 4 3 2
9 digit number
Problem1287:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 # include<stdio.h> int main() { int l,j,k; scanf("%d",&k); for(l=0;k!=0;l++) { j=k%10; printf("%d ",j); k/=10; } printf("\n"); printf("%d digit number",l); return 0; }
1286: 实验6-2:输出满足条件的数(循环结构)
题目描述
在屏幕上输出m以内所有满足要求的数。要求:该数除了1和本身之外所有因子之和为n,如果没有满足条件的数则输出”no such numbers”
输入
m n
输出
除了1和本身之外所有因子之和为n的数
或
“no such numbers”
样例输入
200 30
样例输出
32 125 161
Problem1286:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 #include<stdio.h> int main() { int m,n,i,l,j,c,k,a; scanf("%d %d", &m,&n); k=0; for(l=1;l<=m;l++){ c=l; for(i=2;i<=c/2;i++) { if(c%i==0) { k+=i; } } if(l!=k&&n==k&&l!=1){ printf("%d ",l); a=1; } k=0; } if(a==1){ } else{ printf("no such numbers"); } return 0; }
1284: 实验6-3:求素数(循环结构)
题目描述
输出m~n之间的素数(包括m和n,注意m和n的大小)。
输入
m n
输出
m~n之间的素数(m<n)
样例输入
56 35
样例输出
37 41 43 47 53
Problem1284:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 # include<stdio.h> int main() { int m,n,l,i; int j=1; scanf("%d%d",&m,&n); if(m>n){ l=m; m=n; n=l; }else{ } for(m;m<=n;m++) { for(i=2;i<=m/2;i++) { if(m%i==0) { j=0; break; }else{ j=1; } } if(j==1&&m!=1) printf("%d ",m); } return 0; }
1283: 实验6-4:打印平行四边形(循环结构)
题目描述
打印m*n平行四边形
输入
m n
输出
m*n平行四边形
样例输入
6 8
样例输出
1 2 3 4 5 6 7 8 9 10 11 ******** ******** ******** ******** ******** ********
Problem1283:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 # include<stdio.h> int main() { int m,n,i,j,k,l; scanf("%d%d",&m,&n); l=m-1; for(i=0;i<m;i++){ for(j=0;j<l;j++){ printf(" "); } l--; for(k=0;k<n;k++){ printf("*"); } printf("\n"); } return 0; }
1282: 实验6-5:求 a +aa + aaa + aaaa + …(循环结构)
题目描述
求s = a +aa + aaa + aaaa + …,其中一个a是一个数字。例如,输入2 5,则s=2 + 22 + 222 + 2222 + 22222(此时共有5个数相加)。
输入
a n
输出
a +aa + aaa + aaaa (n个数)的和
样例输入
2 5
样例输出
24690
Problem1282:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 # include<stdio.h> int main() { int m,n,i,j,k; int l=0; scanf("%d%d",&m,&n); k=m; for(i=0;i<n;i++){ l+=k; k=k*10+m; } printf("%d",l); return 0; }
1281: 实验6-6:计算投资额(循环结构)
题目描述
Daphne以10%的单利息投资了n美元(也就是说,每年的投资获利相当于原始投资的10%)。Deirdre以5%的复合利息也投资了n美元(也就是说,利息是当前余额的5%,包含之前的利息)。编写一个程序,计算需要多少年,Deirdre的投资额才会超过Daphne,并显示那时两人的投资额。
输入
n
输出
"%d年\ndaphne = %.2f\ndeirdre = %.2f\n"
样例输入
100
样例输出
27年
daphne = 370.00
deirdre = 373.35
Problem1281:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 # include<stdio.h> int main() { int i; float n,j,k; scanf("%f",&n); j=n; k=n; j+=n*0.1; k*=1.05; for(i=1;j>k;i++){ j+=n*0.1; k*=1.05; } printf("%d年\ndaphne = %.2f\ndeirdre = %.2f\n",i,j,k); return 0; }
1280: 实验6-7:序列收敛(循环结构)
题目描述
考虑这两个无限序列:
1.0+1.0/2.0+1.0/3.0+1.0/4.0+…
1.0-1.0/2.0+1.0/3.0-1.0/4.0+…
编写一个程序来计算着两个序列不断变化的总和,直到达到某个次数。让用户交互的输入这个次数。看看在100次,1000次,10000次之后的总和。是否每个序列看上去要收敛某个值?
输入
次数
输出
序列1的和
序列2的和
"%.2f\n%.2f\n"
样例输入
100
样例输出
5.19
0.69
提示
保留两位小数
Problem1280:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 # include<stdio.h> int main() { int n,i; float j,k,a=1,b=1; scanf("%d",&n); for(i=0;i<n;i++){ j+=1/a; if((int)b%2==0){k-=1/b; }else{k+=1/b; } a++; b++; } printf("%.2f\n%.2f\n",j,k); return 0; }
1563: 实验6-8:什么时候取完账户的钱
题目描述
Chuckie Lucky 赢得了m万美元(税后),他把奖金存入年利率5%的账户。在每年的最后一天,Chuckie取出n万美元。编写一个程序,计算这笔钱Chuckie可以取多少年,及剩余多少钱。
输入
m
n
输出
"能取 %d 年,账户余额为 %.2lf 万元.\n"
样例输入
100
10
样例输出
能取 14 年,账户余额为 2.01 万元.
Problem1563:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include<stdio.h> int main(){ double m,n; int i; scanf("%lf%lf",&m,&n); for(i=0;(m-n)>0;i++){ m*=1.05; m-=n; } printf("能取 %d 年,账户余额为 %.2lf 万元.\n",i,m); return 0; }
1564: 实验6-9:博士的朋友
题目描述
Rabnud 博士加入了一个社交圈。起初他有n个朋友。他的朋友数量以下列方式增长:一般第一周少2个朋友,剩下的朋友数量翻倍;第2周少了3个朋友,剩下的朋友数量翻倍。一般而言,第N周少N+1个朋友,剩下的朋友数量翻倍。编写一个程序,计算并显示Rabnud博士每周的朋友数量。该程序一直运行,直到超过邓巴数。邓巴数是粗略估算一个人在社交圈中有稳定关系的成员的最大值,该值大约是150。
“%d 周后 Rabnud有%d个朋友,已经超过150个了.”
输入
n
输出
“%d 周后 Rabnud有%d个朋友,已经超过150个了.\n”
样例输入
7
样例输出
8 周后 Rabnud有278个朋友,已经超过150个了.
Problem1564:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include<stdio.h> int main(){ int i,n; scanf("%d",&n); for(i=1;n<=150;i++){ n-=(i+1); n*=2; } printf("%d 周后 Rabnud有%d个朋友,已经超过150个了.\n",i-1,n); return 0; }
1562: 实验6-10:打印三角形
题目描述
从键盘输入n的值,根据n的值,输出三角图案,如n=4时,输出图案如下:
1 2 3 4 5 6 7 ******* ***** *** *
输入
n
输出
对应三角形
样例输入
4
样例输出
1 2 3 4 5 6 7 ******* ***** *** *
Problem1562:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #include<stdio.h> int main(){ int i,n,m,j; scanf("%d",&n); for(i=0;i<n;i++){ m=2*n-1-2*i; for(j=0;j<i;j++){ printf(" "); } for(;m>=1;m--){ printf("*"); } printf("\n"); } return 0; }
1565: 实验6-11:打印矩阵
题目描述
从键盘输入n的值,根据n的值,输出由n个数字组成的图案,如n=5时,输出图案如下:
1 2 3 4 5
2 3 4 5 1
3 4 5 1 2
4 5 1 2 3
5 1 2 3 4
输入
n
输出
对应矩阵
样例输入
6
样例输出
1 2 3 4 5 6
2 3 4 5 6 1
3 4 5 6 1 2
4 5 6 1 2 3
5 6 1 2 3 4
6 1 2 3 4 5
Problem1565:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #include<stdio.h> int main(){ int i,n,m,j; scanf("%d",&n); for(i=0;i<n;i++){ m=i+1; for(j=0;j<n;j++){ if(m<=n){ printf("%d ",m); m++; } else{ m-=n; printf("%d ",m); m++; } } printf("\n"); } return 0; }
1567: 实验6-12:任意两个数的乘法竖式
题目描述
-30000~30000间的任意两个整数的乘法竖式。(乘号用小写x,横线用15个英文减号)
例如:
输入:-29999 29999
输入:-29999 29999
输出:(假设表示空格)
1 2 3 4 5 6 7 8 9 10 29999 x-29999 \--------------- -269991 -269991 -269991 -269991 +-59998 \--------------- =-899940001
输出:(假设表示空格)
1 2 3 4 5 6 7 8 9 10 29999 x29999 \--------------- 269991 269991 269991 269991 +59998 \--------------- =899940001
输入
两个整数
输出
乘法竖式
样例输入
-856
23456
样例输出
1 2 3 4 5 6 7 8 23456 x -856 \--------------- -140736 -117280 \+ -187648 \--------------- = -20078336
Problem1567:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 #include<stdio.h> #include<math.h> int len(int a) { int i; if(a<0) i=1; else i=0; for(;a!=0;i++) a/=10; return i; } int main() { int b,c,d,e,j,k,l,lens; scanf("%d%d",&b,&c); if(b<c){ d=c; c=b; b=d; } printf("%13d\nx%12d\n",b,c); printf("---------------\n"); for(j=0;j<len(c);j++){ l=pow(10,j); e=c/l%10; if(c/(l*10)%10!=0) { for(k=13-len(b*e)-j;k!=0;k--) { printf(" "); } printf("%d\n",b*e); } else{ printf("+"); for(k=12-len(b*e)-j;k!=0;k--) { printf(" "); }printf("%d\n",b*e); break; } } printf("---------------\n"); printf("=%12d\n",b*c); return 0; }
1568: 实验6-13:硬币组合
题目描述
假设一堆由1元、5角、1角组成的硬币总面值为0.5元~3元中任意钱数(钱数为带有1位小数的浮点数,如:2.5),输出所有的硬币组合(组合中的硬币数量可以为0),组合的输出格式:(2, 1, 1) 表示2枚1元,1枚5角,1枚1角的硬币组合,(1,0,1) 表示1枚1元,0枚5角,1枚1角的硬币组合。
输出格式:"(%d,%d,%d)\n"
输入
钱数
输出
所有硬币组合
样例输入
0.7
样例输出
(0,0,7)
(0,1,2)
Problem1568:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #include<stdio.h> int main() { float a,b=0.5,c=0.1; int x,y,z; scanf("%f",&a); for(x=0;x<=3;x++){ for(y=0;y<=6;y++){ for(z=0;z<=30;z++){ if(x+b*y+c*z==a) printf("(%d,%d,%d)\n",x,y,z); } } } return 0; }
1569: 实验6-14:数字组合
题目描述
输入16中任意数字n,输出nn+3可以组成多少个互不相同且无重复数字的3位数。要求输出所有符合条件的三位数(两个3位数之间用空格分隔)以及计算结果(另起一行输出)。
例如:输入2,则输出2、3、4、5四个数字能够组成的所有不相同且无重复数字的3位数及个数。
输入
1~6中任意一个数字n
输出
输出n~n+3可以组成多少个互不相同且无重复数字的3位数。
样例输入
4
样例输出
456 457 465 467 475 476 546 547 564 567 574 576 645 647 654 657 674 675 745 746 754 756 764 765
count=24
Problem1569:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 #include<stdio.h> int main() { int a,x,y,z,i=0; scanf("%d",&a); for(x=a;x<a+4;x++){ for(y=a;y<a+4;y++){ for(z=a;z<a+4;z++){ if(x!=y&&x!=z&&y!=z){ printf("%d ",100*x+10*y+z); i++; } } } } printf("\n"); printf("count=%d",i); return 0; }
1570: 实验6-15:求解方程
题目描述
输入系数a、b、c,求解方程 ax+by+cz=20的所有正整数解x、y、z。
输出格式:"x,y,z: %d,%d,%d\n"
输入
方程系数:a、b、c
输出
x、y、z的所有非负数整数解。
样例输入
2 5 3
样例输出
x,y,z: 1,3,1
x,y,z: 2,2,2
x,y,z: 3,1,3
x,y,z: 6,1,1
Problem1570:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include<stdio.h> int main() { int a,b,c,x,y,z; scanf("%d%d%d",&a,&b,&c); for(x=1;x<20;x++){ for(y=1;y<20;y++){ for(z=1;z<20;z++){ if(a*x+b*y+c*z==20) printf("x,y,z: %d,%d,%d\n",x,y,z); } } } return 0; }
1582: 实验6-16:求满足条件的xyz
题目描述
输入一个三位或四位整数n,求满足:xyz+yzz=n的所有x,y,z,如果没有对应的组合则输出”无对应组合”(xyz和yzz分别代表一个三位数)
输入
一个三位或四位整数n
输出
所有非零的x、y、z组合
或
“无对应组合”
样例输入
1234
样例输出
6,5,7
Problem1582:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 #include<stdio.h> #include<math.h> //输入一个n(3-4位),检测xyz+yzz=n的所有xyz,没有对应的组合则输出"无对应组合" int main(){ int n,x,y,z,i=0; scanf("%d",&n); for(x=0;x<10;x++){ for(y=0;y<10;y++){ for(z=0;z<10;z++){ if((x+y)*100+(y+z)*10+z*2==n) { printf("%d,%d,%d",x,y,z); i++; } } } } if(i==0) printf("无对应组合"); return 0; }
1584: 实验7-1:补全代码,折半交换 题目描述 输入一维数组a[10]
的十个元素,对其中元素进行折半交换,并输出。 说明:请只提供需要补全的代码部分,不需要提供完整程序。可根据需要定义其他变量。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <stdio.h> int main() { //需要补全的代码 for(i = 0; i<10; i++) printf("%d ", a[i]); return 0; }
输入
十个元素
输出
折半交换的结果
样例输入
1 3 5 7 9 2 4 6 8 0
样例输出
0 8 6 4 2 9 7 5 3 1
Problem1584:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #include <stdio.h> int main() { int i,j,n=10,k,a[10]; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0,j=9;i<j;i++,j--) { k=a[i];a[i]=a[j];a[j]=k; } for(i = 0; i<n; i++) printf("%d ", a[i]); return 0; }
1306: 实验7-2:降序排列(一维数组)
题目描述
从键盘读取10个整数,存入数组,对10个数据进行降序排列后输出。
输入
10个整数
输出
降序排列后结果
样例输入
25 65 45 32 87 65 98 85 41 52
样例输出
98 87 85 65 65 52 45 41 32 25
Problem1306:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 #include<stdio.h> int main() { int i,j,k,l,a[10]; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=1;i<10;i++){ for(j=0;j<10-i;j++){ if(a[j]>a[j+1]) { k=a[j];a[j]=a[j+1];a[j+1]=k; } } } for(l=9;l>=0;l--) printf("%d ",a[l]); return 0; }
1578: 实验7-3:补全代码,查找并删除元素
题目描述
初始化一维数组a[10]={12,45,87,64,15,-47,69,16,63,36}
,从键盘输入并查找一个整数num,如果找到,则删除数组中的num,输出删除后的数组,否则输出“Not Found!”,并输出原数组
说明:请只提供需要补全的代码部分,不需要提供完整程序。可根据需要定义其他变量。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <stdio.h> int main() { //需要补全的代码 for(i = 0; i<n; i++) printf("%d ", a[i]); return 0; }
输入
整数num
输出
删除后的数组
或
Not Found!
原数组
样例输入
27
样例输出
Not Found!
12 45 87 64 15 -47 69 16 63 36
Problem1578:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #include <stdio.h> int main() { int a[10]={12,45,87,64,15,-47,69,16,63,36}; int num,n=10,i,j,k; scanf("%d",&num); for(j=0;a[j]!='\0';j++){ if(num==a[j]){ for(k=j;k<9;k++){ a[k]=a[k+1]; } n--; break; } } if(n==10) printf("Not Found!\n"); for(i = 0; i<n; i++) printf("%d ", a[i]); return 0; }
1579: 实验7-4:补全代码,插入操作
题目描述
初始化一维数组中的9个元素a[10]={2,5,6,8,11,15,17,20,25}
,要求该数组已经按升序排列,从键盘输入一个整数num,并将其插入到数组a中,要求插入操作完成后,数组中的元素仍按升序排列。
说明:请只提供需要补全的代码部分,不需要提供完整程序。可根据需要定义变量。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include <stdio.h> int main() { int a[10]={2,5,6,8,11,15,17,20,25}; //需要补全的代码 for(i = 0; i<n; i++) printf("%d ", a[i]); return 0; }
输入
整数num
输出
插入num后的数组a
样例输入
27
样例输出
2 5 6 8 11 15 17 20 25 27
Problem1579:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 #include<stdio.h> int main () { int a[10]={2,5,6,8,11,15,17,20,25}; int i,j,k,l,m,n=10,o; scanf("%d",&m); for(j=0;j<10;j++) { if(a[j]<=m&&a[j+1]>=m){ k=a[j+1]; l=j+2; a[j+1]=m; break; }else if(a[j]>=m&&a[j]==2){ k=a[j]; l=j+1; a[j]=m; break; } else if(a[j]<=m&&a[j]==25){ k=a[j+1]; l=10; a[j+1]=m; break; } } for(;l<10;l++) { o=a[l]; a[l]=k; k=o; } for(i = 0; i<n; i++) printf("%d ", a[i]); return 0; }
1577: 实验7-5:补全代码,删除多个元素
题目描述
对于一维数据数组{5,0.3,0.2,1,0.9,3,7,15,10,13,0.1,2},输入num,删除其中所有小于num的值,输出删除后的数组。
说明:请只提供需要补全的代码部分,不需要提供完整程序。可根据需要定义变量。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <stdio.h> int main() { //需要补全的代码 for(i = 0; i<n; i++) printf("%.1f ", a[i]); return 0; }
输入
num
输出
删除后的数组
样例输入
0.5
样例输出
5.0 1.0 0.9 3.0 7.0 15.0 10.0 13.0 2.0
Problem1577:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #include <stdio.h> int main() { float l,a[20],b[20]={5,0.3,0.2,1,0.9,3,7,15,10,13,0.1,2}; int i,n=0; scanf("%f",&l); for(i=0;i<20;i++){ if(b[i]>=l){ a[n]=b[i]; n++; } } for(i = 0; i<n; i++) printf("%.1f ", a[i]); return 0; }
1580: 实验7-6:补全代码,按中轴数据分组
题目描述
初始化数组int a[10]={3,6,1,0,5,2,7,8,3,4}
,从键盘输入一个整数n作为中轴数据,将数组中所有<n的数据排列在n的左侧,所有>n的数据排列在n的右侧,输出分组后的结果;如果所输入的n值在数组中不存在则输出”Wrong number!”.
说明:请只提供需要补全的代码部分,不需要提供完整程序。可根据需要定义其他变量。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include <stdio.h> int main() { //需要补全的代码 if(flag) for(i = 0; i<10; i++) printf("%d ", a[i]); else printf("Wrong number!"); return 0; }
输入
n
输出
分组后的数组
或
Wrong number!
样例输入
5
样例输出
3 1 0 2 3 4 5 6 7 8
Problem1580:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 #include <stdio.h> int main() { int flag=0,l,a[20],b[10]={3,6,1,0,5,2,7,8,3,4}; int i,n=0; scanf("%d",&l); for(i=0;i<10;i++){ if(b[i]==l){ flag++; break; } } for(i=0;i<10;i++){ if(b[i]<l){ a[n]=b[i]; n++; } } a[n]=l; n++; for(i=0;i<10;i++){ if(b[i]>l){ a[n]=b[i]; n++; } } if(flag) for(i = 0; i<10; i++) printf("%d ", a[i]); else printf("Wrong number!"); return 0; }
1576: 实验7-7:补全代码,删除重复元素
题目描述
输入int a[10]
的十个元素,删除其中所有重复的元素,输出删除后的结果。
说明:请只提供需要补全的代码部分,不需要提供完整程序。可根据需要定义其他变量。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include <stdio.h> int main() { int a[10]; int i, j ,n; //需要补全的代码 for(i = 0; i<n; i++) printf("%d ", a[i]); return 0; }
输入
十个数组元素
输出
删除重复项后的数组
样例输入
2 2 3 5 2 6 8 5 3 6
样例输出
2 3 5 6 8
Problem1576:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 #include <stdio.h> int main() { int a[10]; int i, j,n; int b[10],k=0; for(i=0;i<10;i++){ scanf("%d",&b[i]); } for(i=0;i<10;i++){ a[k]=b[i]; for(j=0;j<i;j++) { if(a[k]==b[j]){ k--; break; } else{continue; } } k++; } n=k; for(i = 0; i<n; i++) printf("%d ", a[i]); return 0; }
1585: 实验7-8:补全代码,数据分组
题目描述
输入元素个数及数组中的各元素,将其中奇数的值放到数组前面,将偶数放到数组后面。 说明:请只提供需要补全的代码部分,不需要提供完整程序。可根据需要定义其他变量。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <stdio.h> int main() { //需要补全的代码 for(i = 0; i<n; i++) printf("%d ", a[i]); return 0; }
输入
数组长度
数组各元素
输出
输出分组后数组的结果
样例输入
7
6 5 8 7 3 2 1
样例输出
5 7 3 1 6 8 2
Problem1585:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 #include <stdio.h> int main() { int a[100],b[100],i,n,j,k,l,m; scanf("%d\n",&n); for(j=0;j<n;j++){ scanf("%d",&b[j]); } for(k=0,l=0;k<n;k++){ if(b[k]%2==1){ a[l]=b[k]; l++; } } for(m=0;m<n;m++){ if(b[m]%2==0){ a[l]=b[m]; l++; } } for(i = 0; i<n; i++) printf("%d ", a[i]); return 0; }
1586: 实验7-9:补全代码,求最小值及次小值
题目描述
输入数组int a[10]
的各元素,输出最小值及次小值,及它们所在下标。
说明:请只提供需要补全的代码部分,不需要提供完整程序。可根据需要定义其他变量。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <stdio.h> int main() { //需要补全的代码 printf("最小值%d,下标为%d\n", min1, k1); printf("次小值%d,下标为%d\n", min2, k2); return 0; }
输入
数组各元素
输出
最小值及次小值,及它们所在下标
样例输入
1 -9 7 2 -10 3 9 0 -4 -1
样例输出
最小值-10,下标为4
次小值-9,下标为1
Problem1586:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 #include <stdio.h> int main() { int a[10],i,j,min1,min2,k1,k2; for(i=0;i<10;i++){ scanf("%d",&a[i]); } min1=a[0]; min2=a[0]; for(i=0;i<10;i++){ if(min1>a[i]){ min1=a[i]; k1=i; } } for(i=0;i<10;i++){ if(min2>a[i]&&a[i]>min1){ min2=a[i]; k2=i; } } printf("最小值%d,下标为%d\n", min1, k1); printf("次小值%d,下标为%d\n", min2, k2); return 0; }
1587: 实验7-10:求体操运动员最后得分
题目描述
体操比赛中共有8名裁判员给体操队员评分(最高分为10.00分),评分原则为去掉最高分和最低分,其余分数取平均分则为体操运动员最后得分。要求分数保留到小数后3位。
输入
8位裁判评分
输出
该运动员的最后得分
样例输入
8.90 9.15 9.05 8.95 9.25 8.99 8.89 9.29
样例输出
9.048
Problem1587:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 #include <stdio.h> int main() { double a[8],sum=0,avg; int i,j,min,max; for(i=0;i<8;i++){ scanf("%lf",&a[i]); } min=0; max=0; for(i=0;i<8;i++){ if(a[min]>a[i]){ min=i; } } for(i=0;i<8;i++){ if(a[max]<a[i]){ max=i; } } a[max]=0;a[min]=0; for(i=0;i<8;i++){ sum+=a[i]; } avg=sum/6; printf("%.3lf\n", avg); return 0; }
1588: 实验7-11:补全代码,求里程数及车速
题目描述
一辆汽车在高速上行驶,当前的里程数是一个4~5位数n,经过m个小时后是与数n相邻的下一个对称数(从前读和从后读是一样的数,例如,7337),请输出该里程数及车速。
说明:请只提供需要补全的代码部分,不需要提供完整程序。可根据需要定义其他变量。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include <stdio.h> int main() { int a[5]; //需要补全的代码 printf("车速为:%g公里/小时\n新里程数为:", s); for(i = 0; i<k; i++) printf("%d", a[i]); return 0; }
输入
当前的里程数n(一个4~5位数)
m
输出
车速
新的里程数
样例输入
7350
2
样例输出
车速为:48.5公里/小时
新里程数为:7447
Problem1588:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 #include <stdio.h> int main() { int a[5]; int read,temp,i,k,j,l,calc; double s,hour; //设置变量值 scanf("%d\n%lf",&read,&hour); //读入里程数和时间 temp=read; for(k=0;temp!=0;k++) { temp/=10; } //计算里程表位数 if(k==4){ for(i=1;i<10;i++){ for(j=0;j<10;j++){ calc=i*1001+j*110; if(read<calc) break; } if(read<calc) break; } }else if(k==5){ for(i=1;i<10;i++){ for(j=0;j<10;j++){ for(l=0;l<10;l++){ calc=i*10001+j*1010+l*100; if(read<calc) break; } if(read<calc) break; } if(read<calc) break; } } //推算里程表位数 temp=1; for(i=0;i<k-1;i++) { temp*=10; } //准备分离各个位数 for(i=0;i<k;i++) { a[i]=calc/temp%10; temp/=10; } //分离各个位数 temp=calc-read; s=temp/hour; //计算车速 printf("车速为:%g公里/小时\n新里程数为:", s); for(i = 0; i<k; i++) printf("%d", a[i]); return 0; }
1355: 实验8-1:求矩阵右上角之和(二维数组、字符数组)
题目描述
输入一个4*4二维数组,输出其右上三角(含主对角线)的元素之和。
输入
4*4矩阵
输出
sum: %d
样例输入
0 1 1 1
1 0 1 0
0 1 0 1
1 0 0 1
样例输出
sum: 6
Problem1355:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 #include <stdio.h> int main() { int a[4][4]; int i,j,k,l,m=0; for(i=0;i<4;i++) { for(j=0;j<4;j++) scanf("%d",&a[i][j]); } for(k=0;k<4;k++){ for(l=k;l<4;l++) { m+=a[k][l]; } } printf("sum: %d", m); return 0; }
1354: 实验8-2:求矩阵每列最大值(二维数组、字符数组)
题目描述
输入3*4的二维数组,输出每一列的最大值。
输入
3*4的二维数组
输出
max[%d]=%d
样例输入
4 8 9 2
2 6 7 3
6 10 2 7
样例输出
max[0]=6
max[1]=10
max[2]=9
max[3]=7
Problem1354:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 #include <stdio.h> int main() { int a[3][4]; int i,j,k,l,m; for(i=0;i<3;i++) { for(j=0;j<4;j++) { scanf("%d",&a[i][j]); } } for(l=0;l<4;l++) { if(a[0][l]>a[1][l]) { if(a[0][l]>a[2][l]) m=a[0][l]; else m=a[2][l]; } else if(a[1][l]>a[2][l]) m=a[1][l]; else m=a[2][l]; printf("max[%d]=%d\n",l,m); } return 0; }
1353: 实验8-3:求重复次数最多的数
题目描述
输入数组int a[12]的十个元素,输出数组中重复次数最多的数。
输出格式:num: %d, times=%d
输入
数组中的元素
输出
num: %d, times=%d
样例输入
6 6 3 4 6 3 4 6 7 1 1 5
样例输出
num: 6, times=4
Problem1353:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 #include <stdio.h> int main() { int a[10],b[20][4]; b[14][0]=0; b[14][5]=0; int i,j,k,l,m,n=0; for(i=0;i<10;i++) { scanf("%d",&a[i]); } for(j=0;a[j]!='\0';j++) { for(k=0;a[k]!='\0';k++){ if(a[j]==a[k]) n++; } b[j][0]=a[j]; b[j][6]=n; n=0; } for(l=0;l<10;l++){ for(m=0;m<10;m++){ if(b[l][7]>b[m][8]&&b[l][9]>=b[14][10]){ b[14][11]=b[l][12]; b[14][0]=b[l][0]; } } } printf("num: %d, times=%d", b[14][0],b[14][13]); return 0; }
1352: 实验8-4:矩阵乘运算
题目描述
初始化一个整数矩阵a[2][14]={{1,0,1},{0,1,1}}
,输入b[3][15]
,输出两个矩阵乘运算的结果。
输出格式:"%3d"
输入
一个3*2矩阵
输出
矩阵乘运算的结果
样例输入
1 0
1 1
0 1
样例输出
1 1
1 2
Problem1352:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 #include <stdio.h> int main() { int a[2][16]={{1,0,1},{0,1,1}},b[3][17],c[2][18],i,j; for (i=0;i<3;i++) { for (j=0;j<2;j++) scanf("%d",&b[i][j]); } for (i=0;i<2;i++) { for (j=0;j<2;j++) { c[i][j]=a[i][0]*b[0][j]+a[i][19]*b[1][j]+a[i][20]*b[2][j]; printf("%3d",c[i][j]); } printf("\n"); } return 0; }
1343: 实验8-5:打印加法口诀表(二维数组、字符数组)
题目描述
输入n,输出n~n的加法口诀表,输出格式”%3d”.
输入
n
输出
n~n的加法口诀表
样例输入
6
样例输出
0 1 2 3 4 5 6
1 2 3 4 5 6 7
2 3 4 5 6 7 8
3 4 5 6 7 8 9
4 5 6 7 8 9 10
5 6 7 8 9 10 11
6 7 8 9 10 11 12
Problem1343:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #include <stdio.h> int main() { int i,j,n,a[100][100]; scanf("%d",&n); for(i=0;i<=n;i++){ for(j=0;j<=n;j++){ a[i][j]=i+j; printf("%3d",a[i][j]); } printf("\n"); } return 0; }
1342: 实验8-6:输出出生年月(二维数组、字符数组)
题目描述
从键盘输入18位身份证号(字符数组),输出出生年月(整型)。
输出格式”%d-%d”
输入不是18位,则输出”input error”
输入
身份证号
输出
出生年月
或
“input error”
样例输入
21010520000426205X
样例输出
2000-4
Problem1342:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 #include <stdio.h> int main() { char a[100]; int i,j,n[6]; scanf("%s",&a); if(a[17]!='\0'&&a[18]=='\0'){ for(j=6;j<13;j++){ n[j-6]=a[j]-48; } if(n[4]==0) printf("%d-%d",n[0]*1000+n[1]*100+n[2]*10+n[3],n[5]); else printf("%d-%d",n[0]*1000+n[1]*100+n[2]*10+n[3],n[4]*10+n[5]); } else printf("input error"); return 0; }
1341: 实验8-7:人名排序(二维数组、字符数组) 题目描述
输入4个英文人名,对人名进行排序(正序)输出。
输入
4个英文人名
输出
排序(正序)输出
样例输入
Tom
Jerry
Andy
Mike
样例输出
Andy
Jerry
Mike
Tom Problem1341:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 #include<stdio.h> int main() { int i,j,k; char s[4][50],t; for(i=0;i<4;i++){ scanf("%s",&s[i]); } for(i=0;i<3;i++){ for(j=i+1;j<4;j++){ if(s[i][0]>s[j][0]){ for(k=0;k<50;k++){ t=s[i][k]; s[i][k]=s[j][k]; s[j][k]=t; } } } } for(i=0;i<4;i++){ for(j=0;s[i][j]!='\0';j++) { printf("%c",s[i][j]); } printf("\n"); } return 0; }
1340: 实验8-8:找最长的字符串(二维数组、字符数组)
题目描述
定义数组s[4][50]
,输入4组字符串,输出最长字符串的长度。
输入
4组字符串
输出
最长字符串的长度
样例输入
this
is
a
program
样例输出
7 Problem1340:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 #include<stdio.h> int main() { int i,j,k,l[4]; char s[4][50]; for(i=0;i<4;i++){ scanf("%s",&s[i]); } for(i=0;i<4;i++){ for(j=0;s[i][j]!='\0';j++){ } l[i]=j; } for(i=0;i<3;i++){ for(j=1;j<4;j++){ if(l[i]<l[j]) k=l[j]; } } printf("%d",k); return 0; }
1339: 实验8-9:求鞍点(二维数组、字符数组)
题目描述
输入一个3*4二维数组,求其“鞍点”,即该位置上的元素在该行上最大,在该列上最小,如果没有鞍点输出”no saddlepoint”。
输入
3*4二维数组
输出
saddlepoint: %d, col: %d, row:%d
或
no saddlepoint
样例输入
1 9 8 4
2 6 7 5
3 8 9 5
样例输出
saddlepoint: 7, col: 2, row:1
Problem1339:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 #include <stdio.h> int main() { int k,m,n,i,j,a[3][4]; k=0; for(i=0;i<3;i++){ for(j=0;j<4;j++){ scanf("%d",&a[i][j]); } } for(i=0;i<3;i++){ m=a[i][0]; n=0; if(m<a[i][21]){ m=a[i][22]; n=1; } if(m<a[i][23]){ m=a[i][24]; n=2; } if(m<a[i][25]){ m=a[i][26]; n=3; } if(m<a[1][n]&&m<a[2][n]&&i==0||m<a[0][n]&&m<a[2][n]&&i==1||m<a[1][n]&&m<a[0][n]&&i==2) { printf("saddlepoint: %d, col: %d, row:%d\n",m,n,i); k++; } } if(k==0){ printf("no saddlepoint\n"); } return 0; }
1338: 实验8-10:改写大小写(二维数组、字符数组)
题目描述
输入一个英文题目,将每个单词的首字母改为大写字母,并删除单词间多余的空格(两单词之间只保留一个空格)。
输入
英文题目
输出
删除多余空格,首字母大写输出
样例输入
this class is about c language.
样例输出
This Class Is About C Language.
Problem1338:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 #include<stdio.h> int main() { int i,j,k,l; j,k=0; char a[100],b[100][100]; gets(a); for(i=0;a[i]!='\0';i++){ b[j][k]=a[i]; k++; if(a[i+1]==' '){ while(a[i+1]==' '){ i++; } k=0; j++; } } for(i=0;i<=j;i++){if(b[i][0]>='a'&&b[i][0]<='z') b[i][0]=b[i][0]-32; } for(i=0;i<=j;i++){ for(l=0;b[i][l]!='\0';l++){ printf("%c",b[i][l]); } printf(" "); } return 0; }
1220: 实验8-11:判断字符类型
题目描述
从键盘输入任意的字符,按下列规则进行分类:
1 (1)数字(例如:‘0’‘5’);(2)字母(例如:‘a’‘b’);(3)算术运算符(+、-、*、/、%);(4)转义字符(\n、\a、\b、\t)。但输入一个字符‘#’时,停止统计,并打印统计的结果。
输入
字符串
输出
各类型字符个数
样例输入
01a\b+#
样例输出
数字个数:2
字母个数:1
算术运算符:1
转义字符:1
Problem1220:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 #include <stdio.h> #include <string.h> int main() { char a[100]; int i,j,k=0,l=0,m=0,n=0; for(i=0;a[i-1]!='#';i++) scanf("%c",&a[i]); for(j=0;j<i;j++){ if(a[j]>=48&&a[j]<=57){ k++; }else if(a[j]>=65&&a[j]<=90&&a[j-1]!='\\'||a[j]>=97&&a[j]<=122&&a[j-1]!='\\'){ l++; }else if(a[j]=='+'||a[j]=='-'||a[j]=='*'||a[j]=='%'||a[j]=='/'){ m++; }else if(a[j]=='\\'){ n++; } } printf("数字个数:%d\n字母个数:%d\n算术运算符:%d\n转义字符:%d\n",k,l,m,n); return 0; }
1594: 实验8-12:交换主次对角线
题目描述
从键盘输入整数n(2<n<10)的值,输入一个二维整型数组(n×n)。对该二维数组所构成的矩阵进行主对角线和次对角线元素的位置进行交换,输出变换后的数组。
输入
n
及n*n的二维数组
输出
交换主次对角线后的数组
样例输入
4
3 5 6 7
8 5 6 2
4 6 2 1
9 6 8 3
样例输出
7 5 6 3
8 6 5 2
4 2 6 1
3 6 8 9
Problem1594:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 #include <stdio.h> int main() { int i,j,n,t,a[10][10]; scanf("%d",&n); for(i=0;i<n;i++){ for(j=0;j<n;j++){ scanf("%d",&a[i][j]); } } j=0; for(i=0;i<n;i++){ t=a[i][n-j-1]; a[i][n-j-1]=a[i][j]; a[i][j]=t; j++; } for(i=0;i<n;i++){ for(j=0;j<n;j++){ printf("%d ",a[i][j]); } printf("\n"); } return 0; }
1613: 实验8-13:补全代码,删除字符数组中多个字符
题目描述
输入字符串存在数组char c[30]
中,输入m,n,删除下标m开始的n个字符。输出删除后的结果。
说明:请只提供需要补全的代码部分,不需要提供完整程序。可根据需要定义其他变量。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <stdio.h> int main() { //需要补全的代码 puts(c); return 0; }
输入
字符串
m n
输出
删除后的字符串
样例输入
c programming language
2 12
样例输出
c language
Problem1613:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #include <stdio.h> int main() { char c[30]; int i,m,n; gets(c); scanf("%d%d",&m,&n); for(i=0;i<n;i++){ c[m+i]=c[m+n+i]; c[m+n+i]='\0'; } puts(c); return 0; }
1595: 实验9-1:编写函数判断闰年
题目描述
编写函数 int fun(int n)判断n是否是闰年,定义main函数输入年份,调用fun函数判断,在main函数中输出yes或no。
主函数如下所示,请只提供子函数的编写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include<stdio.h> int fun(int n); int main() { int year , f ; scanf("%d",&year); f=fun(year); if(f==1) printf("yes"); else printf("no"); }
输入
年份
输出
“yes”或”no”
样例输入
2000
样例输出
yes
Problem1595:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 #include<stdio.h> int fun(int n); int main() {int year , f ; scanf("%d",&year); f=fun(year); if(f==1) printf("yes"); else printf("no"); } int fun(int x){ if(x%4==0){ if(x%100==0&&x%400==0){ return 1; }else if(x%100!=0){ return 1; } else{ return 0; } }else{ return 0; } }
1596: 实验9-2:编写函数打印图形
题目描述
编写void prn(int n)函数打印如下图形,定义main函数输入n,调用prn函数输出等腰三角形。
1 2 3 4 5 6 7 * * * * * * * * * *
主函数如下所示,请只提供子函数的编写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include<stdio.h> void prn(int n); int main() { int a; scanf("%d",&a); prn(a); return 0; }
输入
n
输出
n行三角形
样例输入
4
样例输出
1 2 3 4 5 6 7 * * * * * * * * * *
Problem1596:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 #include<stdio.h> void prn(int n); int main() { int a; scanf("%d",&a); prn(a); return 0; } void prn(int n){ int i,j,k; for(i=0;i<n;i++){ for(j=n-i-2;j>=0;j--){ printf(" "); } for(k=0;k<i+1;k++){ printf("*"); printf(" "); } printf("\n"); } }
1597: 实验9-3:编写函数判断素数
题目描述
编写函数int prm(int n)判断n是否是素数,定义main函数输入m值,调用prm函数判断,在main函数中输出1~m之间的所有素数,输出格式”%d “。
主函数如下所示,请只提供子函数的编写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include <stdio.h> #include <stdlib.h> #include <math.h> int prm(int n); int main() { int i,m; scanf("%d",&m); for(i=0;i<=m;i++) { if(prm(i)==1) printf("%d ",i);} return 0; }
输入
m
输出
1~m之间的所有素数
样例输入
80
样例输出
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79
Problem1597:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 #include <stdio.h> #include <stdlib.h> #include <math.h> int prm(int n); int main() { int i,m; scanf("%d",&m); for(i=0;i<=m;i++) { if(prm(i)==1) printf("%d ",i);} return 0; } int prm(int n){ int i,j; j=1; for(i=2;i<10;i++){ if(n%i==0&&n!=2&&n!=3&&n!=5&&n!=7||n==1){ j=0; }else continue; } if(j!=0){ return 1; }else return 0; }
1598: 实验9-4:编写递归函数,求斐波那契数列第n项
题目描述
编写递归函数int f(int n),计算如下公式:
定义main函数输入n,调用f函数进行计算,在main函数中输出计算结果。
主函数如下所示,请只提供子函数的编写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include <stdio.h> #include <stdlib.h> int f(int n); int main() { int n; scanf("%d",&n); printf("%d",f(n)); return 0; }
输入
main函数输入n
输出
在main函数中输出计算结果
样例输入
10
样例输出
89
Problem1598:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #include <stdio.h> #include <stdlib.h> int f(int n); int main() { int n; scanf("%d",&n); printf("%d",f(n)); return 0; } int f(int n){ int i,j; j=2; if(n<=1){ return 1; } return f(n-1)+f(n-2); }
1599: 实验9-5:编写递归函数,求第n个数
题目描述
编写递归函数int f(int n)实现如下功能:有n个数,上一个数比下一个数大n-2,已知第1个数是2,那么求第n个数的大小。
在main函数中输入n,调用f函数后,在main函数中输出结果。
主函数如下所示,请只提供子函数的编写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include <stdio.h> #include <stdlib.h> int f(int n); int main() { int n; scanf("%d",&n); printf("%d",f(n)); return 0; }
输入
n
输出
在main函数中输出结果
样例输入
8
样例输出
23
Problem1599:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #include <stdio.h> #include <stdlib.h> int f(int n); int main() { int n; scanf("%d",&n); printf("%d",f(n)); return 0; } int f(int n) { if (n == 1) return 2; else return f(n - 1) + n - 2; }
1600: 实验9-6:编写递归函数,汉诺塔
题目描述
定义函数解决汉诺塔问题:将A柱上的盘子通过B柱移动到C柱子,在main函数中输入汉诺塔盘子数n,输出移动路径。输出格式:"%c->%c"
主函数如下所示,请只提供子函数的编写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include<stdio.h> void hanoi(int m,char a,char b,char c); int main() { int n; scanf("%d",&n); hanoi(n,'A','B','C'); return 0; }
输入
n
输出
移动路径
样例输入
3
样例输出
A->C A->B C->B A->C B->A B->C A->C
Problem1600:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #include<stdio.h> void hanoi(int m,char a,char b,char c); int main() { int n; scanf("%d",&n); hanoi(n,'A','B','C'); return 0; } void hanoi(int m,char a,char b,char c){ if (m == 1) { printf("%c->%c ", a, c); } else { hanoi(m - 1, a, c, b); printf("%c->%c ", a, c); hanoi(m - 1, b, a, c); } }
1601: 实验9-7:编写函数求组合数
题目描述
编写函数求组合数,从主函数输入整数n,调用函数求1~n可以组合成多少个不同的三位数,打印出这些三位数,输出格式为:”%d%d%d,”,主函数中输出个数,输出格式为:”\n可组成%d个不同的3位数”。
主函数如下所示,请只提供子函数的编写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <stdio.h> int fun(int n); int main() { int n; scanf("%d",&n); printf("\n可组成%d个不同的3位数",fun(n)); }
输入
n
输出
1~n之间组合的三位数
可组成 个不同的3位数
样例输入
5
样例输出
123,124,125,132,134,135,142,143,145,152,153,154,213,214,215,231,234,235,241,243,245,251,253,254,312,314,315,321,324,325,341,342,345,351,352,354,412,413,415,421,423,425,431,432,435,451,452,453,512,513,514,521,523,524,531,532,534,541,542,543,
可组成60个不同的3位数
Problem1601:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 #include <stdio.h> int fun(int n); int main() { int n; scanf("%d",&n); printf("\n可组成%d个不同的3位数",fun(n)); } int fun(int n){ int i,j,k; int l=0; for(i=1;i<=n;i++){ for(j=1;j<=n;j++){ if(j!=i){ for(k=1;k<=n;k++){ if(k!=j&&k!=i){ printf("%d,",i*100+j*10+k); l++; } } } } } return l; }
1602: 实验9-8:编写函数求所有因子及和
题目描述
编写函数int fac(int n)用于输出n的所有因子的和,要求在主函数中输入n,调用函数fac输出其所有因子。
主函数如下所示,请只提供子函数的编写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include<stdio.h> int fac(int n); int main() { int n; scanf("%d",&n); printf("因子:"); printf("\n因子和:%d",fac(n)); return 0; }
输入
n
输出
n的所有因子的和,输出格式”%d”
样例输入
12
样例输出
因子:1 2 3 4 6 12
因子和:28
Problem1602:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #include<stdio.h> int fac(int n); int main() { int n; scanf("%d",&n); printf("因子:"); printf("\n因子和:%d",fac(n)); return 0; } int fac(int n){ int i,j; j=0; for(i=1;i<=n;i++){ if(n%i==0){ j+=i; printf("%d ",i); } } return j; }
1603: 实验9-9:编写求次幂的函数
题目描述
编写函数double powr(int m,int n)计算m的n次幂,要求在主函数中输入m和n,调用函数powr输出结果。
主函数如下所示,请只提供子函数的编写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include<stdio.h> #include<math.h> double powr(int m,int n); int main() { int m, n; scanf("%d%d", &m, &n); printf("%.0lf\n", powr(m,n)); return 0; }
输入
m n
输出
m的n次幂,输出格式”%.0lf\n”
样例输入
3 7
样例输出
2187
Problem1603:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #include<stdio.h> #include<math.h> double powr(int m,int n); int main() { int m, n; scanf("%d%d", &m, &n); printf("%.0lf\n", powr(m,n)); return 0; } double powr(int m,int n){ int i; double sum=m; for(i=1;i<n;i++){ sum*=m; } return sum; }
1604: 实验9-10:进制转换
题目描述
编写函数int conv(char hex[])将16进制的数字字符串转换为十进制整数,要求主函数中输入16进制数字字符串,调用conv函数输出其十进制整数。16进制数字字符串的位数要求在6位以下,1位以上,并以H或h结尾。
主函数如下所示,请只提供子函数的编写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #include <stdio.h> #include <stdlib.h> int conv(char hex[]); int main() { int m; char hex[7]; scanf("%s",hex); m=conv(hex); if(m==-1) printf("输入有误!"); else printf("%d\n",m); }
输入
16进制数字字符串(要求长度>=1,且<=6,并以H或h结尾)
输出
十进制结果,输出格式”%d\n”;或 “输入有误!”
样例输入
57ABH
样例输出
22443
Problem1604:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 #include <stdio.h> #include <stdlib.h> int conv(char hex[]); int main() { int m; char hex[7]; scanf("%s",hex); m=conv(hex); if(m==-1) printf("输入有误!"); else printf("%d\n",m); } int conv(char hex[]){ int i,t,k; int sum=0; for(i=0;hex[i];i++){ if(hex[i]=='H'||hex[i]=='h'){ k=i; } else{ k=0; } } for(i=0;i<k;i++) { t=0; if(hex[i]>='0'&&hex[i]<='9') t=hex[i]-'0'; if(hex[i]>='a'&&hex[i]<='f') t=hex[i]-'a'+10; if(hex[i]>='A'&&hex[i]<='F') t=hex[i]-'A'+10; sum=sum*16+t; } if(k!=0) return sum; else return -1; }
1619: 实验9-11:鸡兔同笼问题
题目描述
编写函数int fun(int n, int m)解决鸡兔同笼问题,已知鸡和兔的总数量为n, 总腿数为m,函数fun()计算兔的数目,在主函数中调用fun(), 计算并依次输出鸡和兔的数目,如果无解,则输出No answer
说明:主函数如下所示,请只提供子函数的编写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #include <stdio.h> #include <stdlib.h> int fun(int n, int m); int n1,n2; int main() { int m,n,f; scanf("%d%d",&n,&m); f=fun(n,m); if(f==-1) printf("No answer"); else printf("%d只鸡,%d只兔\n",n1,n2); return 0; }
输入
n m
输出
鸡和兔的数目
样例输入
6 20
样例输出
2只鸡,4只兔
Problem1619:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 #include <stdio.h> #include <stdlib.h> int fun(int n, int m); int n1,n2; int main() { int m,n,f; scanf("%d%d",&n,&m); f=fun(n,m); if(f==-1) printf("No answer"); else printf("%d只鸡,%d只兔\n",n1,n2); return 0; } int fun(int n,int m){ n1=2*n-m/2; n2=m/2-n; if(n1>0&&n2>0) return 0; else return -1; }
1605: 实验10-1:打印水仙花数
题目描述
编写int fun(int x)函数,其功能是判断一个三位数x是否是水仙花数,如果是则返回1,不是返回0。 main函数中调用fun函数找出三位数中的所有水仙花数,并打印输出。说明:所谓“水仙花数”即是指一个三位数,其各位数字的立方和等于该数本身。
主函数如下所示,请只提供子函数的编写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include<stdio.h> int fun(int x); int main() { int m,n,i; scanf("%d",&n); for(i=n;i<=999;i++) { m=fun(i); if(m==1) printf("%d ",i); } }
输入
n
输出
大于n的水仙花数
样例输入
100
样例输出
153 370 371 407
Problem1605:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 #include<stdio.h> int fun(int x); int main() { int m,n,i; scanf("%d",&n); for(i=n;i<=999;i++) { m=fun(i); if(m==1) printf("%d ",i); } } int fun(int x){ int a=x%10; int b=x/10%10; int c=x/100%10; if(a*a*a+b*b*b+c*c*c==x&&c!=0){ return 1; } else{ return 0; } }
1606: 实验10-2:倒序输出数组
题目描述
编写函数void fun(int a[],int n),其功能是将数组a进行倒序,即a[0] 和a[n-1]交换,a[1]和a[n-2]交换。main函数中定义数组a[10],输入数组长度及各元素,调用fun函数,然后将倒序后的数组a输出,输出格式”%d “。
主函数如下所示,请只提供子函数的编写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include <stdio.h> void fun(int a[],int n); int main() { int n,i; scanf("%d",&n); int a[n]; for(i=0;i<n;i++) scanf("%d",&a[i]); fun(a,n); for(i=0;i<n;i++) printf("%d ",a[i]); }
输入
数组长度
各元素
输出
倒序输出数组
样例输入
6
1 2 3 4 5 6
样例输出
6 5 4 3 2 1
Problem1606:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #include <stdio.h> void fun(int a[],int n); int main() { int n,i; scanf("%d",&n); int a[n]; for(i=0;i<n;i++) scanf("%d",&a[i]); fun(a,n); for(i=0;i<n;i++) printf("%d ",a[i]); } void fun(int a[],int n){ int i,t; for(i=0;i<n/2;i++){ t=a[i]; a[i]=a[n-i-1]; a[n-i-1]=t; } }
1607: 实验10-3:编写矩阵转置函数
题目描述
编写函数void fun(int a[][4])
,其功能是实现二维数组赋值及转置。main 函数中输入整数n,定义二维数组a[4][4]
; 调用fun函数,赋值数组元素a[i][j]=n*i+j
,并实现二维数组a的转置,在主函数输出转置后的二维数组。
输出格式”%3d”。
主函数如下所示,请只提供子函数的编写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 void fun(int a[][4], int n); int main() { int i,j,n; int a[4][4]; scanf("%d",&n); fun(a,n); for(i=0;i<4;i++) { for(j=0;j<4;j++) printf("%3d",a[i][j]); printf("\n"); } }
输入
整数n
输出
before:
转置前数组
after:
转置后数组
样例输入
5
样例输出
before:
0 1 2 3
5 6 7 8
10 11 12 13
15 16 17 18
after:
0 5 10 15
1 6 11 16
2 7 12 17
3 8 13 18
Problem1607:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 #include <stdio.h> void fun(int a[][4], int n); int main() { int i,j,n; int a[4][4]; scanf("%d",&n); fun(a,n); for(i=0;i<4;i++) { for(j=0;j<4;j++) printf("%3d",a[i][j]); printf("\n"); } } void fun(int a[][4], int n){ int i,j,t; for(i=0;i<4;i++){ a[i][0]=n*i; for(j=1;j<4;j++){ a[i][j]=a[i][j-1]+1; } } printf("before:\n"); for(i=0;i<4;i++){ for(j=0;j<4;j++){ printf("%3d",a[i][j]); } printf("\n"); } for(i=0;i<4;i++){ for(j=i;j<4;j++){ t=a[i][j]; a[i][j]=a[j][i]; a[j][i]=t; } } printf("after:\n"); }
1608: 实验10-4:编写函数统计单词个数
题目描述
编写函数int words(char s[])统计字符串s中的单词个数,main函数输入字符串,调用words函数后,输出单词个数。
主函数如下所示,请只提供子函数的编写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include<stdio.h> int words(char s[]); int main() { char i,s[100]; gets(s); printf("%d",words(s)); }
输入
字符串
输出
单词个数
样例输入
This is a test text.
样例输出
5
Problem1608:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 #include<stdio.h> int words(char s[]); int main() { char i,s[100]; gets(s); printf("%d",words(s)); } int words(char s[]){ int i; int j=0; for(i=0;s[i];i++){ if(s[i]==' '&&s[i+1]!=' '||s[i]==' '&&s[i+1]=='\0'||i==0&&s[i]!=' '){ j++; } } return j; }
1609: 实验10-5:编写指定字符函数
题目描述
编写void fun(char s[], char c)函数,其功能是删除一个字符串s中指定的字符c。在main函数中输入字符串和要删除的字符,调用函数fun后,最后输出结果。如果输入的字符在字符串中不存在,输出格式:(“%c not exist in\n”,c),并输出原字符串。
主函数如下所示,请只提供子函数的编写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 void fun(char s[], char c); int main() { char str[50],c; gets(str); scanf("%c", &c); fun(str, c); return 0; }
输入
字符串s
要删除字符c
输出
删除后的结果
或
c not exist in
原串
样例输入
Hello world!
o
样例输出
Hell wrld!
Problem1609:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 #include<stdio.h> void fun(char s[], char c); int main() { char str[50],c; gets(str); scanf("%c", &c); fun(str, c); return 0; } void fun(char s[], char c){ int i,j,k; k=0; for(i=0;s[i];i++){ if(s[i]==c){ s[i]='\0'; k++; for(j=i+1;s[j];j++){ s[j-1]=s[j]; s[j]='\0'; } } } if(k!=0){ puts(s); } else{ printf("%c not exist in\n",c); puts(s); } }
1610: 实验10-6:编写函数判断密码的有效性
题目描述
要求:主函数输入密码,调用函数判断用户所设密码的有效性,密码要求:长度大于6,有字母、数字,及特殊字符,在主函数中输出判断结果,符合要求则输出”pass”,否则输出”fail”
主函数如下所示,请只提供子函数的编写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 int pws(char s[]); int main() { char str[50]; int n; gets(str); n = pws(str); if (n==1) printf ("pass"); else printf ("fail"); return 0; }
输入
密码
输出
pass或fail
样例输入
test123*
样例输出
pass
Problem1610:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 #include<stdio.h> int pws(char s[]); int main() { char str[50]; int n; gets(str); n = pws(str); if (n==1) printf ("pass"); else printf ("fail"); return 0; } int pws(char s[]){ int i,j,k,l; j=0; k=0; l=0; for(i=0;s[i];i++){ if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z'){ j++; } if(s[i]>='0'&&s[i]<='9'){ k++; } if((s[i]<='a'||s[i]>='z')&&(s[i]>='Z'||s[i]<='A')&&(s[i]>='9'||s[i]<='0')){ l++; } } if(i>6&&j!=0&&k!=0&&l!=0){ return 1; } else{return 0; } }
1611: 实验10-7:编写函数拷贝子串
题目描述
编写函数void strcopy(char s1[], char s2[], int m, int n)将s1串中下标m开始的n个子串拷贝到s2中,要求从键盘输入s1串,m和n,调用函数完成拷贝后输出s2.
主函数如下所示,请只提供子函数的编写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 void strcopy(char s1[], char s2[], int m, int n); int main() { char s1[100],s2[100]; int m,n; gets(s1); scanf("%d%d",&m,&n); strcopy(s1,s2,m,n); }
输入
s1串 m n
输出
s2串
样例输入
Hello Li Ming.
6 7
样例输出
Li Ming
Problem1611:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #include<stdio.h> void strcopy(char s1[], char s2[], int m, int n); int main() { char s1[100],s2[100]; int m,n; gets(s1); scanf("%d%d",&m,&n); strcopy(s1,s2,m,n); } void strcopy(char s1[], char s2[], int m, int n){ int i; for(i=m;i<m+n;i++){ s2[i-m]=s1[i]; } s2[n]='\0'; puts(s2); }
1620: 实验10-8:开灯问题
题目描述
有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号是2的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。编写函数int fun(int n, int k, int a[ ]) ,参数为:灯数n,人数k,数组a,其中数组a记录灯的开关状态,fun()函数计算并返回所有开着的灯中的最大编号,在主函数中调用fun(),输出开灯的最大编号,k≤n≤1000
说明:主函数如下所示,请只提供子函数的编写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include <stdio.h> #include <stdlib.h> int fun(int n, int k, int a[ ]) ; int main() { int k,n,f; scanf("%d%d",&n,&k); int a[n]; printf("亮灯的最大编号:%d\n",fun(n,k,a)); return 0; }
输入
n k
输出
亮灯的最大编号
样例输入
70 7
样例输出
亮灯的最大编号:68
Problem1620:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 #include <stdio.h> #include <stdlib.h> int fun(int n, int k, int a[ ]) ; int main() { int k,n,f; scanf("%d%d",&n,&k); int a[n]; printf("亮灯的最大编号:%d\n",fun(n,k,a)); return 0; } int fun(int n, int k, int a[ ]) { int i,j,l,m; for(l=1;l<=n;l++){ a[l]=0; } for(i=1;i<=k;i++){ for(j=1;j<=n;j++){ if(j%i==0){ if(a[j]){ a[j]=0; } else if(!a[j]){ a[j]=1; } } } } for(m=n;i>0;m--){ if(a[m]==1){ return m; break; } } }
1473: 实验11-1:求均方差(指针上)
题目描述
利用指针求一组数据的均方差。
定义数组a[10],输入数组长度n及n个数组元素,定义指针p指向数组a,利用指针p求这组数据的均方差,并输出,输出格式:%.2f
输入
n
n个数组元素
输出
均方差
样例输入
5
5 8 6 9 10
样例输出
1.85
Problem1473:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 #include<stdio.h> \#include<math.h> int main(){ float a[10]={0.0}; float *p; float b=0,c=0; int i,n; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%f",&a[i]); } for(i=0;i<n;i++){ b+=a[i]; } b/=n; p=a; while(*p!='\0'){ c+=pow((*p-b),2); *p++; } c/=n; printf("%.2f",sqrt(c)); return 0; }
1472: 实验11-2:实数拆分(指针上)
题目描述
编写函数void fun(double x, int *ip, double *fp)用于拆分实数x的整数部分和小数部分,其中整数部分保存在指针ip指向的变量,小数部分保存在指针fp指向的变量。在主函数中输出x,调用函数后,输出结果,输出格式:整数部分:%d,小数部分:%g
输入
x
输出
整数部分:%d,小数部分:%g
样例输入
123.4567
样例输出
整数部分:123,小数部分:0.4567
Problem1472:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 #include <stdio.h> int* ip; double* fp; void fun(double x, int* ip, double* fp) { int t1; double t2; t1 = x/1; t2 = x - t1; *ip=t1; *fp=t2; } int main() { double x; int ip; double fp; scanf("%lf", &x); fun(x, &ip, &fp); printf("整数部分:%d,小数部分:%g", ip, fp); return 0; }
1471: 实验11-3:求a数的b次幂(指针上)
题目描述
编写函数void fun(int a, int b, float *p),其功能是求a数的b次幂,结果保存在指针p指向的变量。在主函数中输入a和b,调用函数后,输出结果,输出格式:%d的%d次幂:%.0f
输入
a和b
输出
a的b次幂
样例输入
5 4
样例输出
5的4次幂:625
Problem1471:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 #include <stdio.h> float *p; void fun(int a, int b, float *p) { int i; int t=a; for(i=1;i<b;i++){ t*=a; } *p=t; } int main() {int a,b; float p; scanf("%d%d",&a,&b); fun(a,b,&p); printf("%d的%d次幂:%.0f",a,b,p); }
1470: 实验11-4:指针实现折半交换(指针上)
题目描述
编写函数void fun(int *p,int n)实现a数组的折半交换,主函数定义数组a[10],输入n及n个数组元素,定义指针p指向数组a,调用函数进行折半交换,输出交换后的结果。
输入
n及n个数组元素
输出
折半交换的结果
样例输入
5
1 2 3 4 5
样例输出
5 4 3 2 1
Problem1470:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 #include<stdio.h> int *p; void fun(int *p,int n){ int i,j,t; for(i=0;i<n/2;i++){ j=n-1-i; t=*(p+i); *(p+i)=*(p+j); *(p+j)=t;} } int main(){ int a[10]={0}; int i,n; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%d",&a[i]); } int *p=a; fun(p,n); for(i=0;i<n;i++){ printf("%d ",a[i]); } return 0; }
1669: 实验11-5:改错1,两数交换
题目描述
下列程序利用指针实现两个数据的交换,请改错。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include<stdio.h> void main( ) { int *t, *pa, *pb; scanf(“%d%d”, pa, pb); t = pa; pa = pb; pb = t; printf(“%d,%d”, pa, pb); }
输入
两个数
输出
交换后的结果
样例输入
3 7
样例输出
7,3
Problem1669:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include<stdio.h> void main( ) { int *t, *pa, *pb; scanf("%d%d", &pa, &pb); t = pa; pa = pb; pb = t; printf("%d,%d", pa, pb); }
1672: 实验11-6:改错2,指针操作数组
题目描述
输入元素个数及数组中的各元素,利用指针将其中所有负数都变为0,输出数组。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #include <stdio.h> int main() { int n,i,*p; scanf("%d",n); int a[n]; p=a; for(i=0;i<n;i++) { scanf("%d", *p); if(*p<0) *p=0; printf("%d ", *p); } return 0; }
输入
n
n个元素
输出
修改后的结果
样例输入
6
4 3 0 -1 -2 5
样例输出
4 3 0 0 0 5
Problem1672:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 #include <stdio.h> int main() { int n,i,*p; scanf("%d",&n); int a[n]; for(i=0;i<n;i++) { scanf("%d", &a[i]); } p=a; for(i=0;i<n;i++){ if(*p<0) *p=0; *p++; } for(i=0;i<n;i++) { printf("%d ", a[i]); } return 0; }
1478: 实验12-1:指针操作二维数组(指针下)
题目描述
定义二维数组a[4][4]
,输入数组各元素,利用指针输出每行最大值。
输入
a[4][4]
各数组元素
输出
每行最大值
样例输入
8 6 5 2
6 7 9 2
6 4 7 4
5 9 2 8
样例输出
8
9
7
9
Problem1478:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #include<stdio.h> int main(){ int a[4][4]; int *p; int i,j; for(i=0;i<4;i++){ for(j=0;j<4;j++){ scanf("%d",&a[i][j]); } } for(i=0;i<4;i++){ p=a[i][0]; for(j=0;j<4;j++){ if(p<a[i][j]){ p=a[i][j]; } } printf("%d\n",p); } return 0; }
1477: 实验12-2:指针实现数据插入(指针下)
题目描述
定义函数 void fun(int *p, int num)
,将数据num插入在指针p所指向的数组中,主函数中定义并初始化一个降序排列的数组a[10]={86,81,78,68,45,35}
,输入整数num,调用函数完成插入操作,输出插入数据后的数组,输出格式:”%d “
要求插入完成后,数组仍按降序排列。
输入
num
输出
插入后数组
样例输入
15
样例输出
86 81 78 68 45 35 15
Problem1477:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 #include<stdio.h> void fun(int* p, int num) { int i=0; int now = 6; for ( i = 0; i < 6; i++) { if (*(p + i) < num) { now = i; break; } } // cout << now << endl; for (i = 5; i >= now; i--) { *(p + i + 1) = *(p + i); } p[now] = num; } int main() { int i=0; int num; scanf("%d",&num); int a[10] = { 86, 81, 78, 68, 45, 35 }; fun(a, num); for ( i = 0; i < 7; i++){ printf("%d ",a[i]); } }
1476: 实验12-3:指针实现字符插入(指针下)
题目描述
编写函数void insertc(char *str, char c, int n),将字符c插入在str所指字符串的第n个位置。
要求:在主函数中输入字符串、字符及插入位置,调用函数后输出插入结果。例如:在”abcdedg”的第5个位置插入’m’,插入结果”abcdmedg” 。
输入
源字符串
单字符
插入位置n
输出
插入结果
样例输入
hello
C
6
样例输出
helloC
Problem1476:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 #include<stdio.h> void insertc(char *str, char c, int n); void insertc(char *str, char c, int n) { int i,len; char t; for(len=0;*(len+str);len++); for(i=n-1;i<=len;i++){ t=*(str+i); *(str+i)=c; c=t; } } int main() { char str[100]={'\0'}; char c; int n; gets(str); scanf("%c%d",&c,&n); insertc(str,c,n); puts(str); return 0; }
1475: 实验12-4:指针实现字符串连接(指针下)
题目描述
编写函数void fun(char *s1, char *s2, int n)将s2所指字符串的前n个字符连接到s1所指向的字符串后面。主函数输入两个字符串及n,调用函数完成连接过程,输出连接结果。
输入
两个字符串及n
输出
连接结果
样例输入
hello
c world
1
样例输出
helloc
Problem1475:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #include<stdio.h> void fun(char *s1, char *s2, int n); void fun(char *s1, char *s2, int n){ int i; for(i=0;*s1;i++){ *s1++; } for(i=0;i<n;i++){ *s1++=*s2++; } } int main(){ char s1[200],s2[100]; int n; gets(s1); gets(s2); scanf("%d",&n); fun(s1,s2,n); puts(s1); return 0; }
1474: 实验12-5:指针实现数字和字符分离(指针下) 题目描述
编写函数void fun(char *s, char *s1, char *s2),将s所指向的字符串中的数字转化为数字串存放在s1所指向区域,字母字符转化为字符串存放在s2所指向的区域。主函数中输入字符串,调用函数后输出转换后结果。
输入
字符串
输出
分离结果
样例输入
a1b2c3*h8h7g6
样例输出
123876
abchhg
Problem1474:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 #include<stdio.h> void fun(char *s, char *s1, char *s2); void fun(char *s, char *s1, char *s2){ int i; for(i=0;*s;i++){ if(*s>='0'&&*s<='9'){ *s1++=*s++; } else if(*s>='a'&&*s<='z'||*s>='A'&&*s<='Z'){ *s2++=*s++; } else{ *s++; } } } int main(){ char s1[200]={'\0'},s2[200]={'\0'},s[400]={'\0'}; gets(s); fun(s,s1,s2); puts(s1); puts(s2); return 0; }
1674: 实验12-6:改错,两个数交换
题目描述
编写函数实现两个数的交换。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include <stdio.h> int swap(int *p1, int *p2) { int *t; *t = *p1 ; *p1 = *p2; *p2 = *t; } int main( ) { int a, b, *pa, *pb ; scanf("%d%d",pa,pb); printf("交换前a=%d,b=%d", a, b); swap( pa, pb) ; printf("\n交换后a=%d,b=%d ", a, b); return 0; }
输入
a b
输出
交换结果
样例输入
5 8
样例输出
交换前a=5,b=8
交换后a=8,b=5
Problem1674:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include <stdio.h> int swap(int *p1, int *p2) { int t; t = *p1 ; *p1 = *p2; *p2 = t; } int main( ) { int a, b, *pa, *pb ; scanf("%d%d",&a,&b); pa=&a; pb=&b; printf("交换前a=%d,b=%d", a, b); swap( pa, pb) ; printf("\n交换后a=%d,b=%d ", a, b); return 0; }
1675: 实验12-7:程序改写,字符串连接
题目描述
将下列字符串连接程序改写为用指针实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #include<stdio.h> void catstr(char a[] , char b[]) { int i=0, j ; while(a[i++]); for(j=0; b[j] ; j++ ) a[i++] = b[j]; a[i] = '\0' ; } void main( ) { char a[20] , b[10]; gets(a);gets(b); copystr(a , b); puts(a); }
输入
a串 b串
输出
连接结果
Problem1675:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include<stdio.h> void catstr(char *a , char *b) { int j ; for(j=0;*a;j++){ *a++; } for(j=0; *b ; j++ ){*a++ = *b++; } } void main( ) { char a[20]={'\0'} , b[10]={'\0'}; gets(a);gets(b); catstr(a , b); puts(a); }
1676: 实验12-8:n行n列转置
题目描述
编写一个函数 void transpose(int (*matrix)[10], int n)
,实现对一个矩阵的前n行和前n列转置。先在主函数中初始化如下矩阵,然后输入n(n<10),调用transpose函数前n行n列的转置。
1 2 3 4 5 6 7 8 9 10 1 3 5 7 9 6 5 4 3 2 2 4 6 8 0 7 6 5 4 3 3 5 7 9 1 8 7 6 5 4 4 6 8 0 2 9 8 7 6 5 5 7 9 1 3 0 9 8 7 6 6 8 0 2 4 1 0 9 8 7 7 9 1 3 5 2 1 0 9 8 8 0 2 4 6 3 2 1 0 9 9 1 3 5 7 4 3 2 1 0 0 2 4 6 8 5 4 3 2 1
输入
n
输出
转置结果
样例输入
4
样例输出
1 2 3 4 5 6 7 8 9 10 1 2 3 4 9 6 5 4 3 2 3 4 5 6 0 7 6 5 4 3 5 6 7 8 1 8 7 6 5 4 7 8 9 0 2 9 8 7 6 5 5 7 9 1 3 0 9 8 7 6 6 8 0 2 4 1 0 9 8 7 7 9 1 3 5 2 1 0 9 8 8 0 2 4 6 3 2 1 0 9 9 1 3 5 7 4 3 2 1 0 0 2 4 6 8 5 4 3 2 1
Problem1676:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 #include<stdio.h> void transpose(int (*matrix)[10], int n); void transpose(int (*matrix)[10], int n){ int i,j,t; for(i=0;i<n;i++){ for(j=i;j<n;j++){ t=*(*(matrix+i)+j); *(*(matrix+i)+j)=*(*(matrix+j)+i); *(*(matrix+j)+i)=t; } } } int main(){ int a[10][10],i,j,k,l,m,n,b; k=0; l=1; m=0; n=12; for(i=0;i<10;i++){ for(j=0;j<5;j++){ if((i+1)%2==0&&(i+1)!=1){ k=l-1+(j+1)*2; if(k>=10){ k-=10; } a[i][j]=k; }else if((i+1)%2!=0||(i+1)==1) { k=l+j*2; if(k>10){ k-=10; } a[i][j]=k; } } for(;j<10;j++){ m=n-j; if(m>=11){ a[i][j]=m-11; } else if(m<11){ a[i][j]=m-1; } } if((i+1)%2==0&&(i+1)!=1&&l<10){l+=2; } else if((i+1)%2==0&&(i+1)!=1&&l>10){ l=-1;} n++; } scanf("%d",&b); transpose( a, b); for(i=0;i<10;i++){ for(j=0;j<10;j++){ printf("%d ",a[i][j]); } printf("\n"); } return 0; }
1677: 实验12-9:说反话 题目描述
输入一句英语,编写程序,利用指针将句中所有单词的顺序颠倒输出。输入为在一行内总长度不超过80的字符串,该字符串由若干单词组成,假设其中单词是由英文字母组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格(末尾无标点符号),要求定义指针完成程序。
输入
总长度不超过80的字符串表示的句子
输出
倒序后的句子
样例输入
Hello World Here I Come
样例输出
Come I Here World Hello Problem1677:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 #include <stdio.h> #include <string.h> int main(void) { char string[200]; char *p; p = gets(string); p = p + strlen(string) - 1; while(*p == ' ') { *p = '\0'; p--; } while (p > string) { if(*(p - 1) == ' ') { printf("%s", p); while(*(p - 1) == ' ') { *(p - 1) = '\0'; p--; } if(p != string) printf(" "); } p--; } printf("%s", p); return 0; }
1678: 实验12-10:回文字符串 题目描述
编写函数:int fun(char *p),功能是判断一个字符串是否是回文字符串(提示:回文字符串是指正读和反读都一样的字符串),要求从主函数中由键盘输入字符串,调用函数fun后,根据函数fun的返回值,主函数输出是否为回文字符串的判断。
输入
字符串
输出
是否为回文串
样例输入
hieeih
样例输出
是回文串 Problem1678:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 #include<stdio.h> int fun(char *p) { int i; int flag=1; int len; char *pStart=p; char *pEnd; len=0; for(i=0;*(p+i);i++){ len++; } pEnd=pStart+len-1; while(pStart<pEnd){ if(*pStart!=*pEnd){ flag=0; return flag; } pStart++; pEnd--; } return flag; } int main(){ int pd; char a[100]; gets(a); pd=fun(a); if(pd==1){ printf("是回文串"); }else if(pd==0){ printf("不是回文串"); } return 0; }