C程序设计语言笔记1

来源:互联网 发布:网络大v都有谁 编辑:程序博客网 时间:2024/04/30 09:58

1 统计各个数字,空白符及其他字符出现的次数
#include <stdio.h>int main(void){ int c, i ,nwhite,nother; int ndigits[10];  nwhite = nother =0;  for(i=0;i<10;++i)   ndigits[i]=0;     while((c=getchar())!=EOF)   if(c>='0'&&c<='9')     ++ndigits[c-'0']; else if(c == ' '|| c=='\n'||c=='\t')  ++nwhite;  else  ++nother; printf("digits =");for(i=0;i<10;i++) printf("%d",ndigits[i]);printf(",white space= %d,other =%d\n",nwhite,nother); }

注意:

 if(c>='0'&&c<='9')
     ++ndigits[c-'0'];

如果是数字就将其对应下标的值加1,这样就可以统计相应数字出现的次数.由定义可知,char类型的字符是小整型,因此 char 类型的变量和常量在算术表达式中等价于int类型的变量和常量.c-'0'是一个整型的表达式,如果存储在c中的字符是'0'--'9',其值为0--9,因此可以充当数组ndigits的合法下标.

输入 :

1111222233554678
asdfghjk  vcjvjbbnmbm
hghgh~~22

输出:
digits =0462121110,white space= 5,other =26

2 该程序读入一组文本行,并把最长的文本行打印出来.

while(还有未处理的行)

 if(该行比已处理的最长行还要长)

      保存该行

     保存该行的长度

打印最长的行

 

#include <stdio.h>#define MAXLINE 1000 //允许的输入行的最大长度int getline1(char line[],int maxline);void copy(char to[],char from[]);int main(void){ int len; //当前行的长度 int max; //目前为止发现的最长行的长度 char line[MAXLINE];//当前的输入行 char longest[MAXLINE];//用于保存最长的行 max=0; while((len=getline1(line,MAXLINE))>0) if(len>max) {          max=len;  copy(longest,line);    }if(max>0)printf("%s",longest);return 0;}//将一行读入到s中并返回其长度int getline1(char s[],int lim){ int c,i; for(i=0;i<lim-1 &&(c=getchar())!=EOF && c!='\n';++i) s[i]=c; if(c=='\n') {     s[i]=c; ++i;  } s[i]='\0'; return i;}//将from 复制到to void copy(char to[],char from[]){ int i; i=0; while((to[i] = from[i])!='\0') ++i;}