C语言高手 HELP

来源:百度知道 编辑:UC知道 时间:2024/05/28 12:21:11
#include <stdio.h>
#include <stdlib.h>
#define M 81
int main(void)
{

char str[M];
int i,j;
printf("please input what is numbers or letters.end with End of file \n");
for(i=0;;i++)
{
scanf("%s", str[i]);
while(scanf("%s", str) ==EOF)
{
break;
}
j=i;
}
for(i=0;i<=j;i++)
{
printf("%s",str[i]);
}
system("PAUSE");
return 0;

}

为什么没有输出???

PS 这个题怎么做?
读入一些字符串,将其中的小写字母转成大写字母(其他字符不变)。

输入
输入为多行,每行为一个字符串,字符串只由字母和数字组成,长度不超过80。输入以“End of file”结束。

输出
对于每行输入,输出转换后的字符串。

输入示例
Hello
ICPC2004
12345abcde

输出示例
HELLO
ICPC2004
12345ABCDE

提示
用“scanf("%s", str) == 1”这个条件可以判断输入是否结束。如果此条件为假,则输入结束(对于本题)。

输出时类型错了,应该用"%c",因为是输出一个字符。

你的那个题
#include <stdio.h>
#include <string.h>

int main( )
{
char data[ 100 ];
int i;
while ( scanf("%s", data) != EOF )
{
for ( i = 0; i < strlen( data ); i++ )
if ( data[ i ] >= 'a' && data[ i ] <= 'z' )
printf("%c", char( data[ i ] - 'a' + 'A' ));
else
printf("%c", data[ i ]);
printf("\n");
}
return 0;
}

第一个循环没有退出循环的条件。

scanf("%s", str[i]);
这里应该用%c,接收字符~~程序写得很乱

PS 这个题怎么做?
读入一些字符串,将其中的小写字母转成大写字母(其他字符不变)。
答:遍历该字符串,
if(('a' <= array[i]) && (array[i] <= 'z'))
{array[i]-=('a'-'A');}

其实可以只用一个字符串来存储全部输入,'\n'是换行,不会被转换,所以输出的时候也是换行输出

#include <stdio.h>
#include <stdlib.h>
#include <stri