输入三个整数,按由小到大的顺序输出,然后将程序改为:输入三个字符串,按由小到大的顺序输出。
#include
#include
void CompareInt(int* a, int* b, int* c)
{
if( *a >= *b && *a >= *c )
{
if( *b >= *c )
{
printf("%d %d %d", *c, *b, *a);
}
else
{
printf("%d %d %d", *b, *c, *a);
}
}
if( *b >= *a && *b >= *c )
{
if( *a >= *c )
{
printf("%d %d %d", *c, *a, *b);
}
else
{
printf("%d %d %d",*a, *c, *b);
}
}
if( *c >= *a && *c >= *b )
{
if( *a >= *b )
{
printf("%d %d %d",*b, *a, *c);
}
else
{
printf("%d %d %d",*a, *b, *c);
}
}
}
void CompareChar(char* a, char* b, char* c)
{
bool key = false;
if( (strcmp(a,b)>=0 && strcmp(a,c)>=0) )//strcmp(a,c)==0?
{
if(strcmp(b,c)>=0)
{
printf("%s %s %s",c, b, a);
key = true;
}
else
{
printf("%s %s %s",b, c, a);
key = true;
}
}
if( (strcmp(b,a)>=0) && (strcmp(b,c)>=0) )
{
if(key)
{}
else if(strcmp(a,c)>=0)
{
printf("%s %s %s",c,a,b);
key=true;
}
else
{
printf("%s %s %s",a,c,b);
key=true;
}
}
if((strcmp(c,a)>=0) && (strcmp(c,b)>=0))
{
if(key)
{}
else if(strcmp(a,b)>=0)
{
printf("%s %s %s",b,a,c);
}
else
{
printf("%s %s %s",a,b,c);
}
}
}
int main(void)
{
int a = 0, b = 0, c = 0;
printf("please input three numbers:");
scanf("%d %d %d",&a, &b, &c);
CompareInt(&a, &b, &c);//这一部分以前是注释掉的。
char a1[20],b1[20],c1[20];
printf("
please input three strings:");
scanf("%s%s%s",&a, &b, &c);
CompareChar(a1, b1, c1);//?
return 0;
}
strcmp(a,b)的返回值有三种可能:-1,0,1。分别表示比较的字符串ab(这里的符号表示字符串的字典顺序)。所以(strcmp(a,b)==1||strcmp(a,b)==0就相当于整数的a >= b
按照字符串的字典顺序frank<true<zjx,比较的规则是先比第一个字母,如果相同比第二个字母。这几个字符串第一个字母就可以确定顺序 f < t < z
if (key)这个key是一个标志位,如果之前已经比较出来了就设置为true,如果之前的if里已经设置好了,那么后面的if就不会执行任何东西了。这种写法完全没有必要,用if else嵌套一下会更好。
扩展资料:
非格式化顺序I/O处理器假定是128字节的记录,任何非格式化的一个顺序I/O文件的I/O把记录指针定位在128字节物理记录的结束处,如果所读的字节数不同于原来的字节数,就可能产生不希望的结果。
例如:假定几个180字节的记录写入一个非格式化顺序文件。并假定有100个字节是从文件中第180个字节的记录中读,那么,这100个字节的记录被输入并赋值给I/O列表中的元素。记录指针则定位在下一个128字节物理记录的开始。注意,这将导致在随后的读语句中开始读时,读了额外的数据,而不会跳过额外的数据。
避免这种情况发生的最好方法是保持输入记录和输出记录长度一样。如果遵守简单的预防措施,则利用非格式化顺序I/O就可以传输大于128字节的记录。
参考资料来源:百度百科-顺序输入
# include
# include
using namespace std;
int main()
{
int i,j,k,temp;
cout<<"请输入三个整数:"<<endl;
cin>>i>>j>>k;
if(i>j)
{
temp=i;
i=j;
j=temp;
}
if(i>k)
{
temp=i;
i=k;
k=temp;
}
if(j>k)
{
temp=j;
j=k;
k=temp;
}cout<<i<<""<<j<<""<<k<<endl;
string str1,str2,str3,tempt;
cout<<"请输入三个字符串"<<endl;
cin>>str1>>str2>>str3;
const char *s;
const char *s1=str1.c_str();
const char *s2=str2.c_str();
const char *s3=str3.c_str();
if(strcmp(s1,s2)>0)
{
s=s1;
s1=s2;
s2=s;}if(strcmp(s1,s3)>0)
{
s=s1;
s1=s3;
s3=s;}
if(strcmp(s2,s3)>0)
{
s=s2;
s2=s3;
s3=s;}cout<<s1<<""<<s2<<""<<s3<<endl;
return 0;
} 结果:
#include <stdio.h>
#include <string.h>
void CompareInt(int* a, int* b, int* c)
{
if( *a >= *b && *a >= *c )
{
if( *b >= *c )
{
printf("%d %d %d", *c, *b, *a);
}
else
{
printf("%d %d %d", *b, *c, *a);
}
}
if( *b >= *a && *b >= *c )
{
if( *a >= *c )
{
printf("%d %d %d", *c, *a, *b);
}
else
{
printf("%d %d %d",*a, *c, *b);
}
}
if( *c >= *a && *c >= *b )
{
if( *a >= *b )
{
printf("%d %d %d",*b, *a, *c);
}
else
{
printf("%d %d %d",*a, *b, *c);
}
}
}
void CompareChar(char* a, char* b, char* c)
{
bool key = false;
if( (strcmp(a,b)>=0 && strcmp(a,c)>=0) )//strcmp(a,c)==0?
{
if(strcmp(b,c)>=0)
{
printf("%s %s %s",c, b, a);
key = true;
}
else
{
printf("%s %s %s",b, c, a);
key = true;
}
}
if( (strcmp(b,a)>=0) && (strcmp(b,c)>=0) )
{
if(key)
{}
else if(strcmp(a,c)>=0)
{
printf("%s %s %s",c,a,b);
key=true;
}
else
{
printf("%s %s %s",a,c,b);
key=true;
}
}
if((strcmp(c,a)>=0) && (strcmp(c,b)>=0))
{
if(key)
{}
else if(strcmp(a,b)>=0)
{
printf("%s %s %s",b,a,c);
}
else
{
printf("%s %s %s",a,b,c);
}
}
}
int main(void)
{
int a = 0, b = 0, c = 0;
printf("please input three numbers:");
scanf("%d %d %d",&a, &b, &c);
CompareInt(&a, &b, &c);//这一部分以前是注释掉的。
char a1[20],b1[20],c1[20];
printf("
please input three strings:");
scanf("%s%s%s",&a, &b, &c);
CompareChar(a1, b1, c1);//?
return 0;
}
strcmp(a,b)的返回值有三种可能:-1,0,1。分别表示比较的字符串a<b,a=b,a>b(这里的符号表示字符串的字典顺序)。所以(strcmp(a,b)==1||strcmp(a,b)==0就相当于整数的a >= b
按照字符串的字典顺序frank<true<zjx,比较的规则是先比第一个字母,如果相同比第二个字母。这几个字符串第一个字母就可以确定顺序 f < t < z
if (key)这个key是一个标志位,如果之前已经比较出来了就设置为true,如果之前的if里已经设置好了,那么后面的if就不会执行任何东西了。这种写法完全没有必要,用if else嵌套一下会更好。
扩展资料:
非格式化顺序I/O处理器假定是128字节的记录,任何非格式化的一个顺序I/O文件的I/O把记录指针定位在128字节物理记录的结束处,如果所读的字节数不同于原来的字节数,就可能产生不希望的结果。
例如:假定几个180字节的记录写入一个非格式化顺序文件。并假定有100个字节是从文件中第180个字节的记录中读,那么,这100个字节的记录被输入并赋值给I/O列表中的元素。记录指针则定位在下一个128字节物理记录的开始。注意,这将导致在随后的读语句中开始读时,读了额外的数据,而不会跳过额外的数据。
避免这种情况发生的最好方法是保持输入记录和输出记录长度一样。如果遵守简单的预防措施,则利用非格式化顺序I/O就可以传输大于128字节的记录。
参考资料来源:百度百科-顺序输入
已经修改完成:
#include <stdio.h>
#include <string.h>
void CompareInt(int* a, int* b, int* c)
{
if( *a >= *b && *a >= *c )
{
if( *b >= *c )
{
printf("%d %d %d", *c, *b, *a);
}
else
{
printf("%d %d %d", *b, *c, *a);
}
}
if( *b >= *a && *b >= *c )
{
if( *a >= *c )
{
printf("%d %d %d", *c, *a, *b);
}
else
{
printf("%d %d %d",*a, *c, *b);
}
}
if( *c >= *a && *c >= *b )
{
if( *a >= *b )
{
printf("%d %d %d",*b, *a, *c);
}
else
{
printf("%d %d %d",*a, *b, *c);
}
}
}
void CompareChar(char* a, char* b, char* c)
{
bool key = false;
if( (strcmp(a,b)>=0 && strcmp(a,c)>=0) )//strcmp(a,c)==0?
{
if(strcmp(b,c)>=0)
{
printf("%s %s %s",c, b, a);
key = true;
}
else
{
printf("%s %s %s",b, c, a);
key = true;
}
}
if( (strcmp(b,a)>=0) && (strcmp(b,c)>=0) )
{
if(key)
{}
else if(strcmp(a,c)>=0)
{
printf("%s %s %s",c,a,b);
key=true;
}
else
{
printf("%s %s %s",a,c,b);
key=true;
}
}
if((strcmp(c,a)>=0) && (strcmp(c,b)>=0))
{
if(key)
{}
else if(strcmp(a,b)>=0)
{
printf("%s %s %s",b,a,c);
}
else
{
printf("%s %s %s",a,b,c);
}
}
}
int main(void)
{
int a = 0, b = 0, c = 0;
printf("please input three numbers:");
scanf("%d %d %d",&a, &b, &c);
CompareInt(&a, &b, &c);//这一部分以前是注释掉的。
char a1[20],b1[20],c1[20];
printf("
please input three strings:");
scanf("%s%s%s",&a, &b, &c);
CompareChar(a1, b1, c1);//?
return 0;
}
CompareChar(a, b, c);//?
这个函数CompareChar要求参数是三个char*类型的,abc是整数类型的,当然不行了。像你注释那样定义不就行了么?
/*char a[20]="frankzjx",b[20]="zjx",c[20]="true";*/
主函数改成这样就行了
int main(void)
{
char a[20]="frankzjx",b[20]="zjx",c[20]="true";
printf("please input three number:");
scanf("%s%s%s",&a, &b, &c);
CompareChar(a, b, c);
return 0;
}
你弄清楚strcmp函数的含义就明白是什么意思了:strcmp(a,b)的返回值有三种可能:-1,0,1。分别表示比较的字符串a<b,a=b,a>b(这里的符号表示字符串的字典顺序)。所以(strcmp(a,b)==1||strcmp(a,b)==0就相当于整数的a >= b
用C语言输入3个整数,要求按从小到大的顺序输出。谢谢大家
include<stdio.h> void main(){ int a,b,c,t;printf("请输入三个整数:a b c\\n");scanf("%d%d%d",&a,&b,&c);if(a>b){ t=a;a=b;b=t;} if(a>c){ t=a;a=c;c=t;} if(b>c){ t=b;b=c;c=t;} printf("排序后的三个整数为:%d,%d,%d\\n",a,b,c);} 希望...
输入三个整数,按由小到大的顺序输出
int a[3],*p_1,*p_2,*p_3,*temp_1,*temp_3;printf("imput 3 number please:\\n");scanf("%d,%d,%d",&a[0],&a[1],&a[2]);temp_1=min(a[0],a[1]);p_1=min(*temp_1,a[2]);p_2=mid(a[0],a[1],a[2]);temp_3=max(a[0],a[1]);p_3=max(*temp_3,a[2...
输入3个整数,按由小到大的顺序输出.(用指针实现)
\/\/三个都一样printf("请输入3个整数\\n");scanf("%d%d%d",pa,pb,pc);if(*pa>*pb){x=*pa;*pa=*pb;*pb=x;}if(*pa>*pc){x=*pa;*pa=*pc;*pc=x;}if(*pb>*pc){x=*pb;*pb=*pc;*pc=x;}printf("这3个数由小到大的排列顺序为%d,%d,%d",*pa,*pb,*pc);} ...
.使用简单if语句编程,从键盘键入三个整数,然后按照从小到大的顺序...
include <stdio.h> int main()[int x,y,z,temp;printf("输入三个整数\\n");scangf("%d%d%d',&x,&y,&z);if (x>y){ temp=x; x=y; y=temp;} if (x>z){ temp=x; x=z; z=temp;} if (y>z){ temp=y; y=z; z=temp;} printf("%d %d %d\\n",x,y,z);r...
C语言求输入3个整数,按由小到大的顺序输出
include "stdio.h"void main(){ int a,b,c,*x,*y,*z,*t;scanf("%d,%d,%d",&a,&b,&c);x=&a;y=&b;z=&c;if(*x>*y){ t=x;x=y;y=t;} if(*x>*z){ t=x;x=z;z=t;} if(*y>*z){ t=y;y=z;z=t;} printf("%d %d %d",*x,*y,*z);} ...
用指针方法编写一个程序,输入3个整数,将它们按由小到大的顺序输出
include "stdio.h"void main(){ int a,b,c;int *pa,*pb,*pc;int max;pa=&a;pb=&b;pc=&c;\/*将三个数的地址赋给三个指针*\/ printf ("input 3 numbers:");scanf ("%d%d%d",pa,pb,pc);\/*输入*\/ if(*pa>*pb)max=*pa;else max=*pb;if(*pc>max)max=*pc;\/*输出*\/ pri...
从键盘输入3个整数,按从小到大的顺序输出。 要有文字说明 用指针的方式...
include <stdio.h> void pChar(int *a,int *b,int *c){ int t;if(*a>*b){t=*a;*a=*b;*b=t;} if(*a>*c){t=*a;*a=*c;*c=t;} if(*b>*c){t=*b;*b=*c;*c=t;} } int main(){ int a,b,c;scanf("%d%d%d",&a,&b,&c);pChar(&a,&b,&c);printf("...
C语言编程实现:利用指针,输入3个整数,按由小到大的顺序输出。
int*p1,*p2,*p3;inttemp;cout<<"输入3个整数:"<<endl;cin>>a>>b>>c;p1=&a;p2=&b;p3=&c;if(*p1>*p2){ temp=*p1;p1=*p2;p2=temp;} if(*p1>*p3){ temp=*p1;p1=*p3;p3=temp;} if(*p2>*p3){ temp=*p2;p2=*p3;p3=temp;} cout<<'\\n'<<"按由小到大顺序输出:...
c语言:输入3个整数,按由小到大的顺序输出(要求用指针)
比较大小时,for要嵌套,你才循环一次。即3和5比较,3小,无变化,然后5和1比较,1小,1到了5前面,但1没和3比较过,1就在3的后面,这时外面就要再嵌套一层for
输入x、y、z三个整数,按从小到大的顺序排列后输出,求算法。
1。三个整数求平均数 设为e。2。使用x,y,z 分别与e进行比较。2.1 如果有两个数大于e,则另外一个为最小数.两个大于e的数再进行比 对,这样就列出从小到大的顺序.2.2 如果两个数小于e,则剩下的一个数为最大数,再比对剩下两个数,得出从小到大的顺序.2.3 如果有一个数字等于平均数,...