11.输出平方根
从键盘输入一个整数
x
,输出其平方根(为整数)。
若输入数大于
1000
或小于等于
0
,则输出
0
,并继续接受下一个输入直至小于等于
1000
。
sqrt函数:
sqrt使用时大多需要要强制类型转化,因为sqrt只支持double和float类型
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main()
{
double x;
scanf("%lf", &x);
while (x > 1000 || x <= 0) {
printf("0\n");
scanf("%lf", &x);
}
printf("%d", (int)sqrt(x));
return 0;
}
12.输出星号
从键盘输入
3
个整数(三个数取值均在闭区间
[ 1,10]
)
, 每读取一个值,程序打印出该值个数的英文星号( * )
。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int n;
for (int j = 0; j < 3; j++) {
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("*");
}
printf("\n");
}
return 0;
}
13.电话数据加密
某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:
1.
每位数字都用自身加
5
后的和除以
10
的余数代替,如
1
用
6
代替,
8
用
3
代替;如
3768
就转换
为
8213
;
2.
再将第一步生成的数字的第一位和第四位交换,第二位和第三位交换。 如
8213
转换为
3128
,即为最终的加密密码。
编写程序完成数据的加密。
方法一:用数组方法二:用字符串
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int a[4];
int n;
scanf("%d", &n);
for (int i = 3; i >= 0; i--) {
a[i] = n % 10;
n /= 10;
a[i] = (a[i] + 5) % 10;
}
for (int i = 3; i >= 0; i--) {
printf("%d", a[i]);
}
return 0;
}
#include <stdio.h>
int main(){
char a[5];
scanf("%s", a);//字符串输入
for (int i = 0; i < 4; i++){
(a[i] > '4') ? (a[i] -= 5) : (a[i] += 5);
//假如该位数字>4,则字符-5,即前移5位;否则,字符+5,后移5位
}
for (int i = 3; i >= 0; i--){
printf("%c", a[i]);
}//逆序输出
return 0;
}
14.判断同构数
找出整数
m
到整数
n (
闭区间)之间的所有同构数(
m<n
)。
说明:一个正整数
x
,如果是它平方数的尾部,则称
x
为同构数。例如,
6
是其平方数
36
的尾部,
25
是其平方数
625
的尾部,那么
6
和
25
都是同构数。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int m, n;
int flag2 = 0;
scanf("%d%d", &m, &n);
for (int i = m; i < n + 1; i++) {
int sq = i * i;
int a = i;
int flag1 = 1;//相同位是否相同,即是否为同构数
while (a != 0) {
if (sq % 10 == a % 10) {
sq /= 10;
a /= 10;
}
else {
flag1 = 0;
break;
}
}//判断
if (flag1 == 1 && flag2 == 0) {
printf("%d", i);
flag2 = 1;
}
else if (flag1 == 1 && flag2 == 1) {
printf(" %d", i);
}//输出
}
return 0;
}
15.判断正整数各位数字之和的奇偶性
编程判断任意一个正整数各位数字之和是奇数还是偶数。
如果和是奇数输出
1
,偶数输出
0
。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int x, sum = 0;//必须初始化sum为0
scanf("%d", &x);
while (x != 0)
{
sum += x % 10;
x /= 10;
}//sum为各位数之和
printf("%d", sum % 2);//sum为奇数,sum%2=1;为偶数,sum%2=0
return 0;
}
16.求级数及前n项的和
编程求以下级数前
n
项之和:
s=1-1/3+1/5-1/7+1/9-...
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main() {
double sum = 0;
int n;
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
sum += 1.0 / (2 * i - 1) * pow(-1, i + 1);
}
printf("%g", sum);
return 0;
}
17.找出7的倍数和带7的整数
编写程序,找出
[m,n]
范围内是
7
的倍数或带
7
的全部正整数。 其中,m
和
n
为正整数。
‘三元运算符’的用法:
1.需要加空字符占位(否则编译不通过)
2.每一个‘元’中的多个句子用逗号隔开
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(){
int m, n;
scanf("%d%d", &m, &n);
for (; m != n + 1; m++){//当m=n+1时跳出循环
(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;
}
18.勾股数
若三个正整数
a,b,c
满足
a^2+b^2=c^2
,则它们是一组勾股数。
(^2
表示平方,
a^
表示
a
的平方
)
。
编写程序,求给定区间
[m,n]
中的勾股数的数量
(
设一组勾股数满足
a<b<c)
。
例如
[ 1,10]
中的勾股数有
( 3,4,5)
和
( 6,8,10)
,则
[ 1,10]
中勾股数的数量为
2
。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int num = 0;
int m, n;
scanf("%d%d", &m, &n);
for (int i = m; i <= n-2; i++) {
for (int j = i + 1; j <= n - 1; j++) {
for (int k = j + 1; k <= n; k++) {
if (i * i + j * j == k * k) {
num++;
}
}
}
}
printf("%d", num);
return 0;
}
19.计算各位数字的平方和
输入任意一个正整数,计算各位数字的平方和。
如:
1234
则:计算
1 ∗ 1 + 2 ∗ 2 + 3 ∗ 3 + 4 ∗ 4 = 30
for循环结构后的括号内的变量会随循环结束而被释放
#include <stdio.h>
int main()
{
int a, s = 0;
scanf("%d", &a);
for (; a != 0; a = a / 10)
{
int b = a % 10;//某一位的数
s = s + b * b;
}
printf("%d", s);
return 0;
}
20.三边能否构成三角形
编写程序检验由三边能否构成三角形,检验方法是任意两边和均要大于第三边。
输入
:
三边长度
输出:如果可以构成三角形,输出
YES
,否则输出
ERROR DATA
#include<stdio.h>
int main(){
float a, b, c;
scanf("%f %f %f", &a, &b, &c);//注意采用float或者double类型
if (a + b > c && a + c > b && b + c > a){
printf("YES");
}
else{
printf("ERROR DATA");
}
return 0;
}