问题一:关键在输入字符和字符串要避开回车及空格分隔符。这里可以用getchar解决。
问题二:就是让你函数调用。
问题三:依然是函数调用,但需要函数1返回值或传递地址。至于数字字符转整型,大小写转换,都利用ascii码的差值来转换。
下面是我的代码,三个函数分别对应三个问题。
#include
#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);
}
}