C语言 习题 输入n个数,输出不重复的数及它们的和

这篇博客分享了一道C语言编程题,要求输入不确定数量的整数并排除重复项,输出不重复的整数及其总和。博主通过两种方法实现了这一功能,第一种利用`while((ch=getchar())!=' ');`来判断输入结束,第二种方法来自博主的宿友同学,虽然简洁但存在输入数量限制的问题。博主欢迎读者提供其他解决方案和思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

难住本小白的一道c语言题目,搞了两天才出来,不多比比,直接上题
题目:输入n个整数,输出不重复整数及它们的和。
//讲真,当时那道题,读了两遍愣是没懂······
此题笔者认为有两个难点,
1.“如何输入n个整数”,当按下回车键时结束输入,其中n是不定的,(不能要求先输入n的值,那样难度直接降低)
ps:如果是字符的话,直接用s[i]!=’\n’就行,其中s[i]是字符数组的某一个元素
但是本题是整数啊,是整数!当然如果说你用某一个整数来作为结束的标志,虽然可以,但是并不能令人满意

2.“如何删除重复的数”,笔者的思路是把不重复的数放进另一个数组,肯定会有别的思路,敬请指教,这个难点主要是逻辑上的问题,不说了直接上代码

#include<stdio.h>
int main()
{int a[10],b[10],i=0,j=0,k=0,m=0,sum=0;
 char ch;
 int flag;
 do
 {
  scanf("%d",&a[i]);
  i++;
 }while((ch=getchar())!='\n');
 k=i;
 for(i=0;i<k;i++) 
 {for(j=0;j<k;j++)
   {if((a[i]==a[j])&&(i!=j))
     {flag=1;
      break;
     }
    else if((a[i]==a[j]
### C语言基础练习题及答案 以下是几个典型的C语言基础练习题及其解答: #### 题目 1:生成字母金字塔 编写一个程序,让用户输入一个大写字母,然后以该字母为基础生成一个金字塔形状。 ```c #include <stdio.h> int main(void) { char i, j, z, k; int h, q; printf("请输入一个大写字母:"); scanf("%c", &k); if ('A' <= k && k <= 'Z') { q = k - 65; // 计算偏移量 for (z = 'A'; z <= k; z++) { for (h = 0; h < q; h++) { printf(" "); } for (i = 'A'; i < z; i++) { printf("%c ", i); } for (j = z; j >= 'A'; j--) { printf("%c ", j); } q--; printf("\n"); } } return 0; } ``` 此代码通过嵌套循环实现了基于用户输入的大写英文字母构建的金字塔结构[^1]。 --- #### 题目 2:计算无重复三位量并列举它们 给定字集合 `{1, 2, 3, 4}`,求可以组成的互不相同且无重复字的三位量,并打印这些三位。 ```c #include <stdio.h> int main() { int count = 0; // 统计符合条件的三位 int i, j, k; for (i = 1; i < 5; i++) { for (j = 1; j < 5; j++) { for (k = 1; k < 5; k++) { if (i != j && i != k && j != k) { // 确保三个位上的字各相同 printf("%d%d%d\n", i, j, k); count++; } } } } printf("总共可组成 %d 个同的三位。\n", count); return 0; } ``` 这段代码利用三重循环遍历所有可能组合,并通过条件判断排除掉符合要求的情况,最终统计得到满足条件的同三位总共有 `24` 个[^2]。 --- #### 题目 3:整型变量运算表达式的输出结果预测 分析以下代码片段的运行结果: ```c main( ) { int x = 10, y = 3; printf("%d\n", y = x / y); } ``` **解析**: 这里涉及到了赋值操作符优先级低于除法运算的问题。因此先执行 `x / y` 的商作为新的 `y` 值再将其打印出来。由于 `x / y` 结果为 `3` (因为这是两个整相除),所以最后输出的结果也是 `3`[^3]。 --- ### 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值