当前位置:首页 » 编程语言 » c语言数组与函数单选题必背知识
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言数组与函数单选题必背知识

发布时间: 2022-11-16 19:30:43

c语言笔试那些知识点是必背的!

你是说等级考试么 单说c语言 所有语法必须了然的 不过考试也不考你语法规则 而且通过程序考你对语法的了然程度 编程是工科 不能像历史一样背 想学好编程找我要个指点文件看看吧 名字上有扣扣

❷ 推荐一些有关C语言数组的练习题。

06年南开上机题

1: 第1题 m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。
答案:int fun(int score[],int m,int below[])
{
int i,k=0,aver=0;
for(i=0;i<m;i++)
aver+=score[i];
aver/=m;
for(i=0;i<m;i++)
if(score[i]<aver)
{
below[k]=score[i];
k++;
}
return k;
}
2: 第2题 请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。
答案:void fun(int *a, int *n)
{
int i,j=0;
for(i=2;i<1000;i++)
if ((i%7==0 || i%11==0) && i%77!=0)
a[j++]=i;
*n=j;
}

3: 第3题 请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
答案:void fun(int x, int pp[ ], int *n)
{
int i=1,j=0;k=0,*t=pp;
for(i=0;i<=x;i++)
if(i%2!=0)
{
t[j]=I;
j++;
}
for(i=0;i<j;i++)
if(x%t[i]==0)
{
pp[k]=t[i];
k++;
}
*n=k;
}

4: 第4题 请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。
答案:void fun(char *tt, int pp[])
{
int i;
for (i=0;i<26;i++)
pp[i]=0;
while (*tt)
{
switch (*tt)
{
case ‘a’: pp[0]++;break;
case ‘b’: pp[1]++;break;
case ‘c’: pp[2]++;break;
case ‘d’: pp[3]++;break;
case ‘e’: pp[4]++;break;
case ‘f’: pp[5]++;break;
case ‘g’: pp[6]++;break;
case ‘h’: pp[7]++;break;
case ‘i’: pp[8]++;break;
case ‘j’: pp[9]++;break;
case ‘k’: pp[10]++;break;
case ‘l’: pp[11]++;break;
case ‘m’: pp[12]++;break;
case ‘n’: pp[12]++;break;
case ‘o’: pp[14]++;break;
case ‘p’: pp[15]++;break;
case ‘q’: pp[16]++;break;
case ‘r’: pp[17]++;break;
case ‘s’: pp[18]++;break;
case ‘t’: pp[19]++;break;
case ‘u’: pp[20]++;break;
case ‘v’: pp[21]++;break;
case ‘w’: pp[22]++;break;
case ‘x’: pp[23]++;break;
case ‘y’: pp[24]++;break;
case ‘z’: pp[25]++;break;
}
tt++;
}
}
5: 第5题 请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k各素数存入xx所指的数组中。
答案:void fun(int m, int k, int xx[])
{
int g=0,I,j,flag=1;
for(i=m+1;i<m*m;i++)
{
for(j=0;j<I;j++)
{
if(i%j!=0)
flag=1;
else
{
flag=0;
break;
}
}
if (flag==1 && j>=i)
{
if (k>=0)
{
xx[g++]=i;
k--;
}
else
break;
}
}
}

6: 第6题 请编写一个函数void fun(char a[],char[],int n),其功能是:删除以各字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。
答案:void fun(char a[],char b[], int n)
{
int I,j=0;
for (i=0;i<LEN;i++)
if (i!=n)
{
b[j]=a[i];
j++;
}
b[j]=‘\0’;
}

7: 第7题 请编写一个函数int fun(int *s,int t,int *k),用来求除数组的最大元素在数组中的下标并存放在k所指的储存单元中。
答案:void fun (int *s, int t, int *k)
{
int I, max;
max=s[0];
for(i=0;i<t;i++)
if (s[i]>max)
{
max=s[i];
*k=I;
}
}

8: 第8题 编写函数fun,功能是:根据以下攻势计算s,计算结果作为函数值返回;n通过形参传入。S=1+1/(1+2)+1/(1+2+3)+…….+1/(1+2+3+4+……+n)
答案:float fun (int n)
{
int i;
float s=1.0, t=1.0;
for(i=2;i<=n;i++)
{
t=t+i;
s=s+1/t;
}
return s;
}

9: 第9题 编写一个函数fun,它的功能是:根据以下公式求p的值,结果由函数值带回。M与n为两个正整数,且要求m>n。 p=m!/n!(m-n)!
答案:float fun(int m, int n)
{
float p,t=1.0;
int I;
for (i=1;i<=m;i++)
t=t*I;
p=t;
for(t=1.0,i=1;i<=n;i++)
t=t*I;
p=p/t;
for(t=1.0,i=1;i<=m-n;i++)
t=t*I;
p=p/t;
return p;
}

10: 第10题 编写函数fun,它的功能是:利用以下的简单迭代方法求方程cos(x)-x=0的一个实根。
迭代步骤如下:(1)取x1初值为0.0; (2)x0=x1,把x1的值赋各x0;
(3)x1=cos(x0),求出一个新的x1;
(4)若x0-x1的绝对值小于0.000001,则执行步骤(5),否则执行步骤(2);
(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。
程序将输出root=0.739085。
答案:float fun()
{
float x1=0.0,x0;
do
{
x0=x1;
x1=cos(x0);
}
while(fabs(x0-x1)>1e-6);
return x1;
}

11: 第11题 下列程序定义了n×n的二维数组,并在主函数中自动赋值。请编写函数 fun(int a[][n]),该函数的功能是:使数组左下半三角元素中的值全部置成0。
答案:int fun(int a[][N])
{
int I,j;
for(i=0;i<N;i++)
for(j=0;j<=I;j++)
a[i][j]=0;
}

12: 第12题 下列程序定义了n×n的二维数组,并在主函数中赋值。请编写函数fun,函数的功能使求出数组周边元素的平均值并作为函数值返回给主函数中的s。
答案:double fun(int w[][N])
{
int I,j,k=0;
double s=0.0;
for(j=0;j<N;j++)
{
s+=w[0][j];
k++;
}
for(j=0;j<N;j++)
{
s+=w[N-1][j];
k++;
}
for(i=1;i<=N-2;i++)
{
s+=w[i][0];
k++;
}
for(i=1;i<=N-2;i++)
{
s+=w[i][N-1];
k++;
}
return s/=k;
}

13: 第13题 请编写一个函数void fun(int tt[m][n],int pp[n]),tt指向一个m行n列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中。二维数组中的数已在主函数中赋予。
答案:void fun(int tt[M][N], int pp[N])
{
int I,j,min;
for(j=0;j<N;j++)
{
min=tt[0][j];
for(i=0;i<M;i++)
{
if (tt[i][j]<min)
min=tt[i][j];
}
pp[j]=min;
}
}

14: 第14题 请别写函数fun,函数的功能使求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。
答案:int fun(int a[M][N])
{
int I,j,s=0;
for(j=0;j<N;j++)
{
s+=a[0][j];
s+=a[M-1][j];
}
for(i=1;i<=M-2;i++)
{
s+=a[i][0];
s+=a[i][N-1];
}
return s;
}

15: 第15题 请编写一个函数unsigned fun(unsigned w),w使一个大于10的无符号整数,若w使n(n≥2)位的整数,则函数求出w后n-1位的数作为函数值返回。
答案:unsigned fun(unsigned w)
{
unsigned t,s=0,s1=1,p=0;
t=w;
while(t>10)
{
if(t/10)
p=t%10;
s=s+p*s1;
s1=s1*10;
t=t/10;
}
return s;
}

16: 第16题 请编写一个函数float fun(double h),函数的功能使对变量h中的值保留2位小树,并对第三位进行四舍五入(规定h中的值位正数)。
答案:float fun(float h)
{
long t;
float s;
h=h*1000;
t=(h+5)/10;
s=(float)t/100.0;
return s;
}

17: 第17题 请编写一个函数fun(char *s),该函数的功能使把字符串中的内容拟置。
答案:void fun(char *s)
{
char ch;
int I,m,n;
i=0;
m=n=strlen(s)-1;
while(i<(n+1)/2)
{
ch=s[i];
s[i]=s[m];
s[m]=ch;
i++;
m--;
}
}

18: 第18题 编写程序,实现矩阵(3行3列)的转置(即行列互换)。
答案:void fun(int array[3][3])
{
int I,j,temp;
for(i=0;i<3;i++)
for(j=0;j<I,j++)
{
temp=array[i][j];
array[i][j]=array[j][i];
array[j][i]=temp;
}
}

19: 第19题 编写函数fun,该函数的功能是:从字符中删除指定的字符,同一字母的大、小写按不同字符处理。
答案:void fun(char s[],int c)
{
int i=0;
char *p;
p=s;
while(*p)
{
if(*p!=c)
{
s[i]=*p;
i++;
}
p++;
}
s[i]=‘\0’;
}

20: 第20题 编写函数int fun(int lim,int aa[max]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求的素数的个数。
答案:int fun(int lim, int aa[MAX])
{
int k=0,I,j;
for(i=lim;i>1;i--)
{
for(j=2;j<i;j++)
if(i%j==0)
break;
else
continue;
if(j>=i)
{
aa[k]=i;
k++;
}
}
return k++;
}

21: 第21题 请编写函数fun,对长度位7个字符的字符串,除首尾字符外,将其余5个字符按ascii码降序排列。
答案:void fun(char *s,int num)
{
char t;
int I,j;
for(i=1;i<num-2;i++)
for(j=i+1;j<num-1;j++)
if(s[i]<s[j])
{
t=s[i];
s[i]=s[j];
s[j]=t;
}
}

22: 第22题 n名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:找出学生的最高分,由函数值返回。
答案:double fun(STREC *h)
{
double max;
STREC *q=h;
max=h->s;
do
{
if(q->s>max)
max=q->s;
q=q->next;
}
while(q!=0);
return max;
}

23: 第23题 请编写函数fun,该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出yes,否则返回0,主函数中输出no。回文是指顺读和倒读都是一样的字符串。
答案:int fun(char *str)
{
int I,n=0;fg=1;
char *p=str;
while (*p)
{
n++;
p++;
}
for(i=0;i<n/2;i++)
if (str[i]==str[n-1-i]);
else
{
fg=0;
break;
}
return fg;
}

24: 第24题 请编写一个函数fun,它的功能是:将一个字符串转换为一个整数(不得调用c语言提供的将字符串转换为整数的函数)。
答案:long fun (char *p)
{
long s=0,t;
int i=0,j,n=strlen(p),k,s1;
if(p[0]==‘-’)
i++;
for(j=I;j<=n-1;j++)
{
t=p[j]-‘0’;
s1=10;
for(k=j;k<n-1;k++)
t*=s1;
s+=t;
}
if(p[0]==‘-’)
return –s;
else
return s;
}

25: 第25题 请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。
答案:char *fun(char *s,char *t)
{
char *p,*t1=t,*s1=s;
int n=0;m=0;
while (*s1)
{
n++;
s1++;
}
while(*t1)
{
m++;
t1++;
}
if(n>=m)
p=s;
else
p=t;
return p;
}

26: 第26题 请编写一个函数fun,它的功能是:根据以下公式求x的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):
x/2=1+1/3+1×2/3×5+1×2×3/3×5×7+1×2×3×4/3×5×7×9+…+1×2×3×…×n/3×5×7×(2n+1)
程序运行后,如果输入精度0.0005,则程序输出为3.14…。
答案:double fun(double eps)
{
double s;
float n,t,pi;
t=1;pi=0;n=1.0;s=1.0;
while((fabs(s))>=eps)
{
pi+=s;
t=n/(2*n+1);
s*=t;
n++;
}
pi=pi*2;
return pi;
}

27: 第27题 请编写一个函数fun,它的功能是:求除1到m之内(含m)能北7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
答案:void fun(int m, int *a, int *n)
{
int I,j=0; *n=0;
for(i=1;i<=m;i++)
if (i%7==0 || i%11 ==0)
{
a[j]=I;
j++;
}
*n=j;
}

28: 第28题 请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n 是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。
答案:void fun (int a[],int n, int *max, int *d)
{
int I;
*max=a[0];
*d=0;
for(i=0;I<n;i++)
if(a[i]>*max)
{
*max=a[i];
*d=I;
}
}

29: 第29题 请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
答案:void fun(char *ss)
{
int I,n;
n=strlen(ss);
for(i=1;i<n;i+=2)
if(ss[i]>=‘a’&& ss[i]<=‘z’)
ss[i]=ss[i]-32;
}

30: 第30题 请编写一个函数fun,它的功能是:求除一个2×m整型二维数组中最大元素的值,并将此值返回调用函数。
答案:int fun(int a[][M])
{
int I,j,max;
max=a[0][0];
for(i=0;i<2;i++)
for(j=0;j<M;j++)
if(a[i][j]>max)
max=a[i][j];
return max;
}

31: 第31题 请编写函数fun,其功能是:将s所指字符串中除了下标为偶数、同时ascii值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的一个数组中。
答案:void fun(char *s,char t[])
{
int I,j=0,n;
n=strlen(s);
for(i=0;I,n;i++)
if(i%2==0&&s[i]%2==0)
{
t[j]=s[i];
j++;
}
t[j]=‘\0’;
}

32: 第32题 请编写函数fun,其功能是:将s所指字符串中除了下标为奇数、同时ascii值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的一个数组中。
答案:void fun(char *s,char t[])
{
int I,j=0,n;
n=strlen(s);
for(i=0;I,n;i++)
if(i%2!=0&&s[i]%2!=0)
{
t[j]=s[i];
j++;
}
t[j]=‘\0’;
}

33: 第33题 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串中尾部的*号不得多于n个;若多于n个,则删除多于的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。
答案:void fun(char *a,int n)
{
int i=0;k=0;
char *p, *t;
p=t=a;
while (*t)
t++;
t--;
while(*t==‘*’)
{
k++;
t--;
}
t++;
if(k>n)
{
while (*p&&p<t+n)
{
a[i]=*p;
i++;
p++;
}
a[i]=‘\0’;
}
}

34: 第34题 学生的记录由学号和成绩组成,n名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能使:把分数最高的学生数据放在h所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。
答案:int fun (STREC *a, STREC *b)
{
int I,j=0,n=0, max;
max=a[0].s;
for(i=0;i<N;i++)
if(a[i].s>max)
max=a[i].s;
for(i=0;i<N;i++)
if(a[i].s==max)
{
*(b+j)=a[i];
j++;
n++;
}
return n;
}

35: 第35题 请编写一个函数,用来删除字符串中的所有空格。
答案:void fun(char *str)
{
int i=0;
char *p=str;
while (*p)
{
if(*p!=‘’)
{
str[i]=*p;
i++;
}
p++;
}
str[i]=‘\0’;
}

36: 第36题 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。
答案:void fun(char *a)
{
int i=0,n=0;
char *p;
p=a;
while (*p==‘*’)
{
n++;
p++;
}
while (*p)
{
a[i]=*p;
i++;
p++;
}
while(n!=0)
{
a[i]=‘*’;
i++;
n--;
}
a[i]=‘\0’;
}

37: 第37题 某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。请自己定义正确的形参。
答案:void fun(STREC *p)
{
double av=0.0;
int i:
for(i=0;i<N;i++)
av+=p->s[i];
av/=N;
p->ave=av;
}

❸ c语言基础知识必背有哪些

基础的理论理解,基本规则:如组织形式,解释器规定,源文件命名规则等等,还有程序的一些基本结构如:顺序结构,选择结构,循环结构的基本特性,还有就是数据类型及各种运算符的作用了。

动手实践帮助记忆,多编写程序,即便不会写多学着敲敲代码也是很有用的,记住了要点的同时,提高学习兴趣,这非常重要。

C语言

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

尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。

❹ c语言基础知识必背是什么

c语言基础知识必背有c语言的命名、变量及赋值、基本数据类型、格式化输出语句、强制类型转换、常量、自动类型转换等。

如C语言程序的结构认识:任何一个c语言程序都必须包括以下格式:main() { }。这是c语言的基本结构,任何一个程序都必须包含这个结构。括号内可以不写任何内容,那么该程序将不执行任何结果。

main()----在c语言中称之为“主函数”,一个c程序有且仅有一个main函数,任何一个c程序总是从main函数开始执行,main函数后面的一对圆括号不能省略。被大括号{ }括起来的内容称为main函数的函数体,这部分内容就是计算机要执行的内容。

在{ }里面每一句话后面都有一个分号(;),在c语言中,我们把以一个分号结尾的一句话叫做一个c语言的语句,分号是语句结束的标志。

printf(“a=%d,b=%d,sum=%d ”,a,b,sum); ----通过执行这条c语言系统提供给我们直接使用的屏幕输出函数,用户即可看到运行结果,本程序运行后,将在显示器上显示如下结果:a=20,b=15,sum=35。

C程序的生成过程

C程序是先由源文件经编译生成目标文件,然后经过连接生成可执行文件。源程序的扩展名为 .c ,目标程序的扩展名为 .obj , 可执行程序的扩展名为 .exe 。

❺ 关于c语言和数组和函数

//考点是数组作为参数入参,第一个参数为数组指针,第二个参数为数组长度,第三个参数为被成书
voidfunc(inta[],intsize,intx){
for(inti=0;i<size;i++){
a[i]*=x;
printf("%d",a[i]);
}
printf(" ");
}

intmain(){
inta[4],x;
scanf("%d,%d,%d,%d",&a[0],&a[1],&a[2],&a[3]);
scanf("%d",&x);
func(a,4,x);

return0;
}

❻ c语言编程 一维数组和函数

#include<stdio.h>

int Input(long num[], float score[]);
void Total1(long num[], float score[], int n);
void Total2(long num[],float score[],int n);

int main(){
long num[30];
float score[30];
int n;
n=Input(num, score);
Total1(num, score,n);
Total2(num, score,n);
return 0;
}
int Input(long num[], float score[]){
int i=0;
while(i<30){
scanf("%ld%f",&num[i],&score[i]);
if(score[i]<0)
break;
i++;
}
return i;
}

void Total1(long num[], float score[], int n){
int i,c=0;
for(i=0; i<n; i++){
if(score[i]<60){
c++;
printf("%ld\n",num[i]);
}
}
printf("The score<60 is:%d\n",c);
}

void Total2(long num[],float score[],int n){
int i,c=0;
float a=0;
for(i=0; i<n; i++)
a+=score[i];
a/=n;
for(i=0; i<n; i++){
if(score[i]>=a){
c++;
printf("%ld\n",num[i]);
}
}
printf("The score>=averge is:%d\n",c);
}

❼ C语言有关函数和数组的选择题

&aa[3]就是aa中第三个元素的首地址,实际上这里传过去进行排序的的是从4开始之后的5个元素
所以排的是4,5,6,7,8这几个数
排序函数执行的是从大到小排,所以排序后得到8,7,6,5,4
结果是
1,2,3,8,7,6,5,4,9,10
选C

❽ 求解几道关于C语言数组的题目

第一题:
#include<stdio.h>
#include<stdlib.h>
int
main()
{
int
a[5]={1,2,3,4,5};
int
b[5]={11,4,2,7,9};
int
c[5];
printf("数组c的元素为:");
for(int
i=0;i<5;i++)
{
c[i]=a[i]+b[i];
printf("%3d",c[i]);
}
return
0;
}
第二题:
#include<stdio.h>
#include<stdlib.h>
void
change(int
array[],int
n)
{
for(int
i=0;i<(n/2);i++)
{
int
temp;
temp=array[i];
array[i]=array[n-1-i];
array[n-1-i]=temp;
}
}
//Test
main
function
int
main()
{
int
a[]={1,2,3,4,5,6};
change(a,6);
for(int
i=0;i<6;i++)
{
printf("%d",a[i]);
}
return
0;
}
第三题:
#include<stdio.h>
#include<stdlib.h>
int
main()
{
int
a[2][3]={{1,2,3},{4,5,6}};
int
b[3][2]={{4,2},{3,0},{1,7}};
int
c[2][2]={0};//初始化值为0
printf("C的矩阵结构为:\n");
for(int
i=0;i<2;i++)
{
for(int
j=0;j<2;j++)
{
for(int
k=0;k<3;k++)
{
c[i][j]+=a[i][k]*b[k][j];
}
printf("%3d",c[i][j]);
if(i==0&&j==1)
printf("\n");
}
}
return
0;
}
第四题:
#include<stdio.h>
#include<stdlib.h>
int
Days(int
y,int
m,int
d)
{
int
days_of_month[2][12]={{31,29,31,30,31,30,31,31,30,31,30,31},
{31,28,31,30,31,30,31,31,30,31,30,31}};
int
day=0;
int
count=0;
//判断是否为闰年
if((y%4==0&&y%100!=0)||(y%400==0))
{
printf("%d是闰年",y);
for(int
i=0;i<m-1;i++)
{
count+=days_of_month[0][i];
}
day=count+d;
}
else
{
printf("%d不是闰年",y);
for(int
i=0;i<m-1;i++)
{
count+=days_of_month[1][i];
}
day=count+d;
}
return
day;
}
int
main()
{
int
y,m,d;
printf("请输入你要查询的年月日:");
scanf("%d%d%d",&y,&m,&d);
int
day=Days(y,m,d);
printf("是%d年的第%d天",y,day);
return
0;
}

❾ 为什么我觉得C语言的数组和函数那么难啊 有什么办法可以让我觉得学这部分会容易点

数组:想放一大堆数字的时候就会有用了。 想放一长串字母的时候同理。 想放多少,定义得比它大就行了。 函数:在C语言中函数是非常重要的环节。 当然你可以把所有代码全部都写在一起,那样除了你自己没人能看懂了,但是假如我写了一个程序,主函数里面只有几个小函数,而且从名字就知道它是做什么的,那样就一目了然了。函数的目的就是把要做的事情分成一个一个的小组。 对于自己写代码嘛。。。 适量的课后练习题足够了,选对自己不太简单也不太难的,边做边回忆课文中所讲到的编程思想,能起到加深记忆的作用。当然如果你记忆超群能记住所有用法,那么你的重点就是自己思考应该怎么把你所掌握的知识点运用到实际中去,在做题的时候多想一想,我用哪个方法比较巧妙?多想想,自己的技巧就在不知不觉中提高了。 个人看法,希望能对你有所帮助。

❿ C语言知识总结

c语言概要
第一章、 概述
1、 c语言的基本知识
1.1、 c语言的执行步骤
编辑-程序代码的录入,生成源程序*.c
编译-语法分析查错,翻译生成目标程序*.obj
(语法或逻辑错误,从第一个开始改,变量定义,语句格式,表达式格式等)
链接-与其他目标程序或库链接装配,生成可执行程序*.exe
执行
1.2、 main函数的基本知识
main()函数的位置
c程序总是从main( )函数开始执行
一个c程序可以包含一个主函数,即main()函数;也可以包含一个main()函数和若干其它函数
1.3、 c程序的结构
函数与主函数
程序由一个或多个函数组成
必须有一个且只能有一个主函数main()
程序执行从main开始,在main中结束,其他函数通过嵌套调用得以执行
程序语句
C程序由语句组成
用“;”作为语句终止符
注释
//

/* */ 为注释,不能嵌套
不产生编译代码
1.4、c 程序书写的规则
习惯用小写字母,大小写敏感
不使用行号,无程序行概念:通常一个语句占一行
可使用空行和空格
常用锯齿形的书写格式;同一层次结构的语句上下对齐。
第二章、基本数据类型与运算
2.1、c程序的数据类型
注意类型和变量含义的不同(类型是固定好的名字,变量是自己起的名字)
变量占用的存储空间
数据类型
基本类型:整型、字符型、浮点型(单精度型,双精度型)
构造类型:数组类型、结构体类型
指针类型
空类型
注意基本类型赋初值的方式
基本数据类型的表示形式
整形数据
十进制:以非0数字开头,如:123,-9,0
八进制;以0数字开头,如:0123,067
十六进制:以0x开头,如:0x123,0xff
实型数据
十进制:必须带小数点,如:123.0,-9.0
指数形式;如:1.23E3,0.9e-2,5e2
字符型数据
普通字符:如:’a’,’2’,’H’,’#’
转义字符:如:’\n’,’\167’,’\xlf,’\\’
(实现几列的对齐:指定宽度。如%100\ ‘\t’制表位)
(字符串长度。“abc\n\t\\” strlen 6; sizeof 7)
基本数据类型的存储长度
整型
Int 字节数 2 位数 16 数的表示范围 -32768—32767
Short 2 16 -32768—32767
Long 4 32 -2147483648—2147483647
实型
Float 4 32 3.4e-38---3.4e38
Double 8 64 1.7e-308---1.7e308
字符型
Char 1 8 -128----127
2.2、标识符命名规则
C语言标志符命名规则
标识符有数字,字母,下划线组成
标识符的首字符必须为字母和下划线
标识符不能为c语言的保留字(关键字)
如:auto extern sizeof float static case for struct char goto switch continue in typedef const if union default long unsigned do register void double return else short while enum signed
算术运算符 + - * / %
关系运算符 > < == >= <= !=
逻辑运算符 ! && ||
位运算符 << >> ~ | ^ &
赋值运算符 = 及其扩展赋值运算符
条件运算符 ? :
逗号运算符 ,
指针运算符 * &
求字节数运算符 sizeof
强制类型转换运算符 (类型)
分量运算符 . ->
下标运算符 [ ]
其他 如函数调用运算符()
运算符的优先级
由高到低:单目运算符,算数运算符,关系运算符,赋值运算符
说明:单目运算符:自增运算符,自减运算符,类型装换运算符。结合方向:自右至左
如:++--I 先—i.。
算术运算 结合方向自左至右
2.3基本运算和表达式
关系表达式和逻辑表达式
(a>b)&&(x>y) (a==b)||(x==y) !=a||(a>b)
A&&b.a为0.不执行b
A||b a为1.不执行b
在 c 中逻辑运算结果:1代表“真”,0代表“假”;
判断一个表达式是否真:0代表“假”,非0代表“真”
条件表达式 逗号表达式
如:k=5,k++
逗号值为5;k为6.
表达式1?表达式2 :表达式3
K=5>6 ? 1 : 0
2.4、混合运算的数据类型转换
2/3+0.5 双精度浮点型
第三章、顺序结构程序设计
3.1、c语句的分类
简单语句
表达式语句 表达式+分号
空语句 只有分号的语句
复合语句 用花括号将若干语句括起来
流程控制语句
选择语句 if ,switch
循环语句 while, do while , for
转移语句 break ,continue ,return goto
3.2、格式输入函数scanf
一般形式:scanf(“格式控制字符串“,地址列表);
使用scanf函数时,需要注意:
格式字符的个数必须与输入项的个数相同,数据类型必须一一对应,非格式字符串(说明性的)要原封不动的输入。
输入实行数据时,可以不带小数点,即按整型数据输入
数值型数据与字符或字符串混合输入时,需要注意输入方式。
3.3、格式输出函数printf
Printf(“格式控制字符串“,输出列表);
指定输出格式,由格式字符串和非格式字符串两种组成,非格式字符串照原样输出。
%[标志][输出最小宽度][.精度][长度]类型
标志:- 左对齐;+ 右对齐;
%f, %d, %c, %s
3.4、其他输入输出函数
Putchar getchar puts gets
第四章、选择结构程序设计
If选择结构
单分支
If(表达式)
语句
双分支
If(表达式)
语句1
Else
语句2
多分支
If (表达式1)
语句1
Else if(表达式2)
语句2
。。。
Else if(表达式m)
语句m
Else
语句n
Switch(表达式)
{
Case 常量表达式1:语句1;break;
Case 常量表达式2:语句2;break;
。。。
Case 常量表达式m:语句m;break;
Default:语句n;break;
}
注意break的使用
第五章、循环结构程序设计
循环三要素
初始条件 ;终止条件 ;在初始条件和终止条件间反复做某件事情(循环体)
While(表达式)
语句

Do
语句
While(表达式);

For(循环体变量赋初值;循环条件;循环变量增量)
( for( ) ; // ; 进行时间延迟。在信息交换等时用。如for(i=0,i<100) ; 互相通讯的时间延迟。 Delay )
Break语句 :不能用于循环语句和switch语句之外的任何其他语句;跳出循环。
Continue语句 :跳过循环体中剩余的语句而强行执行下一次循环;跳出本次循环。
第六章、函数与编译预处理
6.1、函数的定义和调用
类型标识符 函数名 (形式参数列表)
{ 声明部分
语句
}
例:
Int max (int x,int y)
{int z;<br>Z=x>y?x:y;<br>Return(z);}
6.2、局部变量和全局变量
注意函数中静态变量的定义和使用
6.3、变量的存储类型
局部变量的存储类型
自动变量(auto) 动态存储
局部静态变量(static) 静态存储
寄存器变量(register) 静态存储
全局变量的存储类型
自动变量(auto) 动态存储
外部变量 (extern) 静态存储
全局静态变量(static )静态存储
Extern 外部引用
Static 不能用extern 引用。
第七章、数组
7.1、一维数组的定义和使用
特别需要注意循环体的初值,终止条件
例:
Main()
{
Int I,a[10];
For(i=0;i<=9;i++)
A=I;
For(i=9;i>=0;i--)
Printf(“%d”,a);
}
注意下标问题
7.2、二维数组的定义和使用
二维数组的初始化
例如:
Int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
Int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
Int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12};
Int a[ ][4]={{1,2,3,4},{5},{9,10,11,12}};
例如:int a[3][3]={{1},{2},{3}};
是对每一行的第一列元素赋值,未赋值的元素取0
7.3、字符数组和 字符串
字符串用字符数组来处理,结束标志符 ‘\0’
如:char c[ ]={“I am happy”};
用字符串常量使字符数组初值化
Char c[ ]={‘I’,’ ‘,’a’,’m’,’ ‘,’h’,’a’,’p’,’p’,’y’,’\0’};
第八章、指针
8.1、地址和指针的概念
Int I;
Int *i_point;
8.2、指针变量和变量的地址
操作符:* &
8.3、指针和一维数组
若有定义
Int a[10];
Int *p=a;
分析下面表达式的含义:
A, &a,
*(a+i), a+I,
*(p+i), p+i
A=*(a+i)=*(P+i)
&a=a+i=p+i
8.4、指针与字符串
Main()
{
Char string[ ]=”I love china!”;
Printf(“%s\n”,string);
}
Main()
{ char *string=”I love china!”;
Printf(“%s\n”,string);
}
8.5、指针变量作为函数参数
形参的定义方式;实参的形式;参数的传递方式。
第九章、结构体
9.1、结构体类型和变量的定义
Struct 结构体名
{成员列表};
Struct student
{char stuNO[8];<br>Char name[20];<br>Char sex;<br>Int age;<br>Float score;<br>Char addr[30];<br>};

Stuct student
{char stuNO[8];<br>Char name[20];<br>Char sex;<br>Int age;<br>Float score;<br>Char addr[30];<br>};
Struct student stu1, stu2;
9.2、结构体变量的引用
一般形式为:
结构体变量名.成员名
9.3、结构体数组
结构体数组 结构体数组元素.成员名
指向结构体的指针变量
(*p).成员名
p->成员名
其他
Strcpy(字符数组1,字符串2)
Strcat(字符数组1,字符数组2)
Strcmp(字符串1,字符串2)
Strlen(字符数组)