求助贴:c语言编程问题

图片说明图片说明

在你的程序里scanf()函数返回的是一个正整数,无论你输入的是不是-1,他接收的一直是一个参数,所以返回的一直是1,。并且还是使用“%lu”来接收
参数的,输入-1一定不会退出程序的,输入1.2scanf()只接收到了1,因为1.2不符合输入的规则“%lu”,也会返回1。程序不会停下

疑惑:
1、输入0有效,输出真确
2、输入-1不退出,-1被强制转换为int类型
3、输入1.2输出1个奇数后又printf();然后才退出

新郎和新娘问题
有新郎A B C 和新娘X Y Z
A说他要和X结婚,X说她要和C结婚,C说他要和Z结婚,他们都是在开玩笑
问他们是谁和谁要结婚
 
还是应用了穷举法思想
1、一共6个人,只有6种选择
2、根据要求,谁和谁不是一对,排除一些选择
 
 
源码:
#include
int func(int i,int j,int k,char wife[3])
{
  ......
答案就在这里:C语言编程--新郎和新娘问题
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

%lu表示输出无符号长整型整数 所以你输入负数也会被转成正数,改成%d

你的题目都说了请输入一个正整数,对于非正整数要做出判断

以“%lu”形式接收,又放在unsigned long int型变量里面,当然判断不了输入是不是-1了。

里面做了强制类型转换的 只能输入正整数

我知道了诶,改成while(scanf("%d",&integer)==1 && integer>0)就可以了,没认真看书,
CSDN真是个好的网站,那么多人热心回复,以后发帖之前我一定会先自己琢磨透的!
谢谢大家了!