文档库 最新最全的文档下载
当前位置:文档库 › C语言必背的典型程序设计题目 - 数组、函数-------参考答案

C语言必背的典型程序设计题目 - 数组、函数-------参考答案

C语言必背的典型程序设计题目 - 数组、函数-------参考答案
C语言必背的典型程序设计题目 - 数组、函数-------参考答案

数组部分必须会编写的程序(参考答案)1、使用选择法、冒泡法对10个数进行排序,并输出排序前后的数列。

//选择法

#include

void main()

{

int a[10]={12,45,7,8,96,4,10,48,2,46},n=10,i,j,t,temp;

printf("Before sort:");

for(i=0;i<10;i++)

{

printf("%4d",a[i]);

}

printf("\n");

//排序

for(i=0;i<9;i++)

{

t=i;

for(j=i+1;j<10;j++)

{

if(a[t]>a[j])

{

t=j;

}

}

if(t!=i)

{

temp=a[i];

a[i]=a[t];a[t]=temp;

}

}

printf("Aftere sorted:");

for(i=0;i<10;i++)

{

printf("%4d",a[i]);

}

printf("\n");

}

//冒泡法

#include

void main()

{

int a[10]={12,45,7,8,96,4,10,48,2,46},n=10,I,j,t;

printf(“Before sort:”);

for(i=0;i<10;i++)

{

printf("%4d",a[i]);

}

prtintf(“\n”);

//排序

for(i=0;i<=n-1;i++)

{

for(j=0;j

if(a[j]>a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;}

}

printf(“Aftere sorted:”);

for(i=0;i<10;i++)

{

printf("%4d",a[i]);

}

prtintf(“\n”);

}

2、已知数组a中的元素已按由小到大顺序排列,以下程序的功能是将输入的一个数插入数组a中,插入后,数组a中的元素仍然由小到大顺序排列。

#include

void main()

{

int a[10]={0,12,17,20,25,28,30}; /*a[0]为工作单元,从a[1]开始存放数据*/

int x , i, j=6; /*j为元素个数*/

printf("Enter a number: ");

scanf("%d",&x);

a[0]=x;

i=j; /*从最后一个单元开始*/

while(a[i]>x)

{

a[i+1]=a[i]; i--; /*将比x大的数往后移动一个位置*/

}

a[++i]=x;

j++; /*插入x后元素总个数增加*/

for(i=1;i<=j;i++)

printf("%8d",a[i]);

printf("\n");

}

3、(提高题目)编号为1,2,3,……n的n个人按顺时针方向围坐一圈。任选一个正整数作为报数上限m,从第1个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。设计程序输出出列顺序。

#include

#define nmax 50

void main()

{

int i,k,m,n,t,num[nmax];

printf("please input the total of numbers:");

scanf("%d",&n);

printf("please input the upper bound of numbers:");

scanf("%d",&m);

for(i=0;i

num[i]=0;

i=0; //用于记录顺序1..n

k=0; //用于记录顺序1..m

t=0; //用于记录出列顺序

while(t

{

if(num[i]==0) k++;

if(k==m)

{

t++;

num[i]=t;

k=0;

}

i++;

if(i==n)i=0; //或者i=i%n,构成循环

}

for(i=0;i

printf("%4d",i+1);

printf("\n");

for(i=0;i

printf("%4d",num[i]);

printf("\n");

}

4、编程打印直角杨辉三角形前六行。

#include

#include

void main()

{

int i,j,a[6][6];

for(i=0;i<=5;i++)

{

a[i][i]=1;

a[i][0]=1;

}

for(i=2;i<=5;i++)

{

for(j=1;j<=i-1;j++)

{

a[i][j]=a[i-1][j]+a[i-1][j-1];

}

}

for(i=0;i<=5;i++)

{

for(j=0;j<=i;j++)

{

printf("%4d",a[i][j]);

}

printf("\n");

}

}

5、编写程序,把下面的数据输入一个二维数组中。

25 36 78 13

12 26 88 93

75 18 22 32

56 44 36 58

然后执行以下操作:

①输出矩阵两个对角线上的数;

②分别输出各行和各列的和;

③交换第一行和第三行的位置;

④交换第二列和第四列的位置;

⑤输出处理后的数组。

#include

#define SIZE 4

void main()

{

int a[SIZE][SIZE]={{25,36,78,13},{12,26,88,93},{75,18,22,32},{56,44,36,58}};

int i,j,t,sum;

//输出二维数组

printf("二维数组:\n");

for(i=0;i

{

for(j=0;j

{

printf("%5d",a[i][j]);

}

printf("\n");

}

printf("\n");

printf("主对角线上的数:");

for(i=0;i

{

printf("%4d",a[i][i]);

}

printf("\n");

printf("副对角线上的数:");

for(i=0;i

{

printf("%4d",a[i][SIZE-1-i]);

}

printf("\n\n");

//各列的和

for(i=0;i

{

sum=0;

for(j=0;j

{

sum+=a[i][j];

}

printf("第%d行的和=%d\n",i+1,sum);

}

printf("\n");

//各列的和

for(j=0;j

{

sum=0;

for(i=0;i

{

sum+=a[i][j];

}

printf("第%d 列的和=%d\n",j+1,sum);

}

printf("\n");

//交换第一行和第三行的位置

for(j=0;j

{

t=a[0][j];a[0][j]=a[2][j];a[2][j]=t;

}

//输出二维数组

printf("交换第一行和第三行后的二维数组:\n");

for(i=0;i

{

for(j=0;j

{

printf("%5d",a[i][j]);

}

printf("\n");

}

printf("\n");

//交换第二列和第四列的位置

for(i=0;i

{

t=a[i][1];a[i][1]=a[i][3];a[i][3]=t;

}

//输出二维数组

printf("交换第2列和第4列后的二维数组:\n");

for(i=0;i

{

for(j=0;j

{

printf("%5d",a[i][j]);

}

printf("\n");

}

} 6、求一个5×5矩阵中的马鞍数,输出它的位置,所谓马鞍数是指在行上最小而在列上最大的数。如下矩阵:

5 6 7 8 94 5 6 7 83 4 5 2 12 3 4 9 01 2 5 4 8?? ? ? ? ? ? ???

则1行1列上的数就是马鞍数。

#include

void main()

{

int a[5][5]={{5,6,7,8,9},{4,5,6,7,8},{3,4,5,2,1},{2,3,4,9,0},{1,2,5,4,8}};

int i,j,col,row,Min,Max;

for(i=0;i<5;i++)

{

Min=a[i][0];col=0;

for(j=0;j<5;j++)

{

if(Min>a[i][j])

{

Min=a[i][j];

col=j;

}

}

Max=a[0][col];row=0;

for(j=0;j<5;j++)

{

if(Max

{

Max=a[j][col];

row=j;

}

}

if(row==i)

printf("马鞍数是行%d,列%d 值:%d\n",row+1,col+1,a[row][col]);

}

}

7、定义一个二维数组,存入5个学生的数学、语文、英语、物理、化学5门课程的成绩,计算并输出每一门课程的平均成绩和每一位学生的平均成绩。

#include

#define N 5 //代表学生数

#define M 5 //代表课程数

void main()

{

int scores[N][M]={{78,89,90,76,65},{86,79,98,74,95},{78,67,96,90,65},

{92,79,98,74,95},{69,94,85,67,56}};

int i,j,sum;

//输入学生成绩

/*

for(i=0;i

{

printf("输入第%d个学生的数学、语文、英语、物理、化学5门课程的成绩:",i+1);

for(j=0;j

scanf("%d",&scores[i][j]);

}*/

//输出学生成绩

printf("序号\t数学\t语文\t英语\t物理\t化学\t平均成绩\n");

for(i=0;i

{

sum=0;

printf("%d\t",i+1);

for(j=0;j

{

sum+=scores[i][j]; //计算每一位学生的总成绩

printf("%d\t",scores[i][j]);

}

printf("%d\n",sum/M); //输出每一位学生的平均成绩

}

//计算并输出每一门课程的平均成绩

printf("\n平均\t");

for(j=0;j

{

sum=0;

for(i=0;i

{

sum+=scores[i][j];

}

printf("%d\t",sum/N);

}

printf("\n");

}

8、输入一个字符串,判断其是否为回文。回文字符串是指从左到右读和从右到左读完全相同的字符串。

#include

#include

void main()

{ char s[100];

int i,j,n;

printf("输入字符串:\n");

gets(s);

n=strlen(s);

for(i=0,j=n-1;i

if(s[i]!=s[j]) break;

if(i>=j) printf("是回文串\n");

else printf("不是回文串\n");

}

9、编写程序实现从字符数组s中删除存放在c中的字符。

#include

#include

void main()

{ char s[80],c;

int j,k;

printf("\nEnter a string: ");

gets(s);

printf("\nEnter a character: ");

c=getchar( );

for(j=k=0;s[j]!= '\0';j++)

if(s[j]!=c)

s[k++]=s[j];

s[k]= '\0';

printf("\n%s",s);

}

10、输入5个国家的名字,按字母顺序进行排列,输出排序前后的内容。#include

#include

#define SIZE 5

void main()

{

char a[SIZE][50], temp[50];

int i,j,t;

printf("Enter 5 country names:\n");

for(i=0;i

{

gets(a[i]);

}

printf("Before sort:\n");

for(i=0;i

{

printf("%s\n",a[i]);

}

printf("\n");

//排序

for(i=0;i

{

t=i;

for(j=i+1;j

{

if(strcmp(a[t],a[j])>0)

{

t=j;

}

}

if(t!=i)

{

strcpy(temp,a[i]);

strcpy(a[i],a[t]);

strcpy(a[t],temp);

}

}

printf("Aftere sorted:\n");

for(i=0;i

{

printf("%s\n",a[i]);

}

printf("\n");

}

函数部分必须会编写的程序(参考答案)

1、定义一个函数,用于判断三角形的三条边能否构成三角形,如果能,则判断是普通三角形,等腰三角形,还是等边三角形。

#include

int judgeTrangle(int a,int b,int c);

void main()

{

int a,b,c,t;

printf("输入三角形三边长:");

scanf("%d%d%d",&a,&b,&c);

t=judgeTrangle(a,b,c);

switch(t)

{

case 0:printf("普通三角形!\n");break;

case 1:printf("等腰三角形!\n");break;

case 2:printf("等边三角形!\n");break;

default:printf("不构成三角形!\n");break;

}

}

/*

功能:判断三角形形状

返回值:-1,不够成三角形

0,普通三角形

1,等要三角形

2,等边三角形

*/

int judgeTrangle(int a,int b,int c)

{

if(a+b>c && a+c>b && b+c>a)

{

if(a==b || b==c || a==c)

{

if(a==b && b==c && a==c)

return 2;

else

return 1;

}

else

return 0;

}

else

return -1;

}

2、定义一个函数,用于验证哥德巴赫猜想。任何一个充分大的偶数(大于等于6)总可以表示成两个素数之和。

#include

int isPrime(int n);

void gdbh(int n);

void main()

{

int n;

printf("Enter a odd integer:");

scanf("%d",&n);

if(n<6)n+=6; //保证大于6

if(n%2==1)n++; //保证是偶数

gdbh(n);

}

int isPrime(int n)

{

int i;

for(i=2;i

{

if(n%i==0)

return 0;

}

return 1;

}

void gdbh(int n)

{

int i;

for(i=2;i<=n/2;i++)

{

if(isPrime(i) && isPrime(n-i))

{

printf("%d=%d+%d ",n,i,n-i);

}

}

printf("\n");

}

3、定义两个函数,求两个数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。

#include

int gct(int a,int b);

int lcm(int a,int b);

void main()

{

int num1,num2;

printf("please input two numbers:\n");

scanf("%d %d",&num1,&num2);

printf("%d,%d的最大公约数是:%d\n",num1,num2,gct(num1,num2));

printf("%d,%d的最小公倍数是:%d\n",num1,num2,lcm(num1,num2));

}

int gct(int a,int b)

{

int temp;

while(b!=0)/*利用辗除法,直到b为0为止*/

{

temp=a%b;

a=b;

b=temp;

}

return a;

}

int lcm(int a,int b)

{

return a*b/gct(a,b);

}

4、定义一个函数,用于将一个字符串反序存放。例如,原串为ABCDEF,则处理后的字符串为:FEDCBA。

#include

#include

void reverse(char str[]);

void main()

{

char str[50];

puts("请输入一行字符串:");

gets(str);

puts("转换后的字符串为:");

reverse(str);

puts(str);

}

void reverse(char str[])

{

int i,len;

char ch;

len=strlen(str);

for(i=0;i

{

ch=str[i];

str[i]=str[len-1-i];

str[len-1-i]=ch;

}

}

或者逆置字符串的函数也可写为:

void reverse(char str[])

{

int i,j,len;

char ch;

len=0;

while(str[len]!='\0') //计算字符串长度

{

len++;

}

for(i=0,j=len-1;i

{

ch=str[i];

str[i]=str[j];

str[j]=ch;

}

}

5、定义函数,对给出年、月、日计算该天是该年的第几天。(可利用数组来实现)。

#include

int days(int year,int month,int day);

void main()

{

int year,month,day,d;

printf("请输入年、月、日:\n");

scanf("%d %d %d",&year,&month,&day);

d=days(year,month,day);

printf("这天是%d年的第%d天\n",year,d);

}

int days(int year,int month,int day)

{

int monthDays[12]={31,28,31,30,31,30,31,31,30,31,30,31};

int d,i;

d=day;

if(month>2 && (year%4==0 &&year %100!=0 || year%400==0))

{

monthDays[1]+=1;

}

for(i=0;i

{

d+=monthDays[i];

}

return d;

}

6、编写函数replace(char *s,char c1,char c2)实现将s所指向的字符串中所有字符c1用c2替换,字符串、字符c1和c2均在主函数中输入,将原始字符串和替换后的字符串显示在屏幕上。

#include

#include

void replace(char *s,char c1,char c2);

void main()

{

char str[50]="abcabcabc";

char c1='c',c2='j';

printf("\"%s\"中的字符%c用字符%c代替后的结果为:",str,c1,c2);

replace(str,c1,c2);

puts(str);

}

void replace(char *s,char c1,char c2)

{

int i;

i=0;

while(s[i]!='\0')

{

if(s[i]==c1)

{

s[i]=c2;

}

i++;

}

}

7、写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

#include

#include

int strLength(char a[]);

void main()

{

char str[50];

gets(str);

printf("\"%s\" length is %d\n",str,strLength(str));

}

int strLength(char a[])

{

int i;

i=0;

while(a[i]!='\0')

{

i++;

}

return i;

}

8、编写输入数据函数、排序(冒泡法、选择法)函数、输出函数,完成10个数据的输入、排序和输出,在主函数中进行测试。

#include

#include

#define SIZE 10

void inputData(int a[],int n); //数组数据赋值

void selectedSort(int a[],int n); //选择排序

void bubbleSort(int a[],int n); //冒泡排序

void outputData(int a[],int n); //输出数据

void main()

{

int a[SIZE];

inputData(a,SIZE);

outputData(a,SIZE);

selectedSort(a,SIZE);

bubbleSort(a,SIZE);

outputData(a,SIZE);

}

void inputData(int a[],int n)

{

int i;

printf("请输入%d个整数:\n",n);

for(i=0;i

scanf("%d",&a[i]);

}

void selectedSort(int a[],int n) //选择排序

{

int i,j,t;

for(i=0;i

{

for(j=i+1;j

{

if(a[j]>a[i])

{

t=a[j]; a[j]=a[i]; a[i]=t;

}

}

}

}

void bubbleSort(int a[],int n) //冒泡排序

{

int i,j;

for(i=0;i

{

for(j=0;j

{

if(a[j]>a[j+1])

{

int t=a[j]; a[j]=a[j+1];a[j+1]=t;

}

}

}

}

void outputData(int a[],int n)

{

int i;

printf("数组为:\n");

for(i=0;i

{

printf("%d ",a[i]);

}

printf("\n");

}

9、利用递归函数,对一个给定的整数,输出其二进制形式。

#include

void toBase(int n,int r)

{

if(n/r==0)printf("%d",n);

else

{

toBase(n/r,r);

printf("%d",n%r);

}

}

进制转换函数也可写为:

void toBase(int n,int r)

{

int rem;

rem=n%r;

if(n/r>0)

toBase(n/r,r);

printf("%d",rem);

}

10、利用递归函数,对一个给定的整数,输出其阶乘。

#include

int fac(int n);

void main()

{

int n,m;

n=6;

m=fac(n);

printf("%d!=%d\n",n,m); }

int fac(int n)

{

if(n==1)return 1;

else return n*fac(n-1); }

c语言复习题(有答案)●

思考题 不仅要会做这些题,更重要的是要掌握其相关知识点一、一般填空题 1-1、调用fopen函数打开一文本文件,在“打开模式”这一项中,为输出(写)而打开需填入【1】. 1-2、调用fopen函数打开一文本文件,在“打开模式”这一项中,为追加而打开需填入【1】. 1-3、fopen函数的原形在头文件【1】中. 1-4、getchar函数的原形在头文件【1】中. 1-5、sqrt函数的原形在头文件【1】中. 1-6、如果函数不要求带回值,可用【1】来定义函数返回值为空. 答案:w或w+;a或a+;stdio.h ; stdio.h ; math.h ;void . 2-1、字符串“\1011234\\at”的长度(字符数)是【1】. 2-2、字符串“abc\103\\bcd”的长度(字符数)是【1】. 2-3、字符串“1\\t\x43\abx44”的长度(字符数)是【1】. 2-4、“a“在内存中占【1】个字节. 2-5、‘a’在内存中占【1】个字节. 2-6、“\71“在内存中占【1】个字节. 2-7、一维数组下标的最小值是【1】;数组char a[]=“china” ;在内存应占【1】个字节。 答案:8; 8; 9; 2;1;2 ;0;6. 3-1、设x=(5>1)+2, x的植为【1】. 3-2、表达式‘B’+15+‘\x41’+011+0x10的值是【1】. 3-3、表达式‘b’+5+‘\x42’+011+0x10的值是【1】. 答案:3;171;194; 4-1、假设所有变量都为整型,表达式(a=2,b=5,a>b?a++:b++,a+b)的值是【1】. 4-2、if(!a)中的表达式!a等价于【1】. 4_3、已知a=1,b=2,c=3,执行if(a>b>c) b=a;else b=c;a=4;b=8;后,b的值是【1】. 答案:8;a==0;8; 5-1、若所用变量都已定义,下列程序段的执行结果是【1】. for(i=1;i<=5;i++);printf(“OK\n”); 5-2、执行语句char s[3]=”ab”,*p;p=s;后,*(p+2)的值是【1】. 5-3、若有以下定义和语句:int a[4]={0,1,2,3},*p; p=&a[2]; ,则*--p的值是【1】. 5-4、下列程序的输出结果是【1】,main(){int a=011;printf(“%d\n”,++a);} 答案:OK;’\0’;1;10 6-1、若宏定义为:#define y(x) 2+x, 则表达式a=3*y(3)的值为【1】. 6-2、若宏定义为:#define y(x) 2+x, 则表达式a=4*y(2)的值为【1】. 6-3、若宏定义为:#define y(x) 2/x, 则表达式a=4+3*y(3)的值为【1】. 答案:9;10;6 . 二、单项选择题 1-1、若以"a+"方式打开一个已存在的文件,则以下叙述正确的是()。 A:文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作 B:文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作 C:文件打开时,原有文件内容被删除,只可作写操作 D:以上各种说法皆不正确 1-2、若执行fopen函数时发生错误,则函数的返回值是()。

C语言程序设计实验报告(数组)

C语言程序设计实验报告(数组) 1实验目的 (1)熟练掌握一维数组,二维数组的定义,初始化和输入、输出方法; (2)熟练掌握字符数组和字符串函数的使用; (3)掌握与数组有关的常用算法(查找、排序等)。 2实验内容 编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr(char str[])用于统计一个字符串的长度,并在主函数中调用。 要求: 1、不允许用strcat()和strlen()字符处理库函数; 2、在主函数以直接初始化的方式输入两个字符串str1和str2.调用函数 strlen()计算并返回两个字符串的长度; 3、调用函数catstr()连接两个字符串(将str2连接在str1后面); 4、调用函数lenstr()计算并返回连接后字符串的长度; 5、在主函数中输入两个原始的字符串及几个字符串的长度,以及处理后字 符串及其长度。

3算法描述流程图

4源程序 #include #include void catStr(char str1[],char str2[]) { int i,j; for (i=0;str1[i]!='\0';i++); for(j=0;str2[j]!='\0';j++) str1[i+j]=str2[j]; str1[i+j]='\0'; } lenStr(char m[] ) {int i;

for (i=0;m[i]!='\0';i++); printf("%d",i); } void main() {char s1[50]="forever",s2[50]="more"; printf("s1=%s,s2=%s",s1,s2); printf("\ns1的长度:"); lenStr(s1); printf("\ns2的长度:"); lenStr(s2); catStr(s1,s2); printf("\n连接后的字符:"); printf("%s\n",s1); printf("连接后字符的长度:"); lenStr(s1); printf("\n"); } 5测试数据 s1=forever, s2=more 6运行结果 7出现问题及解决方法 在输入程序时,少写了半边引号,调试时发现存在错误,找到了错误并加以改正。无论什么事,细心都是必不可少的,认真是解决问题的关键。 8实验心得 通过本次实验,对于函数的定义和声明,数组以及循环语句有了进一步的认识,掌握了字符数组和字符串函数的使用,以及与数组有关的常用算法。此次实验不是调用strlen()和strcat()函数,而是通过自己设计程序来进行字符串的连接以及计量字符串的长度,由此我学会了如何去理清自己的思路来设计程序。

C语言 数组 实验题目及答案

实验六数组程序设计 【实验目的】 1、掌握使用一维数组编程方法 2、掌握使用二维数组进行程序设计 【实验内容】 一、上机验证程序,并分析结果 要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。1、#include int main() { int a[ ]={1,2,3,4,5} , i, j, s=0 ; j = 1; for ( i = 4 ; i>=0 ; i--) { s = s+ a[i] * j ; j = j * 10 ; } printf(" s= %d \n" , s ); return 0; } 二、程序改错题 1.下面程序的功能,是从键盘输入一个数组(数组长度为10),查找数组中正数的个数。源代码如下,程序中存在错误,请将其改正。 #include int main()

{ int a(10);/*定义数组*/ int count,i;/* i循环变量 count 正数个数*/ for(i=0;i<=10;i++) {/*循环输入*/ scanf("%d",a[i]); } count=1; for(i=0;i<=10;i++) {/*查找正数*/ if(a(i)>0) count++; } printf("数组中正数有:%d个\n",count); return 0; } 三编写程序 1.编写程序要求输入30个学生的单科成绩,输出高于平均分的成绩。#include #define N 30 int main() { float score[N],sum=0,aver; int i; for(i=0;i<30;i++) { scanf("%f",&score[i]); sum=sum+score[i]; } aver=sum/30; printf("平均分为:%.2f\n",aver); for(i=0;iaver) printf("%.2f ",score[i]); printf("\n");

C语言练习3(数组)=参考答案

C语言(数组) 一、选择题 1. 设有程序: main() { int i,a[11]; printf("给数组赋值:\n"); for (i=0;i<=10;i++) scanf("%d",( )); ... ... printf("输出数组:\n"); for(i=0;i<=10;i++) printf("%d,",( )); } 则在程序中的两个园括号中分别应填入:C A) &a[i]和&a[i] B) a[i]和&a[i] C) &a[i]和a[i] D) a[i]和a[i] 2. 设已定义:int a[15]; 则数组a占用的内存单元数是( C ). A) 15 B) 16 C) 30 D) 32 3. 阅读程序: main() { int a[2]={0},i,j,k=2; for(i=0;i

return r; } main() { int x,a[]={2,3,4,5,6,7,8,9}; x=f(a,3); printf("%d\n",x); } 以上程序的输出结果是( D ). A) 720 B) 6 C)24 D) 120 5. 以下定义语句中,错误的是( B ). A) int a[ ] = {6,7,8}; B) int n=5, a[n]; C) char a[ ]= "string"; D) char a[5 ]={'0','1','2','3','4'}; 6. 以下描述中正确的是( D ). A) 数组名后面的常量表达式用一对圆括弧括起来 B) 数组下标从1开始 C) 数组下标的数据类型可以是整型或实型 D) 数组名的规定与变量名相同 7. 若定义数组并初始化char a[10]={'0','1 ','2','3','4','5','6','7','8','9'};指出以下错误语句( AB ). A) scanf("%c",a[0]); B) scanf("%s",&a); C) printf("%c",a[3]); D) printf("%s",a); 8.若定义数组int a[10] ,其最后一个数组元素为( C ). A) a[0] B) a[1] C) a[9] D) a[10] 9. 若定义数组并初始化int a[10]={ 1,2,3,4},以下语句哪一个不成立( B )? A) a[8] 的值为0 B) a[1] 的值为1 C) a[3] 的值为4 D) a[9] 的值为0 10. 指出以下错误语句( A ).

C语言数组练习及答案

第四部分数组 4. 1 选择题 1. 以下关于数组的描述正确的是(c ) 。 A. 数组的大小是固定的,但可以有不同的类型的数组元素 B. 数组的大小是可变的,但所有数组元素的类型必须相同 C. 数组的大小是固定的,所有数组元素的类型必须相同 D. 数组的大小是可变的,可以有不同的类型的数组元素 2. 以下对一维整型数组a的正确说明是(d )。 A. int a(10); B. int n=10,a[n]; C.int n; D. #define SIZE 10 scanf("%d",&n); int a[SIZE]; int a[n]; 3. 在C语言中,引用数组元素时,其数组下标的数据类型允许是(c)。 A. 整型常量 B. 整型表达式 C. 整型常量或整型表达式 D. 任何类型的表达式 4. 以下对一维数组m进行正确初始化的是(c )。 A. int m[10]=(0,0,0,0) ; B. int m[10]={ }; C. int m[ ]={0}; D. int m[10]={10*2}; 5. 若有定义:int bb[ 8] ;。则以下表达式中不能代表数组元bb[1] 的地址的是(c ) 。 A. &bb[0]+1 B. &bb[1] C. &bb[0]++ D. bb+1 6. 假定int 类型变量占用两个字节,其有定义:int x[10]={0,2,4}; ,则数组x 在内存中所占字节数是(d ) 。 A. 3 B. 6 C. 10 D. 20 7. 若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; 则数值为4的表达式是(d ) A. a[g-c] B. a[4] C. a['d'-'c'] D. a['d'-c] 8. 以下程序段给数组所有的元素输入数据,请选择正确答案填入(a ) #include main() { int a[10],i=0; while(i<10) scanf("%d",_______ ); }

C语言数组编程题

实验4 数组 一.实验目的: 1.掌握一维数组的定义、赋值和输入输出的方法; 2.掌握字符数组定义、初始化、赋值的方法; 3.了解常见的字符串函数功能及其使用方法; 4.掌握二维数组的定义与引用。 二.实验内容: 1.编写程序,输入10个整数存入一维数组,统计输出其中的正数、负数和零的个数。 2.编写程序,输入10个整数存入一维数组,再按逆序重新存放后再输出。 3.编写程序,输入10个整数存入一维数组,对其进行升序排序后输出。 4.编写程序,求二维数组中元素的最大值和最小值。 5.编写程序,求一个4×4矩阵中所有元素之和。 6.编写程序:从键盘上输入一字符串,统计输出该字符串中的字母字符、数字字符、空格以及其他字符的个数。 7.编写程序:从键盘上输入一字符串,并判断是否形成回文(即正序和逆序一样,如“abcd dcba”)。 8. 产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。 9. 产生一个由10个元素组成的一维数组,数组元素由随机数(0-99)构成。按照升序排列并输出。再输入一个数,按原来的规律将其插入并输出。 页脚内容1

10. 产生一个由10个元素组成的一维数组,数组元素由随机数(0-99)构成。按照升序排列并输出。再输入一个数,要求找出该数是数组中的第几个元素,如果不在数组中,则输出找不到。 11. 找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列最小。可能没有鞍点。 12. 编程输出杨辉三角。(要求输出10行)(杨辉三角:每行端点与结尾的数为1.每个数等于它上方两数之和。每行数字左右对称,由1开始逐渐变大) 13. 输入一行字符,统计大写字母、小写字母、数字、空格以及其它字符个数。 14. 编写程序,将两个字符串连接起来,不用strcat。 15. 编写程序实现strcpy函数功能。 16. 编程实现strlen函数功能。 17. 编程求2-4+6-8…-100+102的值。 18. 假设某人有100,000现金。每经过一次路口需要进行一次交费。交费规则为当他现金大于50,000时每次需要交5%如果现金小于等于50,000时每次交5,000。请写一程序计算此人可以经过多少次这个路口。 19. 输入若干个正整数,以0结束,将其中大于平均值且个位为5的数排序后输出。(按由大到小的顺序排序) 20. 输入一个字符串,将其中ASCII码值为基数的字符排序后输出。(按由小到大的顺序) 21. 输入一个以回车结束的字符串(少于80个字符),滤去所有的非16进制字符后,组成一个新字符串(16进制形式),然后将其转换为10进制数后输出。 22. 读入一个正整数n(1<=n<=6),再读入n阶矩阵,计算该矩阵除副对角线、最后一行、最后一列 页脚内容2

C语言数组作业编程题答案

1、请先用记事本创建文件original.txt,往其中写入一组已排好序的整型数,今输入一个整数,要求按原来排序的规律将它插入数中,仍写入文件。例如:原来整数依次为4、6、8、41、56、77、102(数据间的分隔符为空格)。若将42插入数中,则插入后整数依次为4、6、8、41、4 2、56、77、102。 答案: #include #include void main() { int a[100]; int ijnumber; int n; FILE *fp; fp=fopen("e:\\C语言\\original.txt""r"); if(fp==NULL) { printf("open error"); exit(0); }

i=0; while(!feof(fp)) { fscanf(fp"%d"&a[i++]); fgetc(fp); } number=i-1; //number中存最后一个数据的下标 fclose(fp); scanf("%d"&n); //以下的while循环用来找n要放的位置循环结束时正好是a[i]的位置i=0; while(n>a[i]) { i++; } //for循环的功能是将a[i]到最后一个元素全后移一个位置 for(j=number;j>=i;j--) a[j+1]=a[j]; //将n放入找到的位置

a[i]=n; number=number+1; //加入n后,元素个数增1,用来控制向文件中的写入次数 fp=fopen("e:\\C语言\\original.txt""w"); if(fp==NULL) { printf("open error"); exit(0); } //写入数据 for(i=0;i<=number-1;i++) fprintf(fp"%d "a[i]); fprintf(fp"%d"a[i]); //最后一个数据后没有空格 fclose(fp); } 2、假定整型数组中的元素值不重复。今输入一个整数,先查找,如数组中存在此元素,则删除,否则不做操作。例如:原来数组的元素依次为14、6、28、41、96、77、89、102。若将96删除,则删除后数组元素依次为14、6、28、41、77、89、102。 答案:

c语言数组典型试题设计含答案

一.选择题(2*20) 【题1】在C 语言中,引用数组元素时,其数组下标的数据类型允许是。A)整型常量B)整型表达式 C)整型常量或整型表达式D)任何类型的表达式 【题2】以下对一维整型数组a 的正确说明是。 A)int a(10); B)int n=10,a[n]; C)int n; D)#define SIZE 10 scanf(“%d”,&n); int a[SIZE]; int a[n]; 【题3】若有说明:int a[10];则对a 数组元素的正确引用是。 A)a[10] B)a[3.5] C)a(5) D)a[10-10] 【题4】在C 语言中,一维数组的定义方式为:类型说明符数组名; A)[整型常量表达式] B)[整型表达式] C)[整型常量] 或[整型表达式] D)[常量] 【题5】以下能对一维数组a 进行正确初始化的语句是。 A)int a[10]=(0,0,0,0,0); B)int a[10]={}; C)int a[]={0}; D)int a[10]=”10*1”; 【题6】以下对二维数组a 的正确说明是。 A)int a[3][]; B)float a(3,4); C)double a[1][4]; D)float a(3)(4); 【题7】若有说明:int a[3][4];则对a 数组元素的正确引用是。 A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1) 【题8】若有说明:int a[3][4];则对a 数组元素的非法引用是。 A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4] 【题9】以下能对二维数组a 进行正确初始化的语句是。 A)int a[2][]={{1,0,1},{5,2,3}}; B)int a[][3]={{1,2,3},{4,5,6}}; C)int a[2][4]={{1,2,3},{4,5},{6}}; D)int a[][3]={{1,0,1},{},{1,1}}; 【题10】以下不能对二维数组a 进行正确初始化的语句是。 A)int a[2][3]={0}; B)int a[][3]={{1,2},{0}}; C)int a[2][3]={{1,2},{3,4},{5,6}}; D)int a[][3]={1,2,3,4,5,6};

C语言综合习题及答案

C语言综合习题及答案 Prepared on 24 November 2020

C语言练习题 一、选择题 1. 一个完整的C源程序是【B 】。 A)要由一个主函数或一个以上的非主函数构成 B)由一个且仅由一个主函数和零个以上的非主函数构成 C)要由一个主函数和一个以上的非主函数构成 D)由一个且只有一个主函数或多个非主函数构成 2. 以下关于函数的叙述中正确的是【C】。 A)C语言程序将从源程序中第一个函数开始执行 B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束 D)main可作为用户标识符,用以定义任意一个函数 3. 以下关于函数的叙述中不正确的是【B】。 A)C程序是函数的集合,包括标准库函数和用户自定义函数 B)在C语言程序中,被调用的函数必须在main函数中定义 C)在C语言程序中,函数的定义不能嵌套 D)在C语言程序中,函数的调用可以嵌套 4. 在一个C程序中,【B 】。 A)main函数必须出现在所有函数之前 B)main函数可以在任何地方出现 C)main函数必须出现在所有函数之后 D)main函数必须出现在固定位置 程序的执行是从【A 】开始的。 A)主函数 B)子函数 C)从程序第一行 D)printf()函数 6.以下选项中不合法的标识符是【C 】 A)print B)FOR C)&a D)_00 7.以下选项中可作为C语言合法常量的是【A】 A)-80 B)-080 C) D) 8.以下选项中不属于字符常量的是【B】 A)′C′ B)"C" C)′\xCC′ D) ′\072′ 9. 若在C语言中未说明函数的类型,则系统默认该函数的数据类型是【C】

C语言数组典型例题分析与解答

数组练习解答 1 定义一个名为a的单精度实型一维数组,长度为4,所有元素的初值均为0的数定义语句是________________ 【分析】按照一般数据定义语句的格式,可以直接写出方法一(参看答案);考虑到所有元素均赋初值时可以省略数组长度,可以写出方法二(参看答案);考虑到不省略数组长度,给部分元素赋初值时,所有未赋初值的元素均有空值(对数值型数组来说,初值为0),可以写出方法三(参看答案);考虑到选用静态型,不赋初值所有元素也自动赋予。空值(对数值型数组来说,初值为0),可以写出方法四(参看答案)。 【答案】方法一:float a[4]={0.0,0.0,0.0,0.0}; 方法二:float a[]={ 0.0,0.0,0.0,0.0}; 方法三:float a[4]= {0.0}; 方法四:static float [4]; 2 下列数组定义语句中,错误的是() ①char x[1]='a';②auto char x[1]={0}; ③static char x[l];④char x[l]; 【分析】显然答案①中给字符型数组赋初值的格式不对(不能直接赋予字符常量,必须用花括号括住),所以备选答案①是符合题意的答案。 【答案】① 3 用"冒泡排序法"对n个数据排序,需要进行n一1 步。其中第k步的任务是:自下而上,相邻两数比较,小者调上;该操作反复执行n-k次。现在假设有4个数据:4、l、3、2要排序,假定4为上、2为下,则利用"冒泡排序法"执行第2步后的结果是_________________。【分析】开始排序前的排列执行第1步后的排列执行第2步后的排列 41 1 14 2 32 4 23 3 【答案】l、2、4、3 4 用"选择排序法"对n个数据排序,需要进行n-1步。其中第k步的任务是:在第k个数据到第n个数据中寻找最小数,和第k个数据交换。现在假设有4个数据:4、1、3、2要排序,则利用"冒泡排序法"执行第2步后的结果是______________________。 【分析】开始排序前的排列为:413 2 执行第1步后的排列为:143 2 执行第2步后的排列为:123 4 【答案】1、2、3、4 5 下列数组定义语句中,正确的是() ①int a[][]={1,2,3,4,5,6};②char a[2]「3]='a','b'; ③int a[][3]= {1,2,3,4,5,6};④static int a[][]={{1,2,3},{4,5,6}}; 【分析】C语言规定,二维数组定义时不允许省略第二维的长度,所以备选答案①④是错误的。C语言还规定,定义字符型数组时不允许直接使用"字符常量"的方式赋初值,所以备选答案②也是错误的。显然备选答案③符合题意。【答案】③ 6 定义一个名为"s"的字符型数组,并且赋初值为字符串"123"的错误语句是() ①char s[]={‘1','2','3','\0 '};②char s「」={"123"}; ③char s[]={"123\n"};④char s[4]={'1','2','3'};

C语言数组练习及答案

第四部分数组 4.1 选择题 1. 以下关于数组的描述正确的是(c )。 A. 数组的大小是固定的,但可以有不同的类型的数组元素 B. 数组的大小是可变的,但所有数组元素的类型必须相同 C. 数组的大小是固定的,所有数组元素的类型必须相同 D. 数组的大小是可变的,可以有不同的类型的数组元素 2. 以下对一维整型数组a的正确说明是(d )。 A.int a(10); B. int n=10,a[n]; C.int n; D. #define SIZE 10 scanf("%d",&n); int a[SIZE]; int a[n]; 3. 在C语言中,引用数组元素时,其数组下标的数据类型允许是(c )。 A. 整型常量 B. 整型表达式 C. 整型常量或整型表达式 D. 任何类型的表达式 4. 以下对一维数组m进行正确初始化的是(c )。 A. int m[10]=(0,0,0,0) ; B. int m[10]={ }; C. int m[ ]={0}; D. int m[10]={10*2}; 5. 若有定义:int bb[ 8];。则以下表达式中不能代表数组元bb[1]的地址的是(c )。 A. &bb[0]+1 B. &bb[1] C. &bb[0]++ D. bb+1 6. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在存中所占字节数是(d )。 A. 3 B. 6 C. 10 D. 20 7. 若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; 则数值为4的表达式是(d ) A. a[g-c] B. a[4] C. a['d'-'c'] D. a['d'-c] 8. 以下程序段给数组所有的元素输入数据,请选择正确答案填入(a )。 #include main() { int a[10],i=0; while(i<10) scanf("%d",________ ); ┇ }

计算机二级c语言第九章 数组和指针习题与答案

第九章数组和指针 1、有以下程序 main() { int a[]={2,4,6,8,10}, y=0, x, *p; p=&a[1]; for(x= 1; x< 3; x++) y += p[x]; printf("%d\n",y); } 程序运行后的输出结果是 A)10 B)11 C)14 D)15 2、有以下程序 void sum(int a[]) { a[0] = a[-1]+a[1]; } main() { int a[10]={1,2,3,4,5,6,7,8,9,10}; sum(&a[2]); printf("%d\n", a[2]); } 程序运行后的输出结果是 A)6 B)7 C)5 D)8 3、有以下程序 main() { int p[8]={11,12,13,14,15,16,17,18},i=0,j=0; while(i++< 7) if(p[i]%2) j+=p[i]; printf("%d\n",j); } 程序运行后的输出结果是 A)42 B)45 C)56 D)60 4、设有定义语句 int x[6]={2,4,6,8,5,7},*p=x,i; 要求依次输出x数组6个元素中的值,不能完成此操作的语句是 A)for(i=0;i<6;i++) printf("%2d",*(p++)); B)for(i=0;i<6;i++) printf("%2d",*(p+i)); C)for(i=0;i<6;i++) printf("%2d",*p++); D)for(i=0;i<6;i++) printf("%2d",(*p)++); 5、有以下程序 #include < stdio.h > main() { int a[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL; *q=*(p+5); printf("%d %d\n",*p,*q); } 程序运行后的输出结果是 A)运行后报错 B)6 6 C)6 11 D)5 10

广技师C语言复习题5.练习(数组)(有答案)

一、选择题 1. 以下对一维整型数组a的正确说明是。 A.int a(10); B.int n=10, a[n]; C.int n; scanf(“%d”,&n); int a[n]; D.#define SIZE 10 int a[SIZE] 2. 若有说明:int a[10]; ,则对a数组元素的正确引用是。A.a[10] B.a[ 3.5] C.a(5) D.a[10-10] 4. 以下对二维数组a的正确说明是。 A.int a[3][ ]; B.float a(3,4); C.double a[ ][4]; D.float a(3)(4); 5. 若有说明:int a[3][4]; 则对a数组元素的正确引用是。A.a[3][4] B.a[1, 3] C.a[1+1][0] D.a(2)(1) 6. 以下能对二维数组a进行正确初始化的语句是。A.int a[2][ ]={{1, 0, 1}, {5, 2, 3}}; B.int a[ ][3]={{1,2,3},{4,5,6}}; C.int a[2][4]={{1,2,3},{4,5},{6}}; D.int a[ ][3]={{1,0,1,0},{ },{1,1}}; 7. 下面程序段(每行代码前面的数字表示行号)。 1 int a[3]={3*0}; 2 int i 3 for(i=0; i<3; i++) scanf(“%d”,&a[i]);

4 for(i=1; i<3; i++) a[0]=a[0]+a[i]; 5 printf(“%d\n”,a[0]); A.第1行有错误B.第5行有错误 C.第3行有错误D.没有错误 8. 若有定义float x[4]={1.3, 2.4, 5.6},y=6; 则错误的语句是。A.y=x[3]; B.y=x+1; C.y=x[2]+1 D.x[0]=y; 9. 定义如下变量和数组: int k; int a[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是。 for(k=0; k<3; k++) printf(“%d”,a[k][2-k]); A.3 5 7 B.3 6 9 C.1 5 9 D.1 4 7 11. 下面是对数组s的初始化,其中错误的语句是。 A.char s[5]={“abc”}; B.char s[5]={‘a’, ‘b’, ‘c’}; C.char s[5]= “”; D.char s[5]= “abcde”; 12. 下面程序段的运行结果是。(□表示1个空格) char c[5]={'a','b','\0','c','\0'}; printf("%s",c); A.'a''b' B.ab C.ab□c D.ab□ 13. 有两个字符数组a、b,则以下正确的输入格式是。 A.gets(a,b); B.scanf(“%s%s”,a,b); C.scanf(“%s%s”,&a,&b); D.gets(“a”),gets(“b”);

C语言数组练习及答案

C语言数组练习及答案集团文件版本号:(M928-T898-M248-WU2669-I2896-

第四部分数组 4.1 选择题 1. 以下关于数组的描述正确的是(c )。 A. 数组的大小是固定的,但可以有不同的类型的数组元素 B. 数组的大小是可变的,但所有数组元素的类型必须相同 C. 数组的大小是固定的,所有数组元素的类型必须相同 D. 数组的大小是可变的,可以有不同的类型的数组元素 2. 以下对一维整型数组a的正确说明是(d )。 A.int a(10); B. int n=10,a[n]; C.int n; D. #define SIZE 10 scanf("%d",&n); int a[SIZE]; int a[n]; 3. 在C语言中,引用数组元素时,其数组下标的数据类型允许是(c )。 A. 整型常量 B. 整型表达式 C. 整型常量或整型表达式 D. 任何类型的表达式 4. 以下对一维数组m进行正确初始化的是(c )。 A. int m[10]=(0,0,0,0) ; B. int m[10]={ }; C. int m[ ]={0}; D. int m[10]={10*2}; 5. 若有定义:int bb[ 8];。则以下表达式中不能代表数组元bb[1]的地址的是(c )。 A. &bb[0]+1 B. &bb[1] C. &bb[0]++ D. bb+1 6. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是(d )。 A. 3 B. 6 C. 10 D. 20 7. 若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g;

大学C语言考试题(含答案)

大学C语言考试题(含答案) 姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔 细地完成这张试题吧。加油! 一单项选择题 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串 选项B,C,分别用{}和’’标识字符串 选项D,标识字符。 3、以下说法中正确的是( C )。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分

4.下列关于C语言的说法错误的是( B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是( C )。 A.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是( B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是( C )。 A) %x B) a+b C) a123 D) 123 8、下列四组字符串中都可以用作C语言程序中的标识符的是( A )。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括( D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。 A)2.5 B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"a

C语言必背的典型程序设计题目-数组函数答案

数组部分必须会编写的程序(参考答案)1、使用选择法、冒泡法对10个数进行排序,并输出排序前后的数列。 //选择法 #include void main() { int a[10]={12,45,7,8,96,4,10,48,2,46},n=10,i,j,t,temp; printf("Before sort:"); for(i=0;i<10;i++) { printf("%4d",a[i]); } printf("\n"); //排序 for(i=0;i<9;i++) { t=i; for(j=i+1;j<10;j++) { if(a[t]>a[j]) { t=j; } } if(t!=i) { temp=a[i]; a[i]=a[t];a[t]=temp; } } printf("Aftere sorted:"); for(i=0;i<10;i++) { printf("%4d",a[i]); } printf("\n"); } //冒泡法 #include void main() { int a[10]={12,45,7,8,96,4,10,48,2,46},n=10,I,j,t; printf(“Before sort:”); for(i=0;i<10;i++) { printf("%4d",a[i]); } prtintf(“\n”); //排序 for(i=0;i<=n-1;i++) { for(j=0;ja[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;} } printf(“Aftere sorted:”); for(i=0;i<10;i++)

C语言程序设计数组(说课稿)

C语言程序设计——数组(说课稿) 南京浦口中等专业学校—陈松一、课程目标 《C语言程序设计》是中职对口单招计算机专业理论考试和技能考试中一门重要的课程。要求学生掌握计算机编程语言的基本知识,初步掌握程序设计的基本思想,具有基本的C程序设计能力,能比较熟练地阅读、理解和编制简单的C程序。 二、学情分析 本课程是针对综合高中对口单招班高二年级计算机专业的学生,学生已学习了计算机基础和计算机原理课程,对专业知识有了一定的了解。但班级学生参差不齐,不少学生学习习惯较差,基础较薄弱。教师必须首先弄清学生对专业课学习的障碍及原因,再根据教学原理制定出相应的对策,培养学生学习的积极,提高解决实际问题的能力。 三、教材与参考书 本课程使用的教材是《C语言编程基础》(第2版)电子工业出版社。此教材分为两部分,第一部分是基础知识模块,第二部分是选用模块。对口单招学生只学习第一部分内容,第二部分内容单招计算机专业的考纲中是不要求的。 辅导练习: 1、C语言阶段综合测试卷集。 2、自己编写的每次课的学生工作页。

四、教材分析 1、单元内容 数组单元是C语言的一个重要章节,本单元教学内容有: (1)一维数组的定义、引用和初始化、一维数组应用。 (2)二维数组的定义、引用和初始化、二维数组应用。 (3)字符串与字符数组、字符串的输入输出、字符串处理函数、字符数组应用。 2、单元设计 (1)本单元每次课都编写了学生工作页,让学生根据任务去学习本单元内容。 (2)本单元加强了上机实习的课时数,着重培养学生上机实践能力,提高他们的程序设计能力。

3、教学目标 ?知识目标: (1)了解一维数组、二维数值型数组的定义和使用方法。 (2)掌握对数组的初始化。 (3)掌握字符串的输入、输出和处理。 (4)熟练掌握使用数组进行程序设计的方法。 (5)理解程序设计中的几种常见算法的基本思路。 ?技能目标: (1)学生能正确的定义数组;能正确的引用数组和初始化数组;能使用数组进行程序设计。 (2)培养学生的分析、思考能力,提高解决问题的能力。 ?情感目标: (1)通过上机实习调试程序,在学习中培养学生理论联系实际,使学生对编程更加感兴趣。 (2)培养学生认真学习的态度,激发学生学习C语言的兴趣。 4、单元重、难点 ?重点: 数组的定义、引用和初始化。 ?难点: 数组的应用及常见算法的基本思路。

C语言程序设计实验报告-数组

一、实验项目名称 数组 二、实验目的 1.掌握数组的基本概念,包括:数组的定义、数组的类型、数组的初始化、数组的赋值、数组元素下标的范围、数组元素的正确以及引用数组元素的输入/输出。 2.掌握字符数组与字符串的使用方法。理解字符数组与其它数组的区别、理解字符串及其特点。掌握常用的字符串处理库函数的用法并清楚对字符串的简单处理。 3.掌握与数组相关的算法,包括排序算法和查找算法等。 三、实验内容 进行有关数组的程序设计。 具体内容: 1.编程实现:对任意一个一维数组,从中找出数组元素的最大值和最小值。 要求: (1)数组为整型数组(10个元素)。 (2)使用scanf函数实现数组元素的输入。在输入前给出必要的提示。 (3)输出时给出必要的说明,首先输出原始的10个元素,换行后输出最大值以及最大值在数组中的位置、最小值以及最小值在数组中的位置。 (4)如果现改为20个元素的数组,怎样修改程序?修改程序后,运行程序进行检查。如果需要数组元素不断改变,应怎样修改程序? 2.编程实现:在给定的字符串中查找满足条件的第一个字符。 要求: (1)字符串采用初始化的方式处理。 (2)通过scanf函数读入一个任意字符。 (3)在字符串中查找该字符,如果存在该字符,输出该字符在字符串中的位置以及相应的说明。如果不存在该字符,则要给出相应的信息。 3.编程实现:首先任意输入一个大于2且小于10的整数n,再输入一个由n决定的二维整型数组(n ?n),形成n ?n阶矩阵,将矩阵中最大元素所在的行和最小元素所在的行对调后,再输出该矩阵(注意:数组不允许动态定义)。 例如:原始数据:n=4 结果数据: 1 2 3 4 8 11 14 16 3 5 9 10 3 5 9 10 8 11 14 16 1 2 3 4 15 2 7 6 15 2 7 6 要求: (1)本题中所涉及到的循环都采用for语句。 (2)在输入/输出时进行必要的说明。

相关文档
相关文档 最新文档