正文
c语言other()函数 c语言其他函数
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
c语言 对任意输入的字符串,统计其中的大写字母和小写字母的个数
#includestdio.h
#includestring.h
voidmain()
{
charsen[100];
unsignedinti;
intspace,A,a,num,other;
space=A=a=num=other=0;
printf("输入字符串:\n");
gets(sen);
for(i=0;istrlen(sen);i++)
{
if(sen[i]'A'sen[i]'Z')
A++;
elseif(sen[i]'a'sen[i]'z')
a++;
elseif(sen[i]='0'sen[i]='9')
num++;
elseif(sen[i]=='')
space++;
else
other++;
}
printf("该字符串共有%d个字符\n\n\t大写字母%d个\n\t小写字母%d个\n\t数字%d个\n\t空格%d个\n\t其他字符%d个\n\n",strlen(sen),A,a,num,space,other);
}
扩展资料
C语言统计一个文件字符数
1、getchar函数。getchar函数默认的输入来源是标准输入c语言other()函数,即stdin,通常是键盘。但是根据题目的要求,输入就不能是键盘c语言other()函数了,而是一个文件。
2、判断文件结尾。不同的操作系统,对待文件的结尾标志是不一样的。unix系统的文件结束标志是ctrl+d,win是ctrl+z。为c语言other()函数了屏蔽不同系统的差异,统一用EOF来表示。
3、重定向技术。对于getchar和printf函数,stdin和stdout默认是键盘和显示器,为c语言other()函数了从文件输入和输出到文件,需使用重定向技术“”和“”,使得stdin和stdout重定向到文件。
如何在c语言中定义函数在.h文件,和在新文件中使用
额c语言other()函数,书上都有吧。
一般来说c语言other()函数,头文件(.h)都包含了一些常用的而且已经通过了测试证明其运行正确的函数,
在自己的程序中用#include引用这些头文件,直接使用其中一些已经写好的函数,就省去
了很多麻烦,提高了代码的重用性。例如我们常常在程序中写下 #include stdio.h 语
句,以使用头文件 stdio.h 中的函数,比如说printf函数。可是该如何写自己的头文件,
以让自己的函数能被再次使用呢c语言other()函数?
也许有同学会想,真接把自己的函数声明与定义移到.h文件里就可以了。就如下面的做法c语言other()函数:
在工程里建好main.c后,再建一个点utils.h文件,把常用的函数如mean()放这里。
// file name : utils.h
// version : 1
doublemean(double, double); //求两个数的均值
doublemean(double a, double b)
{
return (a+b)/2.0;
}
// file name : main.c
// version : 1
#includestdio.h
#include"utils.h"
intmain()
{
double a,b,avg;
a = 1.0;
b = 3.0;
avg = mean(a,b); //调用utils.h里的mean函数
printf("%lf\n", avg);
return0;
}
以上的代码是可以编译通过的,并运行正确的。但是,这样的代码并不完善。如果
再写一个头文件other.h,而other.h又引用了utils.h的mean()函数,这时就会出
问题:
// file name : utils.h
// version : 1
doublemean(double, double); //求两个数的均值
doublemean(double a, double b)
{
return (a+b)/2.0;
}
// file name : other.h
// version : 1
#include"utils.h" //引用 utils.h
doublemean4(double, double, double, double);
doublemean4(double a, double b, double c, double d)
{
returnmean(mean(a,b), mean(c,d)); // 调用了 utils.h 里的 mean 函数
}
// file name : main.c
// version : 2
// 增加了对other.h的引用
#includestdio.h
#include"utils.h"
#include"other.h"
intmain()
{
double a,b,c,d,avg;
a = 1.0;
b = 3.0;
c = 4.0;
d = 2.0;
avg = mean(a,b); //调用utils.h里的mean函数
printf("%lf\n", avg);
avg = mean4(a,b,c,d); //调用other.h里的mean4函数
printf("%lf\n", avg);
return0;
}
而此时,编译就不能通过了,并出现如下的错误信息:
utils.h:9: Error: 'mean'is already defined
究其原因就是,函数的声明可以在程序中写多次,但函数定义只能有一个。main.c引用了
utils.h文件,因此main.c里会有一个mean()函数的声明,而other.h里也引用了utils.h
文件,所以又有一个mean()函数的声明。
main.c -- utils.h 第一个mean()
-- other.h -- utils.h 第二个mean()
历史原因,C/C++编译器不能将这样相同的重复声明区别开,所以必须通过其它的方法使得工程
里,mean()只被声明一次。一般来说,都是通过#ifndef/#define/#endif宏命令组合来实现避免
重复声明的。修改后的代码如下:
//file name : utils.h
//version 2
#ifndef UTILS_H_INCLUDED // 如果没有定义标识符
// UTILS_H_INCLUDED,则
// 继续编译下面的代码,
// 直到 #endif
#define UTILS_H_INCLUDED // 定义标识符 UTILS_H_INCLUDED
doublemean(double, double);
doublemean(double a, double b)
{
return (a+b)/2.0;
}
#endif// UTILS_H_INCLUDED
其它代码都同前。#ifndef/#endif 就像 if(!(...)) {} 一样,让编译器明白,如果没有定义标
识符UTILS_H_INCLUDED,就包含下面的代码,直到#endifc语言other()函数;否则,到#endif为止的代码就不被包
含到文件里。#define表示定义一个标识符(不一定要赋值给这个标识符)。
当main.c引用utils.h时,由于UTILS_H_INCLUDED没被定义,所以#ifndef与#endif之间的代码都
会被main.c包含,所以 #define 语句会被执行,定义一个UTILS_H_INCLUDED标识符,同时工程里
也有了一个mean()函数的定义;当main.c引用other.h时,other.h里对utils.h的引用并不会再次
定义mean(),因为UTILS_H_INCLUDED已经被定义了,通过#ifndef/#endif的控制作用,虽然other.h
引用了utils.h,但引用的头文件并没有包含mean()的声明,自然就不会再引起重复定义的错误,
编译就能通过了。
基于相同的道理,所有的.h文件,都应该加入#ifndef/#define/#endif的组合,以使头文件都能
重复利用而不引起重复定义的错误。例子中的other.h文件也应如此,这里就留给同学自己添加了。
参考网址:
如何用c语言实现CString的构造函数,析构函数和赋值函数
类是编程人员表达自定义数据类型c语言other()函数的C++机制。它和C语言中的结构类似c语言other()函数,C++类
支持数据抽象和面向对象的程序设计c语言other()函数,从某种意义上说,也就是数据类型的设
计和实现。
那么
String
类的原型如下
class
String
{
public:
String(const
char
*str=NULL);
//构造函数
String(const
String
other);
//拷贝构造函数
~String(void);
//析构函数
String
operator=(const
String
other);
//等号操作符重载,赋值函数
ShowString();
private:
char
*m_data;
//字符指针
};
String::~String()
{
delete
[]
m_data;
//析构函数,释放地址空间
}
String::String(const
char
*str)
{
if
(str==NULL)//当初始化串不存在的时候,为m_data申请一个空间存放'/0';
{
m_data=new
char[1];
*m_data='/0';
}
else//当初始化串存在的时候,为m_data申请同样大小的空间存放该串;
{
int
length=strlen(str);
m_data=new
char[length+1];
strcpy(m_data,str);
}
}
String::String(const
String
other)//拷贝构造函数,功能与构造函数类似。
{
int
length=strlen(other.m_data);
m_data=new
[length+1];
strcpy(m_data,other.m_data);
}
String
String::operator
=(const
String
other)
//赋值函数
{
if
(this==other)//当地址相同时,直接返回;
return
*this;
delete
[]
m_data;//当地址不相同时,删除原来申请的空间,重新开始构造;
int
length=sizeof(other.m_data);
m_data=new
[length+1];
strcpy(m_data,other.m_data);
return
*this;
}
String::ShowString()//由于m_data是私有成员,对象只能通过public成员函数来访问;
{
coutthis-m_dataendl;
}
测试一下:
main()
{
String
AD;
char
*
p="ABCDE";
String
B(p);
AD.ShowString();
AD=B;
AD.ShowString();
}
在C语言中如何使一个函数使用另一个函数中的变量而与其它的函数无关?
这个fp是局部变量,没有办法和其c语言other()函数他函数共享,可以使用c语言other()函数的解决方法为c语言other()函数:
1、声明为全局变量,不过c语言other()函数的确不好
2、作为参数传递,这样要增加一个形参
c语言中,输入一串字符,然后分别存放输出数字,字母,其他,怎么用函数表示啊
/*输入一串字符c语言other()函数,然后分别存放输出数字c语言other()函数,字母c语言other()函数,其c语言other()函数他*/
#includestdio.h
#define N 80
int main(void)
{
void myString(char *str,char *ch,char *num,char *other);
char str[N],ch[N],num[N],other[N];
printf("输入一个字符串: ");
gets(str);
myString(str,ch,num,other);
printf("字母: %s\n数字: %s\n其它: %s\n",ch,num,other);
return 0;
}
void myString(char *str,char *ch,char *num,char *other)
{
int i,j,k,m;
for(i=j=k=m=0;str[i]!='\0';i++)
if((str[i]|32)='a'(str[i]|32)='z')
ch[j++]=str[i];
else if(str[i]='0'str[i]='9')
num[k++]=str[i];
else
other[m++]=str[i];
ch[j]=num[k]=other[m]='\0';
return;
}
关于c语言other()函数和c语言其他函数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。