----------20150812----------------
1.定义一个数组a[100][100]后,最好在一个函数中不要定义int a,此时会发生地址冲突,编译器会认为a和数组的地址有关系,寻址会发生错误。
2.对于多个整数输入,比如scanf("%d",&a[i]);输入一个数字后,按一个空格,才算一个数,如果不按空格,比如输入111,其实是输入了一个数字,空格是程序响应的标志。
----------20150814----------------
1. 输入一个大的数字,用字符数组保存,0结束输入,怎么实现呢?
while (scanf ("%s",input)!=EOF && input[0]!='0')
2. 注意,在表达式运算中,float类型运算不自动转化成double类型,这以之前定义不同,这样做是为了节省存储空间和计算时间。
3. 算法太重要了,比如problem 2039,好的算法两行代码就解决了问题。
4.如果输入两个数都是0就中止,怎么写输入呢?
问题转化:A等于0并且B也等于0,就中止输入
可以写成逻辑表达式:A == 0 && B == 0
那么什么时候一直进行输入呢?
那就是(A == 0)&&(B == 0)的非
从而得出 (A != 0) || (B != 0)
程序语句如下:
while(scanf("%d %d",&A,&B),(A != 0)|| (B != 0))
{
语句;
}
方法二:
while(scanf("%d %d",&A,&B))
{
if(!(A + B))
return 0;//如果都是0就退出循环
语句;
1.定义一个数组a[100][100]后,最好在一个函数中不要定义int a,此时会发生地址冲突,编译器会认为a和数组的地址有关系,寻址会发生错误。
2.对于多个整数输入,比如scanf("%d",&a[i]);输入一个数字后,按一个空格,才算一个数,如果不按空格,比如输入111,其实是输入了一个数字,空格是程序响应的标志。
----------20150814----------------
1. 输入一个大的数字,用字符数组保存,0结束输入,怎么实现呢?
while (scanf ("%s",input)!=EOF && input[0]!='0')
2. 注意,在表达式运算中,float类型运算不自动转化成double类型,这以之前定义不同,这样做是为了节省存储空间和计算时间。
3. 算法太重要了,比如problem 2039,好的算法两行代码就解决了问题。
4.如果输入两个数都是0就中止,怎么写输入呢?
问题转化:A等于0并且B也等于0,就中止输入
可以写成逻辑表达式:A == 0 && B == 0
那么什么时候一直进行输入呢?
那就是(A == 0)&&(B == 0)的非
从而得出 (A != 0) || (B != 0)
程序语句如下:
while(scanf("%d %d",&A,&B),(A != 0)|| (B != 0))
{
语句;
}
方法二:
while(scanf("%d %d",&A,&B))
{
if(!(A + B))
return 0;//如果都是0就退出循环
语句;
}
5.gets()用来输入一个字符串,需要#include<string.h>头文件,另外需要提前定义一个数组a[LEN],来接收这个字符串。比如我们定义a[100];然后用get(a)来接收终端输入的字符串,用一个for循环就可以对字符串中的每个字符进行判断和操作。
eg1:
gets(a);
for(j=0;j<strlen(a);j++)
{
if(a[j]>='A'&&a[j]<='Z')
{
map[a[j]]++;
if(max<map[a[j]])
{
max=map[a[j]];/*统计出字母个数最大数*/
}
}
}
eg2:
char cipher[500];
while (gets(cipher))
{
if (strcmp("START",cipher) == 0)
{
;
}
else if (strcmp("END",cipher) == 0)
{
;
}
else if (strcmp("ENDOFINPUT",cipher) == 0)
{
return 0;
}
else
{
//语句;
}
}