2编写一个程序,从标准输入读取几行输入。每行输入都要打印到标准输出上,前面要加上行号。在编写这个程序时要试图让程序能够处理的输入行的长度没有限制
题目要求处理输入行长度没限制 我开始是想用char **来处理的 没成 。后面学通了回来试试
#include <stdio.h>
int main(){
char ch;
int linenum=1;
int flag=0;
while((ch=getchar())!=EOF){
if(flag==0){
printf("%d",linenum);
flag=1;
}
putchar(ch);
if(ch=='\n'){
flag=0;
linenum++;
}
}
return 0;
}
3.
/*编写一个程序,从标准输入读取一些字符,并把他们写到标准输出上,它同时应该计算checksum值,并写在字符的后面。checksum(检验和)用一个sunged char 类型的变量进行计算,它初始为-1.当每个字符从标准输入读取时,它的值就被加到checksum中。如果checksum变量产出了溢出,那么这些溢出就会被忽略。当所有的字符均被写入后,程序以十进制整数的形式打印出checksum的值,它有可能是负值。注意在checksum后面要添加一个换行符。在使用ASSII码的计算机中,在包含“Hello world!”这几个词并以换行符结尾的文件上运行这个程序,应该产生以下列输出:
Hello world!
102*/
md 没仔细看示例的输入 我开始输的是"Hello world!" 一直不是102 以为写错了 后来才发现没双引号...题很简单 循环累加就行
#include <stdio.h>
int main(){
signed char ch;
signed char cheeksum=-1;
while((ch=getchar())!='\n'){
putchar(ch);
cheeksum+=ch;
}
cheeksum+=ch;
putchar('\n');
printf("%d\n",cheeksum);
return 0;
}
4.一行行读取输入,直到文件结尾。算出每行输入行的长度,然后把最长的那行打印出来,为了简单起见,假设所有输入行长度不过1000
用各种字符串函数很好做 就是循环+比大小 大的放进去。但按道理这第一章的题应该是不能用string库里的函数的 可能要单纯的用getchar实现? 以后再说吧 插个眼先-.-
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define length 1000
int main()
{
int max = 0;
int now_length = 0;
char input[length];
char output[length];
printf("输入数据Ctrl+Z结束:\n");
while ((gets(input) != NULL)){
now_length = strlen(input);
if (now_length> max){
max = now_length;
strcpy(output, input);
}
}
printf("%d,%s", max, output);
getchar();
return 0;
}
56是改原函数 回头在来.......