一个很简单的C语言代码 在线等大侠

noahxinhao 2012-05-16 02:27:26

#include<stdio.h>
int main(){
int i;
gets(i);
printf("%s\n",i);
if(i=1){
printf("111111111111");
}
if(i=2){
printf("222222222");
}else{
exit(1);
}
}

我是学java的很久没用C了,我想问一下为什么这段代码为什么不管输入的是1还是2两个判断语句中的都会打印出来
...全文
139 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mooker_Lee 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

gets是用来输入字符串的,不是用来输入整数的。
还有,i是整数类型,你怎么能这么用呢? printf("%s\n",i);
保留你先前的gets函数,我替你给过来了。
C/C++ code

#include <stdio.h>
#include <stdlib.h>

int main(){
int i;
char buff[16];
gets(buff);
……
[/Quote]

gets函数我有太清楚,但用%s格式是没错的,程序会把int型转换成char型打印出来。
Mooker_Lee 2012-05-16
  • 打赏
  • 举报
回复
if括号中的表达式语句总是为真,所是都打印了
你那是个赋值,应该写成==。
W170532934 2012-05-16
  • 打赏
  • 举报
回复
这个代码有两个问题:
第一:输入错误。居然用scanf("%s")来输入int了。输入Int应该是这样的:scanf("%d",&i);
第二:判断==操作符写成了赋值操作符=
noahxinhao 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
if(i==1){
printf("111111111111");
}
if(i==2){
printf("222222222");
}else{
exit(1);
}

if(i=1) //相当执行赋值操作 永真
[/Quote]
非常感谢
noahxinhao 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
C/C++ code


#include<stdio.h>
#include<stdlib.h>
int main(){
int i;
// gets(i);
scanf("%d", &i);
if(i==1){
printf("111111111111");
}
if(i==2){
printf("2……
[/Quote]
很感谢,小弟如醍醐灌顶不甚感激,还是把c语言拿出来好好看看
IVERS0N 2012-05-16
  • 打赏
  • 举报
回复
if(i==1){
printf("111111111111");
}
if(i==2){
printf("222222222");
}else{
exit(1);
}

if(i=1) //相当执行赋值操作 永真
liangbch 2012-05-16
  • 打赏
  • 举报
回复
gets是用来输入字符串的,不是用来输入整数的。
还有,i是整数类型,你怎么能这么用呢? printf("%s\n",i);
保留你先前的gets函数,我替你给过来了。

#include <stdio.h>
#include <stdlib.h>

int main(){
int i;
char buff[16];
gets(buff);
sscanf(buff,"%d",&i); //将字符串转化为1个整数,存入i中
printf("%d\n",i);
if(i==1){
printf("111111111111");
}
if(i==2){
printf("222222222");
}else{
exit(1);
}
}


hen_hao_ji 2012-05-16
  • 打赏
  • 举报
回复

#include<stdio.h>
#include<stdlib.h>
int main(){
int i;
// gets(i);
scanf("%d", &i);
if(i==1){
printf("111111111111");
}
if(i==2){
printf("222222222");
}else{
exit(1);
}
}

noahxinhao 2012-05-16
  • 打赏
  • 举报
回复
各位大侠们,就帮帮小弟吧 对C我是一窍不通的啊 这回还搞出了内存错误信息了
noahxinhao 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
i = 1要改成 i==1
i = 2 -> i==2
[/Quote]
不行啊 能帮我写一个具体的代码吗,就是像上面的那样输入1就打印11111输入2就打印22222
苏克贝塔03 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
java我没学过
不过java里 判断语句 都是长这样? i=2
[/Quote]
哈哈
zxjluohe 2012-05-16
  • 打赏
  • 举报
回复
java我没学过
不过java里 判断语句 都是长这样? i=2
hen_hao_ji 2012-05-16
  • 打赏
  • 举报
回复
i = 1要改成 i==1
i = 2 -> i==2

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧