1. 从键盘任意输入一个 3 位数 x,编程计算 x 的每一位数字相加之和(忽略整数 前的正负号)。例如,输入 x 为 123,则由 123 分离出其百位 1、十位 2、个位 3,然 后计算 1+2+3=6,并输出 6。注意:若输入是负数,应当将其转化为正数,然后再计 算各位数之和;若输入数据不是 3 位数,应提示输入错误
#include <stdio.h>
int main(){
int x;
printf("请输入一个三位数:");
scanf("%d",&x);
if(x<0) x*=(-10; //负数取正
int a,b,c,d;
a=x/100; //百位赋值给a
b=x/10%10; //十位赋值给b
c=x%10; //个位赋值给c
d=a+b+c;
printf("%d\n",x);
printf("%d\n",d);
}
在C语言中,abs函数是用来计算整数的绝对值的。这个函数定义在stdlib.h头文件中。
下面是一个简单的示例:
#include <stdio.h> ?
#include <stdlib.h> ?int main() {
?? ?int num = -10;
?? ?int abs_num = abs(num);
?? ?printf("The absolute value of %d is %d\n", num, abs_num);
?? ?return 0;
}
在这个示例中,我们首先定义了一个整数num,并将其设置为 - 10。
然后,我们使用abs函数计算num的绝对值,并将结果存储在abs_num中。
最后,我们使用printf函数输出结果。
需要注意的是,abs函数只能用于整数。
如果你想计算浮点数的绝对值,应该使用fabs函数,该函数定义在math.h头文件中。abs函数是在stdlib.h头文件中定义的。
2.用人民币一元兑换 1 分,2 分,5 分硬币,求共有多少种不同换法,以每行打印 1 种兑换方法的格式打印输出全部换法。例如,其中两种兑换方法如下:
0 枚 1 分硬币, 0 枚 2 分硬币, 20 枚 5 分硬币
0 枚 1 分硬币, 5 枚 2 分硬币, 18 枚 5 分硬币
#include <stdio.h>
int main(){
int c1,c2,c5,cnt=0;
printf("1元硬币有以下这些兑换方法:\n");
for(c1=0;c1<=100;c1++)
for(c2=0;c2<=50;c2++)
for(c5=0;c5<=20;c5++)
if(c1*1+c2*2+c5*5 == 100)
{
printf("%d枚1分硬币,%d枚2分硬币,%d枚五分硬币\n",c1,c2,c5);
cnt++;
}
printf("共有%d种兑换方法:\n,cnt);
}
3.将字符数组 a 中所有下标为单号的元素赋给数组 b,然后输出数组 a 和 b 的内容;
#include <stdio.h>
#include <string.h>
int main() {
char a[80]; // 存储第一个输入字符串
char b[80]; // 存储第二个字符串(仅包含奇数索引的字符)
int i, j; // 循环计数器
int len_a; // 第一个字符串的长度
puts("请输入第一个字符串:");
fgets(a, sizeof(a), stdin); // 从标准输入读取第一个字符串
len_a = strlen(a); // 计算第一个字符串的长度
初始化 b 数组为 '\0'
for (i = 0; i < len_a; i++) {
b[i] = '\0'; // 将 b 数组中的每个元素初始化为 '\0'
}
交换奇数索引的字符
j = 0; // 初始化 j 为0,表示当前 b 中的位置
for (i = 0; i < len_a; i++) {
如果索引是奇数(即字符位于奇数索引位置)
if (i % 2 != 0) {
b[j] = a[i]; // 将字符复制到 b 中对应的位置
j++; // 移动到 b 的下一个位置
}
}
b[j] = '\0'; // 在 b 的末尾添加 null 终止符
/*
在C语言中,字符串通常以空字符('\0')结尾,
以便程序能够识别字符串的结束位置。
这一行代码的目的是确保 b 是一个有效的C语言字符串,可以被正确地处理和打印。
如果缺少这一行,b 将不是一个有效的字符串,可能会导致程序出现错误或不可预测的行为。*/
puts("第一个字符串:");
puts(a); // 输出第一个字符串
puts("第二个字符串(仅包含奇数索引的字符):");
puts(b); // 输出第二个字符串
return 0;
}