输入若干个整数,其值在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
//我好废呀,代码不报错,但是不出结果,还不会调试,哭死,哪位道兄看见了帮忙改一下我的代码
//这段代码绝对有大问题,但是我不知道怎么改,应该是数读不进去,数组学得巨烂
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int a[200];
int i;
for (i = 0; ; i++)
{
scanf("%d", &a[i]);
}
int zero=0,one = 0, two = 0, three = 0, four = 0;
while (a[i] != -1)
{
switch (a[i])
{
case 0:zero++; break;
case 1:one++; break;
case 2:two++; break;
case 3:three++; break;
case 4:four++; break;
}
}
printf("%d %d %d %d %d\n", zero, one, two, three, four);
return 0;
}
//又重新更改了一下,要注意能让数被读到,所以循环里面的那个scanf就很重要
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int n;
int zero=0,one = 0, two = 0, three = 0, four = 0;
scanf("%d", &n);
while (n != -1)
{
switch (n)
{
case 0:zero++; break;
case 1:one++; break;
case 2:two++; break;
case 3:three++; break;
case 4:four++; break;
}
scanf("%d", &n);
}
printf("%d %d %d %d %d\n", zero, one, two, three, four);
return 0;
}
//下面是我崔神写的,我可真是个猪脑得
#include<stdio.h>
int main()
{
int stat[5] = { 0 };
int input = 0;
(void)scanf("%d", &input);
while (input != -1)
{
stat[input]++;
(void)scanf("%d", &input);
}
printf("%d", stat[0]);
for (int i = 1; i < 5; i++)
{
printf(" %d", stat[i]);
}
}
将一个大于4的正整数分解为连续的正整数之和,请显示全部分解结果。
如数字15,可以分解为:
15=1+2+3+4+5
15=4+5+6
15=7+8
样例输入:
6
样例输出:
6=1+2+3
//实锤啦,我就是废物哈哈哈,一点思路都莫得,下面是剽窃崔神的
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
unsigned n;
scanf("%u", &n);
for (unsigned i = 1; i <= n / 2; i++)
{
unsigned s = 0;
unsigned j;
for ( j = i; s <= n; j++)
{
s += j;
if (s == n)
{
printf("%d=%d", n, i);
for (unsigned k = i + 1; k <= j; k++)
{
printf("+%d", k);
}
printf("\n");
break;
}
}
}
return 0;
}
求a+aa+aaa+aaaa+…+aa...a(n个),其中a为1~9之间的整数。
例如:当a = 1, n = 3时,求1+11+111之和为123;
输入:组成序列的数字a和求和项的数量n
输出:算式和结果。
样例输入:
2 7
样例输出:
2+22+222+2222+22222+222222+2222222=2469134
//不知道第一次怎么做的,反正这次做不来了,寄了呀!!!
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main()
{
int a, n;
scanf("%d%d", &a, &n);
int sum = a;
printf("%d", a);
int i, b = a;
for ( i = 1; i < n; i++)
{
b = b * 10 + a;
printf("+%d", b);
sum += b;
}
printf("=%d\n", sum);
return 0;
}
“水仙花数”是指一个三位正整数,其各位数字的立方和刚好等于该数本身,如:153=1^3+5^3+3^3 (其中^表示乘方,5^3表示5的3次方),则153是一个“水仙花数”。
输入n, m,100<=n,m<1000, 求出[n,m]之间的水仙花数。若该区间没有水仙花数,输出-1.
输入:n,m,用空格隔开。
输出:若干水仙花数,用空格隔开。
样例输入:
100 500
样例输出:
153 370 371 407
//这四题中最简单的一个
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main()
{
int m, n;
scanf("%d%d", &m, &n);
int cut = 0;
int i , a, b;
for (i = m; i <= n; i++)
{
a = (int)pow(i % 10, 3) + (int)pow((i / 10) % 10, 3) + (int)pow(i / 100, 3);
if (i == a)
{
cut++;
cut == 1 ? printf("%d", i) : printf(" %d", i);
}
}
if (cut == 0) { printf("-1"); }//这一下段可不能忘记,不然亏大啦
return 0;
}
求一组数中的最大值,然后统计该最大值在这组数中出现的次数。
输入:元素个数n和n个整数。n<200。(要先输入个数n,然后再输入n个数)
输出:最大值及出现的次数。数据间以一个逗号隔开。
样例输入:
1 2
样例输出:
2,1
//几经波折,这段代码也算圆满满足,就一直没明白,数组应该怎么读入
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int n;
scanf("%d", &n);
int a[210];
for (int i = 0; i <= n - 1; i++)
{
scanf("%d", &a[i]);
}
int max = a[0];
//找出最大的数
for (int i = 1; i <= n - 1; i++)
{
if (a[i] > a[0]) { max = a[i]; }
}
//找出最大数出现的次数
int cut = 0;
for (int i = 0; i <= n - 1; i++)
{
if (a[i] == max) { cut++; }
}
printf("%d,%d", max, cut);
return 0;
}
//下面这段是崔神写的,一个循环完成了两个工作,我写那个属实是有点啰嗦了
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int n;
(void)scanf("%d", &n);
int i = 1;
int nextNum;
(void)scanf("%d", &nextNum);
int max = nextNum;
int maxNum = 1;
while (i < n)
{
(void)scanf("%d", &nextNum);
if (nextNum == max)
{
maxNum++;
}
if (nextNum > max)
{
max = nextNum;
maxNum = 1;
}
i++;
}
printf("%d,%d", max, maxNum);
return 0;
}
定义包含5个英文单词的字符数组(即二维字符数组),键盘输入5个单词,按字典顺序寻找最大和最小单词并输出。
输入:5个单词
输出:最大和最小单词(按字典序)
如:
one two three four five
max:two min:five(注:max和min后是英文冒号)
样例输入:
this is a book end
样例输出:
max:this min:a
//怎么说捏,要写函数,冒泡排序,但是没怎么搞懂,这个应该是冒泡的优化版,减少了循环次数,当然啦,嫖的
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
void BubbleWord(char word[][100], int n);
int main()
{
char word[5][100];
for (int i = 0; i < 5; i++)
{
scanf("%s", word[i]);
}
BubbleWord(word, 5);
printf("max:%s min:%s", word[4], word[0]);
return 0;
}
void BubbleWord(char word[][100], int n)
{
for (int i = 0; i <= n-1; i++)
{
for (int j = n - 1; j > i; j--)
{
if (strcmp(word[j], word[j - 1]) < 0)
{
char temp[100];
strcpy(temp, word[j-1]);
strcpy(word[j - 1], word[j]);
strcpy(word[j], temp);
}
}
}
}
将字符串首部的*号全部移到字符串的尾部,中间若有*号,保持中间的*号不动。字符串长度不超过200.
样例:
***street*****music***
street*****music******
样例输入:
stree*****tmusic
样例输出:
stree*****tmusic
//麻了麻了,写不了,全是剽窃的,要寄了呀
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable:4267)
#include<stdio.h>
#include<string.h>
int main()
{
char starStr[200];
(void)scanf("%s", starStr);
int i = 0;
while (starStr[i++] == '*'); //计算前面一共有多少个*
strcpy(starStr, starStr + i - 1); //除去开始的*
int len = strlen(starStr);
for (int m = 0; m < i - 1; m++) //将相同数量的*添加到尾部
{
starStr[m + len] = '*';
}
starStr[len + i - 1] = 0; //放置结尾标记
printf("%s", starStr);
return 0;
}
从键盘输入一个正整数(>1),然后将该整数分解为1和各个质因子的相乘,如果输入的整数本身就是质数,则应分解为1和该数本身相乘。
如:
18
1*2*3*3
样例输入:
18
样例输出:
1*2*3*3
//就离谱,这个结果全是错的它竟然可以测试通过
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int n;
scanf("%d", &n);
printf("1");
for (int i = 2; i <= n; i++)
{
if (n % i == 0);
{
printf("*%d", i);
n = n / i;
}
}
return 0;
}
有一分数序列如下: 2/1, 3/2, 5/3, 8/5, 13/8, 21/13, … 即后一项的分母为前一项的分子,后项的分子为前一项分子与分母之和,求其前n项之和。
输入:项数n(整数)
输出:前n项之和(实数,注:保留4位小数)
样例输入:
6
样例输出:
10.0071
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int n;
double fenmu = 1, fenzi = 2, temp;//必须写在循坏外面
double sum = 0;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
//double fenmu = 1, fenzi = 2, temp;这种写法就错了,
//每一次循环后分子和分母又回到的原点
//{}里的东西只在当前{}内部有效
sum = sum +(double) fenzi / fenmu;
temp = fenmu;
fenmu = fenzi;
fenzi = temp + fenzi;
}
printf("%.4lf", sum);
return 0;
}
输入公元年份和月份,输出该月份的天数。
输入:年,月(逗号分隔)
输出:天数
样例输入:
2018,8
样例输出:
31
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int year, month;
scanf("%d,%d", &year, &month);//这里的scanf里面就要加一个逗号了
switch (month)
{
case(1):printf("31"); break;
case(3):printf("31"); break;
case(5):printf("31"); break;
case(7):printf("31"); break;
case(8):printf("31"); break;
case(10):printf("31"); break;
case(12):printf("31"); break;
case(4):printf("30"); break;
case(6):printf("30"); break;
case(9):printf("30"); break;
case(11):printf("30"); break;
case(2):year%4==0?printf("29"):printf("28"); break;
}
return 0;
}
今晚通宵
2022年6月20号记,图书馆