C语言题库第5章 数组√
- 格式:docx
- 大小:97.53 KB
- 文档页数:21
第五章数组一、单项选择1.若要定义一个具有5个元素的整型数组,以下错误的定义语句是( C)2.下列选项中,能正确定义数组的语句是( D)3.下面是有关C语言字符数组的描述,其中错误的是( D)4.有以下程序,程序运行时若输入:how are you? I am fine<回车>则输出结果是( C)#include<stdio.h>int main(){ char a[30],b[30];scanf("%s",a);gets(b);printf("%s\n %s\n",a,b);return 0;}5.以下选项中正确的语句组是( D)6.若有定义语句:int m[]={5,4,3,2,1},i=4;则下面对m数组元素的引用中错误的是( A )7.以下数组定义中错误的是( A)8.下列选项中,能够满足"若字符串s1等于字符串s2,则执行ST"要求的是 ( A )9.有以下程序,程序运行后的输出结果是( C)#include <stdio.h>#include <string.h>int main(){char x[]="STRING";x[0]='0';x[1]='\0';x[2]=0;printf("%d %d\n",sizeof(x),strlen(x));return 0;10.有以下程序,程序运行后的输出结果是( B )#include <stdio.h>#include <string.h>int main(){char a[20]=”ABCD\0EFG\0”,b[]=”IJK”;strcat(a,b); printf(“%s\n”,a);return 0;二、程序设计1./* 编写程序,实现矩阵(3行3列)的转置(即行列互换)。
例如,输入下面的矩阵:100 200 300400 500 600700 800 900程序输出:100 400 700200 500 800300 600 900注意:部分源程序存在文件prog.c中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
*/#include <stdio.h>void fun(int array[3][3]){/********** Begin **********//********** End ***********/}NONO( ){/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。
*/inti,j;FILE *wf ,*in;int array[3][3]={{100,200,300},{400,500,600},{700,800,900}};in=fopen("a11.in","r");for(i=0;i<3;i++){ for(j=0;j<3;j++)fscanf(in,"%d",&array[i][j]);}wf = fopen("a11.out", "w") ;fun(array);for(i=0;i<3;i++){ for(j=0;j<3;j++)fprintf(wf,"%7d\n",array[i][j]);}fclose(wf) ;}int main(){inti,j;int array[3][3]={{100,200,300},{400,500,600},{700,800,900}};for (i=0;i<3;i++){ for (j=0;j<3;j++)printf("%7d",array[i][j]);printf("\n");}fun(array);printf("Converted array:\n");for(i=0;i<3;i++){ for(j=0;j<3;j++)printf("%7d",array[i][j]);printf("\n");}NONO( );return 0;}【参考代码】inti,j;int b[3][3];for (i=0;i<3;i++)for (j=0;j<3;j++)b[j][i]=array[i][j];===========================2./*请编写函数fun,其功能是:将所有大于1小于等于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。
例如,输入17,则应输出4 6 8 9 10 12 14 15 16。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:*/#include<conio.h>#include<math.h>#include<stdio.h>#include<stdlib.h>int fun(int m, int xx[]){/**********Begin*******//*********End*********/}int main(){FILE *wf,*in;int m, n, zz[100];printf("\nPlease enter an integer number between 10 and 100: ");scanf("%d",&n);m=fun(n,zz);printf("\n\nThere are %d non-prime numbers less than %d: ",m,n);for(n=0;n<m;n++)printf("\n %4d",zz[n]);/******************************/wf=fopen("1.out","w");in=fopen("1.in","r");fscanf(in,"%d",&n);m=fun(n,zz);for(n=0;n<m;n++)fprintf(wf,"%d\n",zz[n]);fclose(wf);fclose(in);/*****************************/return 0;}【参考代码】inti,j,n=0;for(i=4;i<=m;i++){for(j=2;j<i;j++)if(i%j==0) break;if(j<i)xx[n++]=i;}return n;===============3./*编写函数int fun(intlim, intaa[MAX]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求出的素数的个数。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序: */#include<stdio.h>#include<math.h>#include<stdlib.h>#define MAX 100int fun(intlim, intaa[MAX]){/*********Begin********//*********End*********/}int main(){FILE *wf,*in;intlimit,i,sum;intaa[MAX];printf("输入一个整数");scanf("%d",&limit);sum=fun(limit,aa);for(i=0;i<sum;i++){if(i%10==0&&i!=0) /*每行输出10个数*/printf("\n ");printf("%5d ",aa[i]);}/******************************/in=fopen("2.in","r");fscanf(in,"%d",&limit);wf=fopen("2.out","w");sum=fun(limit,aa);for(i=0;i<sum;i++){fprintf(wf,"%d\n",aa[i]);}fclose(wf);fclose(in);/*****************************/return 0;}【参考代码】inti,j,k=0;for(i=2;i<=lim;i++){for(j=2;j<i;j++)if(i%j==0) break;if(j>=i)aa[k++]=i;}return k;===============4./*请编写函数fun,该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从0到p(p<=n-1)的数组元素平移到数组的最后。
例如,一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,p的值为3。
移动后,一维数组中的内容应为5,6,7,8,9,10,11,12,13,14,15,1,2,3,4。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号注释语句中填入所编写的若干语句。
试题程序: */#include <stdio.h>#define N 80void fun(int w[], int p, int n){/************Begin**************//************End**************/}int main(){FILE *wf,*in;int a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};inti, p, n=15;printf("The original data:\n");for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\nEnter p: ");scanf("%d",&p);fun(a,p,n);printf("\nThe data after moving:\n");for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n");/******************************/in=fopen("in49.dat","r");wf=fopen("out49.dat","w");fscanf(in,"%d %d",&n,&p);for(i=0;i<n;i++)fscanf(in,"%d",&a[i]);for(i=0;i<n;i++)printf("%3d",a[i]);fun(a,p,n);for(i=0;i<n;i++)fprintf(wf,"%3d",a[i]);fclose(wf);fclose(in);/*****************************/return 0;}*【参考代码】int i,j=0,b[N];for(i=p+1;i<n;i++)b[j++]=w[i];for((i=0);i<=p;i++)b[j++]=w[i];for(i=0;i<n;i++)w[i]=b[i];===============5./*请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转为整数的函数)。