XJTU_ 西安交通大学2020大学计算机作业-第七周
注:所有题均已通过所有用例。
文章已上传到github:https://github.com/nobodyXX/XJTU_C_homework/blob/main/week7,如果这篇文章带给你了帮助或者灵感,欢迎给我点个星星,谢谢!!!
从键盘输入一个小于等于1000的正整数x,输出其平方根(为整数)。若输入数大于1000,则输出0,并继续接受下一个输入直至小于等于1000。(提示:使用求平方根函数sqrt需要包含
样例输入:
1200
1300
900
样例输出:
0
0
30
#include
int main() {
for (int a = 1001; a > 1000;) {
scanf("%d", &a);
(a > 1000) ? printf("0\n") : printf("%d", (int)sqrt(a));
}
return 0;
}
读取3个数(1~10)的整数值,每读取一个值,程序打印出该值个数的英文星号(""""*"""")。
输入:3个整数,3行。
输出:3行星号。
样例输入:
1
2
3
样例输出:
*
**
*** (不用理会括号)
int main() {
int a[3];
scanf("%d %d %d", &a[0], &a[1], &a[2]);
for (int i = 0; i <= 2; i++, printf("\n")) {
for (int n = 0; n < a[i]; n++) {
printf("*");
}
}
return 0;
}
}
输入整数a和b,若aa+bb大于等于100,则输出aa+bb百位及以上的数字,否则输出aa+bb。例如,输入25 25 ,它们的平方和为625+625=1250,百位及以上数为12.
输入:两个整数,中间用空格隔开
输出:一个整数。
样例输入:13 50
样例输出:26
int main() {
int a, b;
scanf("%d%d",&a,&b);
if (a * a + b * b >= 100) {
printf("%d", (a * a + b * b) / 100);
}
else {
printf("%d", a * a + b * b);
}
return 0;
}
输入若干个整数,其值在0至4的范围内,用-1作为输入结束的标志,统计每个整数的个数。
输入:[0,4]内的整数组成的序列,最后是-1,用空格隔开。
输出:0,1,2,3,4的统计个数,用一个空格隔开。
样例:
3 3 3 2 2 1 0 3 4 4 -1
1 1 2 4 2
样例输入:
4 4 2 4 0 1 1 3 3 0 4 4 1 1 1 0 3 -1
样例输出:
3 5 1 3 5
int main() {
int a[100], b = -1, i[6] = {0, 0, 0, 0, 0, 0 };
do {
//while (scanf("%d", &a[b]) != '-1') {
b++;
scanf("%d", &a[b]);
(a[b] == 0) ? i[1] = i[1] + 1 : 0;
(a[b] == 1) ? i[2] = i[2] + 1 : 0;
(a[b] == 2) ? i[3] = i[3] + 1 : 0;
(a[b] == 3) ? i[4] = i[4] + 1 : 0;
(a[b] == 4) ? i[5] = i[5] + 1 : 0;
} while (a[b] != -1);
printf("%d %d %d %d %d", i[1], i[2], i[3], i[4], i[5]);
return 0;
}
某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:
每位数字都用自身加上5后的和除以10的余数代替,如1用6代替,8用3代替;如3768就转换为8213;
再将第一步生成的数字的第一位和第四位交换,第二位和第三位交换。 如8213转换为3128,即为最终的加密密码。
编写程序完成数据的加密,输入:一个整数。
输出:一个整数。
样例输入:
2233
样例输出:
8877
int main() {
int a;
scanf("%d", &a);
for (int i = 10, n=0; n <= 3; a=a/10, n++) {//引入n是为了防止a以0开头
printf("%d", (a%i + 5) % 10);
}
return 0;
}
找出m到n之间的所有同构数(m 说明:一个正整数x,如果是它平方数的尾部,则称x为同构数。例如,6是其平方数36的尾部,25是其平方数625的尾部,那么6和25都是同构数。 输入: 输入m和n两个正整数,用空格分隔。 输出: 连续输出同构数,数据间用空格分隔。 样例输入: 一个球从100米高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求其在第n次落地时,共经过了多少米?第n次反弹高度是多少? 输入: 第n次的值,整数 输出:小球经过的路程长度和小球反弹的高度,分2行输出。 样例输入: 编程判断任意一个正整数各位数字之和是奇数还是偶数。如果是奇数输出1,偶数输出0 样例输入: 编程求以下级数前n项之和: s=1-1/3+1/5-1/7+… 样例输入: 求a+aa+aaa+aaaa+…+aa…a(n个),其中a为1~9之间的整数。 样例输入: 编程,找出[m,n]范围内是7的倍数或带7的全部正整数,m和n为正整数。 样例输入: “水仙花数”是指一个三位正整数,其各位数字的立方和确好等于该数本身,如:153=13+53+3^3 (其中表示乘方,53表示5的3次方),则153是一个“水仙花数”。 样例输入: 若三个正整数a,b,c满足 a2+b2=c2,则它们是一组勾股数。(2表示平方,a^表示a的平方)。 样例输入: 输入任意一个正整数,计算各位数字的平方和。如:1234 则:计算11+22+33+44=30 输入:一个正整数。 输出:整数 样例输入: 编写程序检验由三边能否构成三角形,检验方法是任意两边和均要大于第三边。 输入:三边长度 样例输入: 好像少写了一道题。 将数字替换为字母。输入一个整数,将它除以2;再将除以2后所得数字的整数部分的各位用相应序号的字母替代。替换原则:0换为a,1换为b,2换为c,…,以此类推,9换为j。 例如,1234,除以2等于617,替换结果为gbh 输入:一个正整数 输出:除2后的整数整数部分和字符串,中间以一个空格隔开。 样例: 1234 617 gbh 样例输入: 都看到这儿了,点个星星呗https://github.com/nobodyXX/XJTU_C_homework/blob/main/week7
50 100
样例输出:
76//V1初始版
int main() {
int m, n, b = 1;
scanf("%d %d", &m, &n);
for (int a = 0; m <= n; m++) {//a是为了输出首尾无空格,把得数存在一个数组里输出数组也行。
(m < 10) ? (((m*m) % 10 == m) ? ((a == 0) ? printf("%d", m),a++: printf(" %d", m)) : 0) : 0;
(m < 100 && m >= 10) ? (((m*m) % 100 == m) ? ((a == 0) ? printf("%d", m), a++: printf(" %d", m)) : 0) : 0;
(m < 1000 && m >= 100) ? (((m*m) % 1000 == m) ? ((a == 0) ? printf("%d", m), a++ : printf(" %d", m)) : 0) : 0;
(m < 10000 && m >= 1000) ? (((m*m) % 10000 == m) ? ((a == 0) ? printf("%d", m), a++ : printf(" %d", m)) : 0) : 0;
}
return 0;
}
//V2精简版
int main() {
int m, n, b=1;
scanf("%d %d", &m, &n);
for (; b < m / 10;) { b = b * 10; }//判断m的位数并给b
for (int a = 0; m <= n; m++) {//a是为了输出首尾无空格
(m >= b && m <= b*10) ? (((m*m) % (b*10) == m) ? ((a == 0) ? printf("%d", m), a++ : printf(" %d", m)) : 0) : 0;//一句顶n句
b = (m == b*10 && m != 1) ? b * 10 : b;
}
return 0;
}
//V3应试版
//这个应该也行,考试的时候可以这样搞
int week7_q5_2() {
int a[] = { 1, 5, 6, 25, 76, 376, 625, 9376}, i=8, m, n;
scanf("%d %d", &m, &n);
for (; i <= 8; i++) {
(a[i] >= m && a[i] <= n) ? printf("%d", a[i]) : 0;
}
return 0;
}
第七题
15
样例输出:
299.987793
0.003052//也能像第六题一样精简,太懒了没弄
int main() {
char d[11] = "abcdefghij";
int a;
scanf("%d", &a);
printf("%d ", a = a / 2);
for (int i = 0; a != -1; ) {
(a < 10) ? printf("%c", d[a]), a = -1 : 0;
(a >= 10 && a<100) ? printf("%c", d[a / 10]), a = a % 10 : 0;
(a >= 100 && a < 1000) ? printf("%c", d[a / 100]), a = a % 100 : 0;
(a >= 1000 && a < 10000) ? printf("%c", d[a / 1000]), a = a % 1000 : 0;
(a >= 10000 && a < 100000) ? printf("%c", d[a / 10000]), a = a % 10000 : 0;
}
return 0;
}
第八题
201512013
样例输出:
1int main() {
int a, s = 0;
scanf("%d", &a);
for (; a != 0; a = a / 10) {
s = s + a % 10;
}
(s % 2 == 0) ? printf("0") : printf("1");
return 0;
}
第九题
30
样例输出:
0.777067int main() {
float s = 0, n;
scanf("%f", &n);
for (int i = 1, a = 1; i <= n; i++, a = a * (-1)) {
s = s + a * 1.0 / (2 * i - 1);
}
printf("%f", s);
return 0;
}
第十题
例如:当a = 1, n = 3时,求1+11+111之和为123;
输入:组成序列的数字a和求和项的数量n
输出:算式和结果。
2 7
样例输出:
2+22+222+2222+22222+222222+2222222=2469134int main() {
int a, n, s = 0;
scanf("%d%d", &a, &n);
for (int b = a; n != 0; n--, a = a * 10 + b) {
s = s + a;
(n == 1) ? printf("%d", a) : printf("%d+", a);
}
printf("=%d", s);
return 0;
}
第十一题
1 20
样例输出:
7是7的倍数
7是带7的数
14是7的倍数
17是带7的数int main() {
int m, n;
scanf("%d%d", &m, &n);
for (; m != n + 1; m++) {
(m % 7 == 0) ? printf("%d是7的倍数\n", m) : 0;
for (int a = m; a != 0; a = a / 10) {
(a % 10 == 7) ? printf("%d是带7的数\n", m), a = 0 : 0;
}
}
return 0;
}
第十二题
输入n, m,100<=n,m<1000, 求出[n,m]之间的水仙花数。若该区间没有水仙花数,输出-1.
输入:n,m,用空格隔开。
输出:若干水仙花数,用空格隔开。
100 500
样例输出:
153 370 371 407int main() { //用pow函数可以让代码更简洁
int m, n, l[3], x=0;
scanf("%d%d", &m, &n);
for (; m != n + 1; m++) {
for (int i = 0, a = m; i <= 2; a = a / 10, i++) {
l[i] = a % 10;
}
((l[0] * l[0] * l[0] + l[1] * l[1] * l[1] + l[2] * l[2] * l[2]) == m) ? ((x==0) ? printf("%d", m) : printf(" %d", m)), x++ : 0;
}
(x == 0) ? printf("-1") : 0;
return 0;
}
第十三题
编写程序,求给定区间[m,n]中的勾股数的数量(设一组勾股数满足a0.
输出:[m,n]中的勾股数的数量
1 100
样例输出:
52int main() {
int m, n, x = 0;
scanf("%d%d", &m, &n);
for (int i = m; m != n + 1; m++) {//注意区间是[m,n]
for (int a = i; a < m; a++) {
for (int b = i; b < a; b++) {
((a * a + b * b) == m * m) ? x++ : 0;
}
}
}
printf("%d", x);
return 0;
}
第十四题
8
样例输出:
64int main() {
int a, s = 0;
scanf("%d", &a);
for (; a != 0; a = a / 10) {
s = s + (a % 10)*(a % 10);
}
printf("%d", s);
return 0;
}
第十五题
输出:若果可以构成,输出YES,否则输出ERROR DATA
1 1 2
样例输出:
ERROR DATAint main() {
float a, b, c;
scanf("%f%f%f", &a, &b, &c);
((a + b) > c&&(a + c) > b&&(b + c) > a) ? printf("YES") : printf("ERROR DATA");
return 0;
}
第?题
2
样例输出:
1 bint main()
{
char a[11] = "abcdefghij",b[100];
int n, i = 0;
scanf("%d", &n);
printf("%d ", n = n / 2);
sprintf(b, "%d", n);//把n以%d的形式给字符串b
for (int i = 0; b[i]!='\0'; i++)(n < 10) ? printf("%c", a[b[i] - 48]), i=0 : printf("%c", a[b[i] - 48]);//0-9对应的ascii码是48-57
return 0;
}