题目描述: 现在,小明做了一些a+b和a-b的题目(a, b为整数且不含前导0),如果给你这些题目正确的答案,你能猜出小明会做得到什么答案吗? 输入输出格式: 输出: 样例输入: 样例输出: 题目描述: ack(0,n)=n+1 其中,m>0,n>0 测试用例: 输入: 则输出: 题目描述: 输入输出格式: 样例输入: 样例输出: 题目描述: 输入输出格式: 样例输入: 样例输出: 题目描述: 提示:需要定义含整型数组,最小元素值和该元素位置的结构体变量。以保证函数能同时返回最小元素值和该元素位置两个变量。 输入输出格式: 样例输入: 样例输出: 题目描述: void fun(int n,char res[]); 例如整数1035,逆序后为5301 样例输入: 样例输出: 题目描述 功能是将十进制整数n(n>=0)转换为t进制数(即2、8及16进制),结果存放在res字符数组中。 并编写测试用的主函数。、 样例输入: 样例输出:
第一题
叛逆期的小明什么都喜欢反着做,连看数字也是如此(负号除外),比如:
小明会把1234它看成4321;把-1234看成-4321;把230看成032 (032=32);把-230看成-032(-032=-32)。
输入:
两个整数x,y(-1000000 < = x, y < =1000000), x表示a+b的正确答案,y表示a-b的正确答案。 (输入保证合法,且不需考虑a或b是小数的情况。)
输出两个整数s t,之间用一个空格分开,其中s表示小明将得到的a+b答案,t表示小明将得到的a-b答案。20 6
38 24
参考代码
#include<stdio.h> int in; int xiaoming(int in) { int i, j, out, d, c; j = 0; out = 0; for (i = 1; i <= 1000000; i++) { if (in / i == 0) break; i = i * 10; j++; } int z[7]; for (d = 1; d <= j; d++) { z[d] = in % 10; in = in / 10; } for (c = 1; c <= j; c++) { out = 10 * out + z[c]; } return out; } int main() { int x, y, a, b; scanf("%d%d", &x, &y); a = (x + y) / 2; b = (x - y) / 2; int a1, b1; a1 = xiaoming(a); b1 = xiaoming(b); int s, t; s = a1 + b1; t = a1 - b1; printf("%d %d", s, t); }
第二题
Ackermann函数ack(m,n)采用以下递归式定义:
ack(m,0)=ack(m-1,1)
ack(m,n)=ack(m-1,ack(m,n-1))
编写一个计算此函数的递归函数。1,1
3
参考代码
#include<stdio.h> int Ack(int m, int n) { if (m == 0) return n + 1; if (n == 0) return Ack(m - 1, 1); return Ack(m - 1, Ack(m, n - 1));//极简的if语句,不用if-else-else if语句 } int main() { int m,n,h; scanf("%d,%d", &m, &n); h = Ack(m, n); printf("%d", h); return 0; }
第三题
有一分数序列如下: 2/1, 3/2, 5/3, 8/5, 13/8, 21/13, … 即后一项的分母为前一项的分子,后项的分子为前一项分子与分母之和,求其前n项之和。
输入:项数n(整数)
输出:前n项之和(实数,注:保留4位小数)6
10.0071
参考代码
#include<stdio.h> int main() { int a, b, n, tmp; double sum = 0; scanf("%d", &n); a = 1; b = 2; while (n) { sum += (double)b / a; tmp = a; a = b; b = tmp + b; n--; } printf("%.4f", sum); return 0; }
第四题
定义包含5个英文单词的字符数组(即二维字符数组),键盘输入5个单词,按字典顺序寻找最大和最小单词并输出。
输入:5个单词
输出:最大和最小单词(按字典序)this is a book end
max:this min:a
参考代码
#include<stdio.h> #include<string.h> int main() { char ch[5][10]; char min[10], max[10]; int i; for (i = 0; i < 5; i++) { gets(ch[i]); } strcpy(min, ch[0]); strcpy(max, ch[0]); for (i = 1; i < 5; i++) { if (strcmp(max, ch[i]) <= 0) { strcpy(max, ch[i]); } else if (strcmp(min, ch[i]) > 0) { strcpy(min, ch[i]); } } printf("max:%snmin:%sn", max, min); }
第五题
编写一个求数组中最小值元素及该元素位置的函数,并编写主函数调用。要求:由键盘输入10个数,并存放于整型数组中。
输入:用户输入的10个数
输出:第一个数字为数组中的最小元素值 第二个数字为该元素在数组中的下标位置(两个数用空格分开)11 22 33 4 5 66 7 8 9 10
4 3
参考代码
#include <stdio.h> int compare(int a, int b) { if (a >= b)return b; else return a; } int main() { int a[10]; for (int i = 0; i < 10; i++) { scanf("%d", &a[i]); } int x=a[0], n; for (int i = 0; i < 10; i++) { x = compare(a[i], x); } for (int i = 0; i < 10; i++) { if (x == a[i])n = i; } printf("%d %d", x, n); return 0; }
第六题
编写函数,函数原型如下:
函数功能是将整数n的各位数字逆序排列,存放到res字符数组中。输入: 9680200 输出: 0020869
123456
654321
参考代码
#include<stdio.h> #include<math.h> void fun(int n, char res[])//把整数化成倒序的字符数组;不需完整定义字符串 { int i, j, I; for (j = 0; n / pow(10, j) >= 1; j++)//得出该数的位数j ; for (i = 0; i <= j - 1; i++) { I = pow(10, i); res[i] = '0' + (n / I) % 10;//n为13时,res[0]=3,即先取出个位;注意此处整数与字符之间的转化 '0' } for (int k = 0; k < j; k++) printf("%c", res[k]); } int main() { int a, j, k; char res[128];//需完整定义字符串 scanf("%d", &a); fun(a, res);//仅函数名 return 0; }
第七题
编写进制转换函数,函数原型如下void dtoboh(int n,int t,char res[]);
如输入: 248,2 则输出: 11111000 如输入: 248,8 则输出: 370 如输入: 248,16 则输出: F8
2018,2
11111100010
参考代码
#include <stdio.h> void dtoboh(int n, int t, char res[]); int main() { int n, t; char res[128]; scanf("%d,%d", &n, &t); dtoboh(n, t, res); return 0; } void dtoboh(int n, int t, char res[]) { int i = 0; if (t == 2) { while (n / 2 != 0) { res[i] = n % 2+'0'; n /= 2; i++; } res[i] = n+'0'; } else if (t == 8) { while (n / 8 != 0) { res[i] = n % 8 + '0'; n /= 8; i++; } res[i] = n+'0'; } else if (t == 16) { while (n / 16 != 0) { if (n % 16 < 10)res[i] = n % 16 + '0'; else if (n % 16 >= 10 && n % 16 < 16)res[i] = n % 16 - 10 + 'A'; n = n / 16; i++; } if (n < 10)res[i] = n % 16 + '0'; else if (n>= 10 && n < 16)res[i] = n % 16 - 10 + 'A'; } for (int j = i; j > -1; j--)printf("%c", res[j]); }
一种解决方案
#include <stdio.h> void two(int a) { int b, k, i; int remainder[512]; //定义了一个remainder数组,用来收集短除法除得的余数,栈倒序输出。 k = 0; while (a != 0) { b = a / 2; k++; remainder[k] = a - b * 2; a = a / 2; }; for (i = k; i >= 1; i--) { printf("%d", remainder[i]); } } void output(int p,int q) { if (q == 2)two(p); else if (q == 8)printf("%o", p); else if (q == 16)printf("%X", p); } int main() { int n, t; scanf("%d,%d", &n, &t); output(n, t); return 0; }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算