當前位置:首頁 » 編程語言 » 輸出多個結果c語言
擴展閱讀
如何刪除群組 2023-01-29 04:41:20
特斯拉modely清理緩存 2023-01-29 04:36:02

輸出多個結果c語言

發布時間: 2022-11-27 01:13:53

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不要取地址就行了。
希望能對你有幫助。