求助:用C语言帮我写几个“算数”程序

1 有一函数:
-1 (x<0)
y= 0 (x=0)
1 (x>0)
编写一程序,输入一个x值,输出y值。

2 输入一个字符,判断它是否为大写字母,如果是,将它转换成小写字母输出;如果不是,不转换原样输出。

3 有3个整数,a,b,c,由键盘输入,输出其中最大的数。

4.写出下面逻辑表达式的值。设a=3,b=4,c=5.

1.a+b>c&&b==c

2.a||b+c&&b-c

3.!(a>b)&&!c||1

4.!(x=a)&&(y=b)&&0

5.!(a+b)+c-1&&b+c/2

是用C语言..不是C++ ..这几道实在是弄不明白了~如果可能的话请加上思路注释,不胜感激!!
如果回答较全面我会加分的!

第一题
#include "stdio.h"
int fn(int x);
int main()
{
int x, y;
scanf("%d", &x);
y=fn(x);
printf("%d\n", y);
return 0;

}
int fn(int x)
{
if(x<0) return -1;
else if(x==0) return 0;
else return 1;
}
第二题
#include "stdio.h"
int main()
{
char ch;
scanf("%c", &ch);
/*判断ch是否大写字母*/
if( ch >= 'A' && ch <= 'Z')
{
ch += 32; /*加上32转化为小写字母*/
printf("%c\n", ch);
}
else
{
printf("%c\n", ch);
}
return 0;

}

第三题
#include "stdio.h"
/* max函数,返回a,b,c当中最大者 */
int max(int a, int b, int c);
int main()
{
int m, a, b, c;
scanf("%d %d %d", &a, &b, &c);
m=max(a,b,c);
printf("%d\n", m);
return 0;

}
int max(int a, int b, int c)
{
int temp;
/*先判断a,b,将a,b中较大的存进temp*/
if(a>=b)
temp = a;
else
temp = b;
/*再判断temp和c的大小*/
if(c>temp)
temp = c;
return temp;
}

第四题
#include "stdio.h"
int main()
{
int a=3, b=4, c=5;
int x, y;
/*每个表达式都返回一个bool值,0或1,直接输出就行了*/
printf("%d\n", a+b>c&&b==c);
printf("%d\n", a||b+c&&b-c);
printf("%d\n", !(a>b)&&!c||1);
printf("%d\n", !(x=a)&&(y=b)&&0);
printf("%d\n", !(a+b)+c-1&&b+c/2 );
return 0;
}

有什么不懂的尽管问我,我会尽力帮助你的^_^
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-11-25
全部调试通过
1.
#include<stdio.h>
int main(){
int x,y;
scanf("%d",&x);//输入x
if(x<0) //用if判断
y=-1;
else if(x==0)
y=0;
else if(x>0)
y=1;
printf("y=%d\n",y);//输出
return 0;
}

2.
#include<stdio.h>
int main(){
char a;
scanf("%c",&a);
if(a>='A'&&a<='Z') //为大写字母
a=a+32; //大写字母-32为小写字母的ASIC码
printf("%c\n",a); //输出
return 0;


3.三个数需要比较2次
#include<stdio.h>
int main(){
int a[3];
int i;
for(i=0;i<3;i++)
scanf("%d",&a[i]); //输入三个数
if(a[0]<a[1]) //比较第一,二个数
a[0]=a[1]; //把大的值给a[0]
if(a[0]<a[1])//比较第一,三个数
a[0]=a[2];//把大的值给a[0]
printf("最大数为%d\n",a[0]); //输出
return 0;


4.这是考优先级
#include<stdio.h>
int main(){
int a=3;
int b=4;
int c=5;
int x,y;
int n;
n=(a+b>c&&b==c); //(a+b>c)&&(b==c),(7>5)&&(4==5),1&&0,0
printf("第一个答案为%d\n",n); //输出0
n=(a||b+c&&b-c); //a||(b+c)&&(b-c) => 3||9&&(-1) =>1
printf("第二个答案为%d\n",n); //输出1
n=(!(a>b)&&!c||1); //(!(a>b))&&(!c)||1
printf("第三个答案为%d\n",n); //输出1
n=(!(x=a)&&(y=b)&&0); //(!(x=a))&&(y=b)&&0
printf("第四个答案为%d\n",n); //输出0
n=(!(a+b)+c-1&&b+c/2); //((!(a+b))+c-1)&&(b+(c/2)
printf("第五个答案为%d\n",n); //输出1
return 0;
}
第2个回答  2008-11-25
1:#include<stdio.h>
main()
{
float x,y;
printf("Enter a number:");
scanf("%f",x);
if(x<0) y=-1;
else if(x==0) y=0;
else y=1;
printf("\n %f",y);
}
2:输入一个字符,判断它是否为大写字母,如果是,将它转换成小写字母输出;如果不是,不转换原样输出。
用isupper函数啊
#include<stdio.h>
#include<string.h>
main()
{char a;
if(isupper(a=getchar()))
a+32;
printf("%c",a);
}
3 有3个整数,a,b,c,由键盘输入,输出其中最大的数。
#include<stdio.h>
main()
{
int a,b,c,max=b;
scanf("%d%d%d",&a,&b&,&c);
if(a>b)
max=a;
if(max<c)
max=c;
printf("%d",max);
}
4.写出下面逻辑表达式的值。设a=3,b=4,c=5.

1.a+b>c&&b==c 优先级关系大于逻辑(a+b>c)&&(b==c)a+b>c成立b==c不成立所以为假

2.a||b+c&&b-c a||b+c为真 b-c为真 所以为真

3.!(a>b)&&!c||1 !(a>b)为真 !c为假 但 !c||1为真 所以为真

4.!(x=a)&&(y=b)&&0 !(x=a)为假 !(x=a)&&(y=b)为假 所以为假

5.!(a+b)+c-1&&b+c/2 !(a+b)为0 !(a+b)+c-1为4非零为真 b+c/2非零为真
所以为真
这些题目太简单了啊,应该自己做才好啊
第3个回答  2008-11-25
#include"stdio.h"
第一题
main()
{
int x,y;
printf("please input x:\n");
scanf("%d",&x);
if(x>0)
printf("y=1\n");
else if(x==0)
printf("y=0\n");
else
printf("y=-1");
}
第二题
#include"stdio.h"
main()
{
char c ;
printf("please input c:\n");
scanf("%c",&c);
if('A'<c<'Z')
c=c+32;
printf("%c\n",c);

}

第三题
#include"stdio.h"
main()
{
int a,b,c,t=0;
printf("please input the value of a,b,c:\n");
scanf("%d%d%d",&a,&b,&c);

if(a>b)
{t=a; a=b; b=t;}
else
{
if(a>c)
{t=a; a=c; c=t;}
}
if(b>c)
{t=b; b=c; c=t;}
printf("%d\n",c);

}

第四题答案分别是:1.(0)2.(1)3.(1)4.(0)5.(1)
第四题可以用如下程序进行验证,只需将表达式的值赋给c就运行就行
#include"stdio.h"
main()
{
int a=3,b=4,c=5,t;
t=(!(a+b)+c-1&&b+c/2 );
printf("%d",t);

}本回答被提问者采纳
第4个回答  2008-11-30
<~~~所有程序都已经验证通过~~~>
第一题:
#include<stdio.h>
main()
{
int x,y;
scanf("%d",&x);
if(x>0) y=1;
else if(x==0) y=0; /*x<=0中x=0的情况*/
else y=-1; /*x<=0中除去x=0的情况即x<0*/
printf("%d\n",y);
getch(); /*此行使输出结果停留在用户界面*/
}

第二题:
#include<stdio.h>
main()
{
char c1;
scanf("%c",&c1);
if(c1>='a'&&c1<='z') /*输入字母a~z*/
c1=c1-32; /*字母大小写的ASCII相差32*/
else if(c1>='A'&&c1<='Z') /*输入字母A~Z*/
c1=c1+32;
printf("%c",c1);
getch();
}

第三题:
#include<stdio.h>
main()
{
int a,b,c,tem,max;
scanf("%d%d%d",&a,&b,&c);
tem=a>b?a:b; /*比较a与b的大小,并将较大的值赋给tem*/
max=tem>c?tem:c;/*比较tem与c的大小,并将较大的值赋给max*/
printf("max is %d\n",max);
getch();
}

第四题:
#include<stdio.h>
main()
{
int a,b,c,x,y;
a=3;b=4;c=5;
printf("%d\n",a+b>c&&b==c);
printf("%d\n",a||b+c&&b-c);
printf("%d\n",!(a>b)&&!c||1);
printf("%d\n",!(x=a)&&(y=b)&&0);
printf("%d\n",!(a+b)+c-1&&b+c/2);
getch();
}

/主要是比较逻辑运算的结果:计算结果为非0则等于1 计算结果为0则等于0/
1 0
2 1
3 1
4 0
5 1
(‘&&' 边同时为非0才等于1否则为0 “与”
‘‖’只要有一边为非0就等于1,两边同时为0才等于1 “或”
‘!’不等于 “非”)
相似回答