估计高手眼中 都是些很小儿科的题,我只是记录下修改的过程 不好意思刷屏了 哈哈
不过像1.2.3也挺有意思,数据类型的范围啊 补加上不接受的ASCII码啊,乐此不疲的改了半天 哈哈
1.1.4
printf的现实格式,他要求是浮点,答案给的是"%g",
后来查了下: g : a shorter representation (f or e),会自动选择"%f"和"%e" 更符合题意吧。
1.2.2:
- #include <stdio.h>
-
void main()
-
{
-
char input[1000];
-
char ch;
-
while(1)/*如果判断加上(ch=getchar(input))!=EOF,puts就少一个字,看来不存在一个input里*/
-
{
-
gets(input);
-
printf("\+");/*不应用puts,会自动换行*/
-
puts(input);
-
printf("\n");
-
-
}
-
-
-
}
编这个也犯了好几个错误……
一是:"\+""\n"开始写成puts(‘\+’); '\+'单引号了。
二是:插入加号时候不能用puts,不然自动另起一行
三是:如果写成while((ch=getchar(input))!=EOF),那输出时候就少第一个字,看来getchar()和gets()并不把数据存 在一个地方。
1.2.3
- #include <stdio.h>
-
void main()
-
{
-
-
char ch;
-
signed char checksum;//要是在while里初始化 循环外不能用
-
checksum =(-1);
-
-
while((ch=getchar())!=EOF && (ch!='\n')) //应该是()!=,开始把前边的括号给省了
-
{
-
-
putchar(ch);
-
putchar('\n'); //这回事'' 单引号,下边分析下单引号和双引号
-
(int)ch; //强制转换一下,不过貌似下边和checksum相加时 也会转
-
printf("%d+%d=%d \n",ch,checksum,(checksum+ch));
-
checksum = ch + checksum;
-
-
}
-
checksum = '\n' + checksum; //因为前边不接受'\n',所以最后要补加上
-
putchar('\n');
-
printf("%d \n",checksum);
-
-
}
这个又改了好几处:
一是:初始化checksum要是在while里初始化 循环外不能用
二是:(ch=getchar())!=EOF刚开始在!=之前没加括号,之后结合顺序就变了,运行结果是一堆小笑脸…不知道溢出到哪去 了
三是:单双引号的问题,查了一下:
单引号表示将引号内的东西转译为ASCII码;
双引号表示字符串,代表的却是一个指向无名数组起始字符的指针。且该数组被双引号之间的字
符以及一个额外的二进制值为零的字符‘\0’初始化。
有个例子: 假如
int a=10 cout<<"a"; 这是用 双引号 它在屏幕上就是 a; 应该占两字节“a和\0”
int a=10 cout<<‘a’; 将会是65;
四是:checksum的数据类型的范围;
之前没审题写的是int,看了答案才猛招儿想起来signed char的取值范围是-128到127,所以根本 不会加到一千多。
五是:最后结果得92,想了半天就是少了循环外的这句。或者换用do...while语句也行。
checksum = '\n' + checksum; //因为前边不接受'\n',所以最后要补加上
1.2.4
- #include <string.h>
-
#include <stdio.h>
-
void main()
-
{
-
FILE * pFile;
-
char input[1000];
-
char output[1000];
-
int n,m;
-
pFile = fopen ("test.txt" , "r");
-
if (pFile == NULL) perror ("Error opening file");
-
else {
-
while( fgets(input , 1000, pFile)!=NULL ) //不能是!=EOF
-
{
-
n=0;
-
m=strlen(input);
-
if (m>n)
-
{
-
n=m;
-
strcpy(output,input);
-
}
-
-
}
-
-
printf("Max lenth id %d,chars is %s",m,output);
-
fclose (pFile);
-
}
-
-
}
这个程序是全是自己写的,主要是最开始只想在本文件中用gets()函数 没想用文件操作,
结果用于判断结束的getchar()总是吃掉一个字节。所以只好换了个办法,用fgets()在另一个中一行一行的读取解决了。
文件操作还不太熟,在谭浩强的书上看过一点。抓紧看这本《C和指针》 看到那一章时候 再好好分析
阅读(2093) | 评论(0) | 转发(0) |