当前位置:首页 » 编程语言 » c语言编码函数

c语言编码函数

发布时间: 2022-04-22 14:32:54

c语言编程函数

/*function: 测量字符串长度
*in: 需要测长度的字符串
*out: 字符串长度
*/
int strlen(string str)
{
assert( str != NULL ); // #include <assert.h>
char *ch = NULL;
int iLength = 0;
ch = str;
while ( *ch != '\0')
{
ch = ch + 1;
iLength = iLength + 1;
}
return iLength;
}

Ⅱ c语言函数编写

先写一个输入函数,把输入的名字存到变量name里面,调用函数seek(name);
子函数 string seek(string name)
循环比较name跟类数组中的名字,如果相同则return返回该同学数据,否则显示"no find"
照着写就行了,写了出错再问

Ⅲ c语言编写函数

#include <stdio.h>
#define M 30
#define N 10
typedef struct
{
int score[N];//选手的10个得分,得分与评委一一对应
double aver;//选手的平均分
char name[81];//选手的姓名
} Choice;
int inputChoice(Choice peo[],int m,int n)
{
int i,j;
for(i=0;i<m;i++)
{
scanf("%s",peo[i].name);
for(j=0;j<n;j++)
scanf("%d",&peo[i].score[j]);
}
}
int sort(Choice peo[],int m,int n)
{
int i,j,k,t;
Choice temp;
for(i=0;i<n;i++)
{
peo[i].aver=0.0;
for(k=0;k<n-1;k++)
for(j=k+1;j<n;j++)
if(peo[i].score[k]>peo[i].score[j])
{
t=peo[i].score[k];
peo[i].score[k]=peo[i].score[j];
peo[i].score[j]=t;
}
for(j=1;j<n-1;j++)
peo[i].aver+=peo[i].score[j];
peo[i].aver/=n-2;
}
for(i=0;i<m-1;i++)
for(j=i+1;j<m;j++)
if(peo[i].aver<peo[j].aver)
{temp=peo[i];peo[i]=peo[j];peo[j]=temp;}
}
int main()
{
Choice peoples[M];
int m,n,i;
scanf("%d%d",&m,&n);
inputChoice(peoples,m,n);
sort(peoples,m,n);
for(i=0;i<3;i++)
printf("%s %.2lf ",peoples[i].name,peoples[i].aver);
return 0;
}


Ⅳ C语言函数编写

#include<stdio.h>

void Reverse(int arr[], int size);

int main()
{
int arr[10] = {0};
printf("请输入10个整数:\n");
for (int i=0; i<10; ++i)
{
scanf("%d", &arr[i]);
}

Reverse(arr, 10);

printf("反序:\n");
for (int i=0; i<10; ++i)
{
printf("%d ", arr[i]);
}

return 0;
}

void Reverse(int arr[], int size)
{
if (arr == NULL || size <=0)
return;

for (int beg=0, end=size-1; beg < end; ++beg, --end)
{
int tmp = arr[beg];
arr[beg] = arr[end];
arr[end] = tmp;
}
}

Ⅳ 用C语言编码实现strlen函数

根据题意可得如下代码:

#include<stdio.h>
intstrlen(char*s)
{
inti=0;
while(s[i]!='')i++;
returni;
}
intmain()
{
chars[10]="12345";
printf("%d ",strlen(s));
return0;
}

执行结果:

Ⅵ c语言定义函数是什么

c语言定义函数是一段可以重复使用的代码,用来独立地完成某个功能,它可以接收用户传递的数据,也可以不接收。

接收用户数据的函数在定义时要指明参数,不接收用户数据的不需要指明,根据这一点可以将函数分为有参函数和无参函数。

函数就是一段封装好的,可以重复使用的代码,它使得我们的程序更加模块化,不需要编写大量重复的代码。函数可以提前保存起来,并给它起一个独一无二的名字,只要知道它的名字就能使用这段代码。

C语言特点及运用范围:

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。

C语言特点:简洁的语言、具有结构化的控制语句、丰富的数据类型、丰富的运算符、可对物理地址进行直接操作、代码具有较好的可移植性、可生成高质量、目标代码执行效率高的程序。

C语言是一门面向过程的计算机编程语言,C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。

Ⅶ C语言函数代码

#include <stdio.h>
#include <stdlib.h>
int isPrime(int m)
{
int flag,i;
flag=1;//默认标记为1,是素数
for(i=2;i<m;i++)//从2开始到m
{
if(m%i==0){flag=0;}//对比自身小的数字进行求余。如果能求余就不是素数,标记为0
}
return flag;//返回标记
}
int main()
{
int n,prime;
int count=0;//计数器从0开始
for(n=3;n<200;n=n+2)//奇数有可能会成为素数
{
prime=isPrime(n);//调用isPrime函数
if(prime==1)//如果返回值为1,则说明他是素数
{
count++;//计数,用来换行
printf("%5d",n);
if(count%5==0){printf("\n");}//每5个换行
}
}
system("pause");//暂停
return 0;
}

Ⅷ 用C语言编写一个函数

#include <stdio.h>

void strtolower(char str[])
{
int i;
for (i = 0; str[i] != '\0'; ++i)
{
if (str[i] >= 'A' && str[i] <= 'Z')
str[i] = str[i] + 'a' - 'A';
}
}

int main ()
{
char str[256];
gets(str);
strtolower(str);
putchar('\n');
return 0;
}
以上程序中的strtolower函数即为所求函数

Ⅸ 用C语言编写一个函数,该函数包含至少四个子函数的代码

用c语言编写一个函数请教数学教授,该函数包含了一共20个函数的代码。

Ⅹ C语言库函数如何编写

/***
*printf.c - print formatted
*
* Copyright (c) 1985-1997, Microsoft Corporation. All rights reserved.
*
*Purpose:
* defines printf() - print formatted data
*
*******************************************************************************/

#include
#include
#include
#include
#include
#include
#include

/***
*int printf(format, ...) - print formatted data
*
*Purpose:
* Prints formatted data on stdout using the format string to
* format data and getting as many arguments as called for
* Uses temporary buffering to improve efficiency.
* _output does the real work here
*
*Entry:
* char *format - format string to control data format/number of arguments
* followed by list of arguments, number and type controlled by
* format string
*
*Exit:
* returns number of characters printed
*
*Exceptions:
*
*******************************************************************************/

int __cdecl printf (
const char *format,
...
)
/*
* stdout ''PRINT'', ''F''ormatted
*/
{
va_list arglist;
int buffing;
int retval;

va_start(arglist, format);

_ASSERTE(format != NULL);//断言宏。如果输出格式字符串指针为空,则在DEBUG版下断言,报告错误。

_lock_str2(1, stdout);

buffing = _stbuf(stdout);//stdout:指定输出到屏幕

retval = _output(stdout,format,arglist);

_ftbuf(buffing, stdout);

_unlock_str2(1, stdout);

return(retval);
}
以上为printf()的源代码
1、从含有可选参数函数中获得可选参数,以及操作这些参数
typedef char *va_list;
void va_start( va_list arg_ptr, prev_param );
type va_arg( va_list arg_ptr, type );
void va_end( va_list arg_ptr );
假定函数含有一个必选参数和多个可选参数,必选参数声明为普通数据类型,且能通过参数名来获得该变量的值。可选参数通过宏va_start、va_arg和va_end(定义在stdarg.h或varargs.h中)来进行操作,即通过设置指向第一个可选参数指针、返回当前参数、在返回参数后重新设置指针来操作所有的可选参数。
va_start:为获取可变数目参数的函数的参数提供一种便捷手段。设置arg_ptr为指向传给函数参数列表中的第一个可选参数的指针,且该参数必须是va_list类型。prev_param是在参数列表中第一个可选参数前的必选参数。
va_arg:返回由arg_ptr所指向的参数的值,且自增指向下一个参数的地址。type为当前参数的类型,用来计算该参数的长度,确定下一个参数的起始位置。它可以在函数中应用多次,直到得到函数的所有参数为止,但必须在宏va_start后面调用。
va_end:在获取所有的参数后,设置指针arg_ptr为NULL。
下面举例说明:
#include
#include
int average( int first, ... );
void main( void )
{
/* Call with 3 integers (-1 is used as terminator). */
printf( "Average is: %d\n", average( 2, 3, 4, -1 ) );

/* Call with 4 integers. */
printf( "Average is: %d\n", average( 5, 7, 9, 11, -1 ) );

/* Call with just -1 terminator. */
printf( "Average is: %d\n", average( -1 ) );
}

int average( int first, ... )
{
int count = 0, sum = 0, i = first;
va_list marker;

va_start( marker, first ); /* Initialize variable arguments. */
while( i != -1 )
{
sum += i;
count++;
i = va_arg( marker, int);
}
va_end( marker ); /* Reset variable arguments. */
return( sum ? (sum / count) : 0 );
}
返回值为:
Average is: 3
Average is: 8
Average is: 0
综上所述,在printf()函数中,可以只输出一个字符串,也可按照一定的形式输出含有多个可选参数的字符串信息。因此,首先就要通过这些宏来获取所有的可选参数。在上面的源码可以看出printf()中,只使用了宏at_start,将可选参数的首地址赋给了arglist。
2、锁定字符串及输出字符串到屏幕
#define _lock_str2(i,s) _lock_file2(i,s)
void __cdecl _lock_file2(int, void *);
#define _unlock_str2(i,s) _unlock_file2(i,s)
void __cdecl _unlock_file2(int, void *);
int __cdecl _stbuf(FILE *);
void __cdecl _ftbuf(int, FILE *);
int __cdecl _output(FILE *, const char *, va_list);
在output函数中,读取格式字符串中的每一个字符,然后对其进行处理,处理方式根据每一个字符所代表的意义来进行,如:普通字符直接利用函数WRITE_CHAR(ch, &charsout);输出到控制台。
其中的主要部分是对转换说明符(d,c,s,f)的处理,现在将对其中的部分代码进行详细说明,这里只说明最基本的转换说明符,对这些须基本的转换说明符进行修饰的修饰符,程序中单独进行处理。下面是函数output()(output.c)部分源代码:
case ST_TYPE:
//表示当前处理的字符的类型为转换说明符。
...
switch (ch) {
//下面对参数的获取都是利用宏va_arg( va_list arg_ptr, type );来进行的。
case ''c'': {
//从参数表中获取单个字符,输出到缓冲字符串中,此时,type=int
buffer[0] = (char) get_int_arg(&argptr); /* get char to print */
text = buffer;
textlen = 1; /* print just a single character */
}
break;

case ''s'': {
//从参数表中获取字符串,输出到缓冲字符串中,此时,type=char*
int i;
char *p; /* temps */
text = get_ptr_arg(&argptr);
...
}
break;

case ''w'': {
//对宽字符进行处理
...
} /* case ''w'' */
break;
...
case ''e'':
case ''f'':
case ''g'': {
//对浮点数进行操作
...
#if !LONGDOUBLE_IS_DOUBLE
/* do the conversion */
if (flags & FL_LONGDOUBLE) {
_cldcvt((LONGDOUBLE*)argptr, text, ch, precision, capexp);
va_arg(argptr, LONGDOUBLE);
//对长双精度型进行处理,此时,type=long double
}
else
#endif /* !LONGDOUBLE_IS_DOUBLE */
{

//对双精度型进行处理,此时,type=double
_cfltcvt((DOUBLE*)argptr, text, ch, precision, capexp);
va_arg(argptr, DOUBLE);
}
...
break;
//对整型变量处理
case ''d'':
case ''i'':
...
goto COMMON_INT;

case ''u'':
radix = 10;
goto COMMON_INT;

case ''p'':
...
goto COMMON_INT;

case ''o'':
...

注:对于浮点型double和long double,有相应的转换说明符(%f表示双精度型,%lf表示长双精度型),而float却没有。其中的原因是,在K&RC下,float值用于表达式或用作参数前,会自动转换成double类型。而ANSI C一般不会自动把float转换成double。有些程序已假定其中的float参数会被转换成double,为了保护大量这样的程序,所有printf()函数的float参数还是被自动转换成double型。因此,在K&RC或ANSI C下,都无需用特定的转换说明符来显示float型。
综上所述,转换说明符必须与待打印字符的类型。通常,用户有种选择。例如,如要打印一个int类型的值。则只可以使用%d,%x或%o。所有这些说明符都表示要打印一个int类型的值;它们只不过提供了一个数值的几种不同表示。类似一,可以用%f、%g和%e来表示double类型的值。但如果转换说明与类型不匹配,将会出现意想不到的结果。为什么呢?问题就在于C向函数传递信息的方式。
这个失败的根本细节与具体实现相关。它决定了系统中的参数以何方式传递。函数调用如下:
float n1;
double n2;
long n3;
long n4;
...
printf("%ld,%ld,%ld,%ld",n1,n2,n3,n4);
这个调用告诉计算机,要把变量n1,n2,n3和n4的值交给计算机,它把这些变量放进称作栈(stack)的内存区域中,来完成这一任务。计算机把这些值放进栈中,其根据是变量的类型而不是转换说明符,比如n1,把8个字节放入栈中(float被转换成double),类似地,为n2放了8字节,其后给n3和n4各放了4个字节。接着,控制的对象转移到printf();此函数从栈中读数,不过在这一过程中,它是在转换说明符的指导下,读取数值的。说明符%ld指定printf()应读4个字节(va_arg( va_list arg_ptr, type )中type=long),因此printf()读入栈中的4个字节,作为它的第一个值。但是这只是n1的前半部分,这个值被看成一个long整数。下一个说明符%ld读入4个字节,这正是n1的后半部分,这个值被看成第二个long整数。类似地,第三、第四次又读入n2的前后两部分。因此,尽管我们对n3和n4使用了正确的说明符,printf()仍然会产生错误。

热点内容
安卓系统下载铃声在哪个文件夹 发布:2025-07-18 12:52:11 浏览:271
qt程序一样但是无法编译 发布:2025-07-18 12:32:45 浏览:36
服务器搭建主机配置 发布:2025-07-18 12:12:43 浏览:126
ftp命令批量下载文件 发布:2025-07-18 11:58:45 浏览:744
nba2k17文件夹 发布:2025-07-18 11:48:53 浏览:871
朔源码是什么 发布:2025-07-18 11:44:33 浏览:775
迷你世界解压剧场 发布:2025-07-18 11:43:48 浏览:155
linux安装opencv 发布:2025-07-18 11:42:10 浏览:447
编程游戏的软件有哪些 发布:2025-07-18 11:41:34 浏览:957
c程序设计语言电子书 发布:2025-07-18 11:35:58 浏览:643