目录
5.(1)输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。
(2)在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其它字符的个数。
1.国王的麦子
1.相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜欢象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着8×8共64格的象棋盘说:陛下,请您赏给我一些麦子吧,就在棋盘的第一个格子中放1粒,第2格中放2粒,第3格放4粒,以后每一格都比前一格增加一倍,依此放完棋盘上的64个格子,我就感恩不尽了。舍罕王让人扛来一袋麦子,他要兑现他的许诺。 国王能兑现他的许诺吗?
程序1:试编程计算舍罕王共要多少粒麦子赏赐他的宰相,这些麦子合多少立方米?(已知1立方米麦子约1.42e8粒) 总粒数为:sum=1+2+22+23+…+263
#include<stdio.h>
int main()
{
int i = 0;
double t = 1, sum = 1, v;
for (i = 1; i <= 63; i++) //计算麦子的数量
{
t = t * 2;
sum += t;
}
v = sum / 1.42e8;
printf("合:%.2lf立方米\n", v);
return 0;
}
2. 求完数。
程序2:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程找出1000之内的所有完数,输出所有的完数(要求:一行显示2个数);
#include<stdio.h>
int main()
{
int t = 0,num = 0;
int i = 0, j = 0;
for (i = 2; i <= 1000; i++) //1不是完数
{
int sum = 0;
for (j = 1; j < i; j++)
{
t = i % j;//判断是否为因子
if (t == 0)
sum += j;//因子的和
}
if (sum == i)//判断因子的和是否等于它本身
{
printf("%4d", i);
num++;
if (num % 2 == 0)//根据i的值判断一行打印两个
printf("\n");
}
}
return 0;
}
3.打印九九乘法表
程序3:编程输出如下上三角形式的九九乘法表。
#include<stdio.h>
int main()
{
int i = 1, j;
for (j = 1; j <= 9; j++)
{
printf("%3d", i * j);
}
printf("\n");
for (j = 1; j <= 9; j++)
{
printf("%3c", '-');
}
printf("\n");
for (i = 1; i <= 9; i++)
{
for (int k = 1; k < i; k++)
printf(" ");
for (j = i; j <= 9; j++)
{
printf("%3d", i * j);
}
printf("\n");
}
return 0;
}
4.求1!+2!+3!+…+20!;
#include<stdio.h>
int main()
{
int num = 0;
int i = 0;
long long j = 1, sum = 0;
for (num = 1; num <= 20; num++)
{
j = 1;
for (i = 1; i <= num; i++)
{
j *= i;
}
sum += j;
}
printf("%lld", sum);
return 0;
}
5.(1)输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。
(2)在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其它字符的个数。
#include <stdio.h>
int main()
{
char c;
int english_letters = 0, space = 0, digit = 0, other = 0;
printf("请输入一行字符:");
while ((c = getchar()) != '\n')
{
if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
{
english_letters++;
}
else if (c == ' ')
{
space++;
}
else if (c >= '0' && c <= '9')
{
digit++;
}
else
{
other++;
}
}
printf("字母数:%d\n空格数:%d\n数字数:%d\n其他字符:%d\n", english_letters, space, digit, other);
return 0;
}
修改后
#include <stdio.h>
int main()
{
char c;
int english_letters = 0, english_LETTERS = 0,space = 0, digit = 0, other = 0;
printf("请输入一行字符:");
while ((c = getchar()) != '\n')
{
if ( c >= 'A' && c <= 'Z')
{
english_LETTERS++;
}
if (c >= 'a' && c <= 'z' )
{
english_letters++;
}
else if (c == ' ')
{
space++;
}
else if (c >= '0' && c <= '9')
{
digit++;
}
else
{
other++;
}
}
printf("大字母数:%d\n小字母数:%d\n空格数:%d\n数字数:%d\n其他字符:%d\n", english_LETTERS,english_letters, space, digit, other);
return 0;
}
输入两个正整数m和n,求其最大公约数和最小公倍数。
#include<stdio.h> int GCD(int num1, int num2) { if (num1 > num2) { int tmp = num1; num1 = num2; num2 = tmp; } if (num2 % num1 == 0) { return num1; } for (int i = num1 - 1; num1 > 1; i--) { if (num1 % i == 0 && num2 % i == 0) { return i; } } } int main() { int num1 = 0; int num2 = 0; printf("请输入两个整数:"); scanf("%d %d", &num1, &num2); int ret = GCD(num1, num2);//最大公约数 printf("最大公约数为:%d\n", ret); printf("最小公倍数为:%d\n", (num1*num2)/ret); return 0; }