求大神C语言编程,题目要求在下面
2. 请设计一个程序,从键盘上依次输入4个数据(一个整数、一个浮点数,一个字符,一个字符串),然后一次把他们打印出来。然后把送入数据和打印的操作再次执行一遍,用循环实现。
3. 修改以上第二步的程序,把其中的字符单独做一个转换:如果是数字字符,把它转换成整数后以整数输出(’9’ 变成数字9);如果是小写字符,把它转换成大写的相同字符(’a’ 变成数字’A’);如果是大写字符,请把它转换成小写的相同字符(’A’ 变成数字’a’)。 展开
问题一:关键在输入字符和字符串要避开回车及空格分隔符。这里可以用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);
}
}