問題壹:關鍵在輸入字符和字符串要避開回車及空格分隔符。這裏可以用getchar解決。
問題二:就是讓妳函數調用。
問題三:依然是函數調用,但需要函數1返回值或傳遞地址。至於數字字符轉整型,大小寫轉換,都利用ascii碼的差值來轉換。
下面是我的代碼,三個函數分別對應三個問題。
#include<stdio.h>
#define MLEN 20//字符串最大長度
char fun1();
void fun2();
void fun3();
int main(void)
{
fun1();
fun2();
fun3();
return 0;
}
char fun1()
{
int nI;
float nF;
char c;
char str[MLEN];
printf("請分別輸入1個整數,1個浮點數,1個字符及1個字符串(小於%d)\n",MLEN);
scanf("%d",&nI);
scanf("%f",&nF);
getchar();
scanf("%c",&c);
getchar();
scanf("%s",str);
printf("輸入的4項內容分別是:%d,%.2f,%c,%s\n\n",nI,nF,c,str);
return c;
}
void fun2()
{
int i=2;
printf("循環執行兩次fun1:\n");
while(i--)
fun1();
}
void fun3()
{
int i=2;
char c;
printf("循環執行兩次fun1,每次將輸入的字符(數字字符轉整形,字母大小寫轉換):\n");
while(i--)
{
c=fun1();
if(c>='0' && c<='9') printf("輸入的是數字字符%c,轉成整形輸出:%d\n\n",c,c-'0');
if(c>='a' && c<='z') printf("輸入的是小寫字母%c,轉成大寫輸出:%c\n\n",c,c-32);
if(c>='A' && c<='Z') printf("輸入的是大寫字母%c,轉成小寫輸出:%c\n\n",c,c+32);
}
}