函数练习题1
1、编程实现:输入一个正整数,统计该正整数的各位数字中,0出现了几次,1出现了几次,…。如没有出现,则不输出该位数字的信息。该程序的运行示例如下:
样例输入 样例输出 0:1 1:1 566675801 5:2 6:3 7:1 8:1 参考代码1:
#include
void f(int number) {
int digit;
int n0, n1, n2, n3, n4, n5, n6, n7, n8, n9;
n0 = n1 = n2 = n3 = n4 = n5 = n6 = n7 = n8 = n9 = 0; 器初始化为0
while (number != 0) //循环取出最右边的那位数字 {
digit = number % 10; //取出最右边的数字
switch (digit) //判断最右边的数字是哪位 {
case 0: n0++; break; case 1: n1++; break; case 2: n2++; break; case 3: n3++; break; case 4: n4++; break; case 5: n5++; break; case 6: n6++; break; case 7: n7++; break; case 8: n8++; break; case 9: n9++; break; }
number = number / 10; }
if (n0 != 0)cout << 0 << \ << n0 << endl; if (n1 != 0)cout << 1 << \ << n1 << endl; if (n2 != 0)cout << 2 << \ << n2 << endl;
//计数 if (n3 != 0)cout << 3 << \ << n3 << endl; if (n4 != 0)cout << 4 << \ << n4 << endl; if (n5 != 0)cout << 5 << \ << n5 << endl; if (n6 != 0)cout << 6 << \ << n6 << endl; if (n7 != 0)cout << 7 << \ << n7 << endl; if (n8 != 0)cout << 8 << \ << n8 << endl; if (n9 != 0)cout << 9 << \ << n9 << endl; }
int main() {
int number;
while (cin >> number) //测试数据有多组 f(number); return 0; }
参考代码2:
#include
int f(int number, int digit) //判断数字digit在number中出现的次数 {
int cnt = 0; //计数器初始化为0
while (number != 0) //循环取出最右边的那位数字 {
if (number % 10 == digit) //将取出的数字和digit比较 cnt++;
number = number / 10; }
return cnt; //返回数字digit出现的次数 }
int main() {
int number;
while (cin >> number) //测试数据有多组 {
for (int i = 0; i <= 9; i++) //依次处理数字0,1,2,...,9 {
if (f(number, i) != 0) //如果数字i出现的次数不为0 cout << i << \ << f(number, i) << endl; //则打
印其出现的次数 } }
return 0; }
2、编写程序:在main函数中输入三个整数,调用sort函数对这三个整数按从小到大排序,然后输出。
输入有多组数据,每组数据一行,每行输入3个整数,以空格分隔。
输出有多行,对应输入的每组数据,数据之间以空格分隔,最后一个数后面无空格。
样例输入 样例输出 1 2 3 1 2 3 1 3 2 1 2 3 2 1 3 1 2 3 2 3 1 1 2 3 3 1 2 1 2 3 3 2 1 1 2 3 参考代码: #include
void sort(int x, int y, int z) {
int t;
if (x > y) {
t = x; x = y; y = t;
} //if执行完后, x <= y if (x > z) {
t = x; x = z; z = t;
} //if执行完后, x <= z, 因此x是最小的 if (y > z) {
t = y; y = z; z = t;
} //if执行完后, y <= z, 因此y是中间的数,z是最大的数
cout << x << \ << y << \ << z << endl; //按从小到大输出x,y,z即可
}
int main() {
int a, b, c;
while (cin >> a >> b >> c) //测试数据有多组
sort(a, b, c); //调用sort函数实现排序和输出 return 0; }
3、求Fibonacci数列中大于n的第一个数及其在Fibonacci数列中的序号,要求: (1)定义函数fibo:用于求解并输出Fibonacci数列中大于m的第一个数及其在Fibonacci数列中的序号。
(2)在main函数中输入n,调用fibo函数输出结果。 输入有多组数据,每组数据一行,每行输入1个整数。
输出有多行,对应输入的每组数据,每组数据输出包括3个数,分别为输入的数n、序号、大于n的第一个数。数据之间以空格分隔,最后一个数后面无空格。 样例输入 样例输出 1000 1000 17 1597
参考代码:
#include
void fibo(int m) {
int f1 = 1, f2 = 1; //fibonacci数列中相邻的2个数 int t; //用来保存f2的临时变量
int sn = 2; //f2在fibonacci数列中的序号
while (f2 <= m) //当新递推出来的这一项f2的值小于等于m,反复递推 {
t = f2;
f2 = f1 + f2; f1 = t; sn++;
} //注意while循环执行完毕后, f2就是大于m的第1个数 cout << m << \ << sn << \ << f2 << endl; }
int main() {
int n;
while (cin >> n) //测试数据有多组
fibo(n); //调用fibo函数,无返回值 return 0; }
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库函数练习题1在线全文阅读。
相关推荐: