㈠ c语言,多个条件多个结果
如果不同的条件返回的结果是有规律的,那么可以按照规律编写语句。
比如转为小写,可以a+=32;
如果每个大写都有对应一个小写,那么可以写一个数组,对应各个值。
比如
char s[] = {'m', 'n', 'q', 'b', 'r' ....}
写满26个,对应为A->m B->n, C->q...
然后 a=s[a-'A'];
这样就可以了。
最麻烦的方法,是用26个ifelse或者用switch 加上26个case。
㈡ C语言中的如何在主函数输出定义函数的结果(多个结果)
#include <stdio.h>
int Allfactors(int n)
{
int i;
for(i=1;i<=n;i++)
{
if(n%i==0)
printf("%d\t",i);
}
printf("\n");
return i;
}//这里定义了一个求某整数所有约数的函数 应该没错 单独运行可以输出//
void main()
{
int a;
printf("Please input an int:\n");
scanf("%d",&a);
printf("Your int is:\n");
int n;
n=Allfactors(a);//从这里开始不会了 我想调用这个输出约数的函数 应该怎么写啊 这么写不对 //
printf("the factors of your number are:%d\n",n);
}
试试这个?
㈢ C语言中如何实现多组数据输入输出
C语言中实现多组数据输入输出主要有两种方式:
1.首先输入一个n,表示将有n个输入输出,例如:
#include<stdio.h>
intmain()
{
intn,a;
scanf("%d",&n);
while(n--){
scanf("%d",&a);
printf("输出:%d ",a);
}
return0;
}
/*
运行结果:
3
255
输出:255
156
输出:156
125
输出:125
*/
2.使用while(scanf("%d",&n)!=EOF){}语句,直达输入ctrl+z,结束输入,例如:
#include<stdio.h>
intmain()
{
inta;
while(scanf("%d",&a)!=EOF){
printf("输出:%d ",a);
}
return0;
}
/*
运行结果:
54
输出:54
5156
输出:5156
21
输出:21
^Z
*/
㈣ c语言中,一次连续输入多组数据,并且最后连续输出多组结果,应该用哪种方法
用二维数组就可以实现一次连续输入多组数据。思路是嵌套循环,外层循环控制二维数组的行数(也就是第几组数据),内层循环控制这组数据中数据个数。
采用二维数组方法的有点在于,这种随机存取的数据结构方便查找和检索,但一定要注意这种方法不便于向已有数据中插入和删除数据。
㈤ C语言中如何实现多组数据输入输出
c语言中有一个标准输入函数,即:scanf函数,它可以读取输入的任意格式类型的数据。scanf函数也有返回值,返回类型为int类型,它返回成功读入的项目的个数。如果它没有读取任何项目(当它期望一个数字而您却键入了一个非数字字符串时就会发生这种情况,scanf()会返回0。当它检测到“文件结尾”(end
of
file)时,它返回EOF(EOF是在文件stdio.h中定义的特殊值,一般#define指令把EOF的值定义为-1,我们可以理解为:#define
EOF
-1)。
c语言中,所有的输入函数都共用同一个输入缓冲区,我们从键盘键入数据时,其实是将输入写入缓冲区中,当我们按下回车键时,scanf()函数从缓冲区中读取输入,刷新缓冲区。
㈥ c语言,如何实现多组数据结果对应输出
可以尝试用while(scanf("%d%d",&a,&b)==2) 只不过在输入下一组数据前不要回车,否则就直接输出了,并且n也失去了意义,如果你实在不嫌烦的话就把a+b的值储存在数组中然后循环输出。
int sum[10];
int i=0,j;
while(n--)
{
scanf("%d%d",&a,&b);
sum[i++]=a+b;
}
for(j=0;j<i-1;j++)
printf("%d ",sum[j]);
printf("%d\n",sum[j]);
㈦ C语言返回多个值的方法
导语:编写有多个返回值的函数是所有C语言教材里均没有提到的知识点,但在实际教学与应用的过程中我们都有可能会遇到这样的问题。以下是引导学生采用的三种不同方法编写多个返回值的C语言函数,一起来学习下吧:
方法1:利用全局变量
分析:全局变量作为C语言的一个知识点,虽然我们都了解它的特点,但在实际教学过程中应用得并不是很多。由于全局变量的作用域是从定义变量开始直到程序结束,而对于编写有多个返回值的C语言函数,我们可以考虑把要返回的多个值定义成全局变量。当函数被调用时,全局变量被更改,我们再把更改后的全局变量值应用于主调函数中。函数被调用后被更改后的全局变量值即为函数的数个返回值。下面以一个实例演示该方法的应用。
实例1:编写函数求3个数中的最大值与最小值。
方法:把最大值、最小值分别定义成2个全局变量max、min,在用户自定义函数中把求出来的最大值与最小值分别赋给全局变量max、min。函数调用完毕后全局变量的max、min值即保存了函数要求返回的值。程序参考代码如下:
#include "stdio.h"
#include "conio.h"
int max,min;/*定义两个全局变量用于保存函数返回值*/
void max_min(int a,int b,int c) /*定义求最大最小值的函数*/
{max=min=a; /*初始化最大最小值*/
if(max if(max if(min>b)min=b;
if(min>c)min=c;
}
main()
{int x,y,z;
printf(" 请输入3个整数: ");
scanf("%d,%d,%d",&x,&y,&z);
max_min(x,y,z) ;/*调用求最大值与最小值的函数*/
printf("三个数中的最大值为:%d;最小值为:%d",max,min);/*输出最大值与最小值*/
getch();
}
调试结果如下:
请输入3个整数:
5,-6,2
三个数中的最大值为:5;最小值为:-6
注意:该方法虽然可以实现有多个返回值的函数,但由于全局变量不能保证值的正确性(因为其作用域是全局,所以程序范围内都可以修改它的值,如果出现错误将非常难以发现),并且全局变量增加了程序间模块的耦合,所以该方法要慎用。
方法2:传递数组指针
分析:在教学过程中,我们知道C语言函数参数的传递方式有值传递与地址传递。当进行值传递时,主调函数把实参的值复制给形参,形参获得从主调函数传递过来的值运行函数。在值传递过程中被调函数参数值的更改不能导致实参值的更改。而如果是地址传递,由于传递过程中从实参传递过来的是地址,所以被调函数中形参值的更改会直接导致实参值的更改。因此,我们可以考虑把多个返回值作为数组元素定义成一个数组的形式,并使该数组的地址作为函数的形式参数,以传址方式传递数组参数。函数被调用后,形参数组元素改变导致实参改变,我们再从改变后的实参数组元素中获得函数的多个返回值。以下实例演示该方法的应用。
实例2:编写函数求一维整形数组的最大值与最小值,并把最大值与最小值返回给主调函数。
方法:以指针方式传递该一维数组的地址,然后把数组的最大值与数组的'第一个元素交换,把数组的最小值与最后一个元素交换。函数被调用完毕后,实参数组中的第一元素为数组的最大值,实参数组中最后一个元素为数组的最小值,从而实现返回数组的最大值与最小值的功能。程序参考代码如下:
#include "stdio.h"
#include "conio.h"
void max_min(int *ptr,int n) /*定义求数组最大值最小值的函数,传递数组指针*/
{int i,j,k;/*j保存最大值所在位置,k保存最小值所在位置*/
int *temp;/*用于交换位置*/
*temp=*ptr;
for(i=0;i{
if(*ptr<*(ptr+i))/*最大值与第一个元素进行交换*/
{
k=i;
*temp=*ptr;
*ptr=*(ptr+k);
*(ptr+k)=*temp ;
}
if(*(ptr+n-1)>*(ptr+i))/*最小值与最后一个元素进行交换*/
{
j=i;
*temp =*(ptr+n-1);
*(ptr+n-1)=*(ptr+j);
*(ptr+j)= *temp ;}
}
}
/*调用最大最小值函数*/
main()
{
int A[6],i;
for(i=0;i<6;i++)
scanf("%d",&A[i]);
max_min(A,6);
printf("max=%d, min=%d ",A[0],A[5]);
getch();
}
调试结果如下:
请输入6个整形数,以空格隔开:
5 8 9 32 -6 4
max=32,min=-6
注意:该方法适用于多个返回值的数据类型一致的情况。当返回值数据类型不一致时,不适用该方法。
方法3:传递结构体指针
分析:结构体作为教学中的一个难点,教材对它介绍的内容并不多,应用的实例更是少之又少,所以学生对于结构体普遍掌握情况不理想。其实,编写返回多个值的C语言函数,也可以考虑采用结构体的方式去实现。通过方法2,我们知道如果返回的数个数值的数据类型不一致,可以通过定义全局变量实现有多个返回值的C语言函数,也可以考虑把要求返回的数个值定义成一个结构体,然后同样以传递结构体指针方式把结构体的指针传递给形参结构体指针,那么函数中对形参结构体的修改即是对实参结构体的修改,函数被调用后获取的实参结构体成员即为函数的多个返回值,下面以实例演示该方法的应用。
实例3:编写一个用户自定义函数,允许用户录入学生的基本信息(包括学号、姓名、所属班级、总评成绩),并返回这些基本信息给主调函数。
方法:把学生基本信息定义成一个结构体,在用户自定义函数中传递该结构体的指针,则自定义函数中对结构体成员的录入操作即是对实参结构体成员的录入操作,从而实现多个返回值。参考代码如下:
#include "stdio.h"
#include "conio.h"
struct inf{/*定义学生结构体,分别包含成员学号、姓名、班别、总评成绩*/
char xh[12];
char name[20];
char class[15];
int chj;
};
main(void)
{
struct inf a1; /*定义学生结构体类型变量*/
void xxxx(struct inf *ptr);
printf("请输入学号,姓名,班别,总评成绩,以空格隔开: ") ;
xxxx(&a1);/*调用函数,以学生结构体类型变量地址作为实参*/
printf("学号:%s,姓名: %s,班别:%s,总评成绩:%d",a1.xh, a1.name,a1.class,a1.chj);
getch();
}
void xxxx(struct inf *ptr)/*该函数实现对结构体成员数据的录入操作*/
{
char xh1[12],name1[20],class1[15];
int chj1;
scanf("%s%s%s%d",xh1,name1,class1,&chj1);
strcpy(ptr->xh,xh1);
strcpy(ptr->name,name1);
strcpy(ptr->class,class1);
ptr->chj=chj1;
}
调试结果如下:
请输入学号,姓名,班别,总评成绩,以空格隔开:
200102LiLi200185
学号:200102,姓名: LiLi,班别:2001,总评成绩:85
注意:当函数要求返回的多个值是相互联系的或者返回的多个值数据类型不一致时可以采用该方法。
总结
对于以上这三种方法,如果想要返回的数个值数据类型一致,可以考虑采用方法2;而对于不同数据类型的返回值,如果各个数值之间是相互联系的,则方法3较为合适;方法1虽然在很多情况下都可以实现多个返回值的C语言函数,但毕竟全局变量应用过程中有很多危险,要慎重使用。
㈧ C语言的多个结果为什么不能输出在同一排
看图,你这个地方有个 ,这是C语言的回车换行命令,所以你每打印一行都会换行
我想你应该想打印成这样子:
原始数组为:12345
调整后数组为:54321
按照你那种写法是不行的
printf("原始数组为:"),这句话应该写在for循环外面,然后for循环里面再遍历数组
printf("%d", a[i]),这里要判断一下,当打印到最后一个值时,要加上
换行,不然你想打印的两行数据都跑到同一行了,可能会变成下面的样子
原始数组为:12345调整后数组为:54321
望采纳!
㈨ C语言中带参数宏定义能否输出多个结果
不可以。。你可以用数组输出多个结果。。
㈩ C语言中如何实现多组数据输入输出
你先要设置数组的大小,这个你必须要定义的。你要不确定你要多少你最好把你的数值设置大些。至于你要输多个你可以用循环语句如:for(i=1;i<=n;i++)
scanf("%d",&a[n]);
输出还是一样之是把scanf改成printf不要取地址就行了。
希望能对你有帮助。