C程序设计语言笔记1


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;
}


 

 

 

你可能感兴趣的:(C程序设计语言笔记1)