收藏 分销(赏)

C语言上机题库百科园第5章南信大.doc

上传人:快乐****生活 文档编号:4314061 上传时间:2024-09-05 格式:DOC 页数:26 大小:121.01KB 下载积分:10 金币
下载 相关 举报
C语言上机题库百科园第5章南信大.doc_第1页
第1页 / 共26页
C语言上机题库百科园第5章南信大.doc_第2页
第2页 / 共26页


点击查看更多>>
资源描述
第五章 单选 有以下程序,程序运行后的输出结果是( ) #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; } A.ABCDE\0FG\0IJK B.ABCDIJK C.EFGIJK D.IJK 有以下程序,程序运行后的输出结果是 ( ) #include<stdio.h> int main()   { char s[]="012xy\08s34f4w2";    int i, n=0;    for(i=0;s[i]!=0;i++)    if(s[i]>='0'&&s[i]<='9') n++;    printf("%d\n",n); return 0;   } A.7 B.0 C.8 D.3 下列选项中,能够满足"若字符串s1等于字符串s2,则执行ST"要求的是 ( ) A.if(strcmp(s2,s1)==0)ST; B.if(s1-s2==0)ST; C.if(strcpy(s1,s2)==1)ST; D.if(s1==s2)ST; 以下选项中正确的语句组是( ) A.char s;s={"BOOK!"}; B.char s[];s="BOOK!"; C.char s[10];s="BOOK!"; D.char s[]="BOOK!"; 以下数组定义中错误的是( ) A.int x[2][3]={{1,2},{3,4},{5,6}}; B.int x[2][3]={1,2,3,4,5,6}; C.int x[][3]={0}; D.int x[][3]={{1,2,3},{4,5,6}}; 若有定义语句:int m[]={5,4,3,2,1},i=4;则下面对m数组元素的引用中错误的是 () A.m[m[0]] B.m[2*2] C.m[--i] D.m[m[i]] 下列选项中,能正确定义数组的语句是( ) A.int num[]; B.int N=2008; int num[N]; C.int num[0…2008]; D.#define N 2008 int num[N]; 有以下程序,程序运行时若输入:how are you? I am fine<回车>则输出结果是( ) #include<stdio.h> int main() { char a[30],b[30]; scanf("%s",a); gets(b); printf("%s\n %s\n",a,b); return 0; } A.how are you? I am fine B.how are you? I am fine C.how are you?I am fine D.how are you? 下面是有关C语言字符数组的描述,其中错误的是( ) A.不可以用赋值语句给字符数组名赋字符串 B.可以用输入语句把字符串整体输入给字符数组 C.字符数组中的内容不一定是字符串 D.字符数组只能存放字符串 有以下程序,程序运行后的输出结果是( ) #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; } A.7 0 B.6 1 C.7 1 D.6 3 若要定义一个具有5个元素的整型数组,以下错误的定义语句是( ) A.int a[5]={0}; B.int b[]={0,0,0,0,0}; C.int i=5,d[i]; D.int c[2+3]; 有以下程序,程序运行后的输出结果是 ( ) #include<stdio.h> #include<string.h> int main() { char a[5][10]={“china”,”beijing”,”you”,”tiananmen”,”welcome”}; int i,j; char t[10]; for(i=0;i<4;i++) for(j=i+1;j<5;j++) if(strcmp(a[i],a[j])>0) { strcpy(t,a[i]); strcpy(a[i],a[j]); strcpy(a[i],t);} puts(a[3]); return 0; } A.china B.beijing C.welcome D.tiananmen 程序设计 /*编写函数int fun(int lim, int aa[MAX]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中, 该函数返回所求出的素数的个数。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include<stdio.h> #include<stdlib.h> #define MAX 100 int fun(int lim, int aa[MAX]) { /**********Begin**********/ /**********End**********/ } int main() { FILE *wf; int limit,i,sum; int aa[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]); } /******************************/ wf=fopen("debug\\2.out","w"); sum=fun(15,aa); for(i=0;i<sum;i++) fprintf(wf,"%d\n",aa[i]); fclose(wf); /*****************************/ return 0; } 【参考代码】 int i,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; /*请编写函数fun,函数的功能是:求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。 例如,若二维数组中的值为 1 3 5 7 9 2 9 9 9 4 6 9 9 9 8 1 3 5 7 0 则函数值为61。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:*/ #include<stdio.h> #include<stdlib.h> #define M 4 #define N 5 int fun( int a [M][N]) { /***************Begin************/ /*************** End ************/ } void main() { FILE *wf; int aa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,10}}; int i, j, y; printf ("The original data is :\n "); for(i=0; i<M;i++) {for (j=0; j<N;j++) printf("%6d ",aa[i][j]); printf("\n "); } y=fun(aa); printf("\nThe sun: %d\n ",y); printf("\n "); /******************************/ wf=fopen("debug\\out10.dat","w"); fprintf (wf,"%d",y); fclose(wf); /*****************************/ } 【参考代码】 int i,j,sum=0; for(i=0;i<M;i++) for(j=0;j<N;j++) if(i==0||i==M-1||j==0||j==N-1) sum=sum+a[i][j]; return sum; /*编写一个函数,从传入的num个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:*/ #include<stdio.h> #include<string.h> #include<stdlib.h> void fun(char a[][81], int num, char max[]) { /***************Begin************/ /*************** End ************/ } void main() { FILE *wf; char ss[10][81],ps[81]; char s[3][81]={"abcd","deg","diegns"},p[81]; int i=0,n; printf("输入若干个字符串:"); gets(ss[i]); puts(ss[i]); while(!strcmp(ss[i], "****")==0) /*用4个星号作为结束输入的标志*/ { i++; gets(ss[i]); puts(ss[i]); } n=i; fun(ss,n,ps); printf("\nmax=%s\n",ps); /******************************/ wf=fopen("debug\\out15.dat","w"); fun(s,3,p); fprintf(wf,"%s",p); fclose(wf); /*****************************/ } 【参考代码】 int i=0; strcpy(max,a[0]); /*找出最长的一个字符串*/ for(i=0;i<num;i++) if(strlen(max)<strlen(a[i])) strcpy(max,a[i]); /*请编写一个函数fun,它的功能是:求出1到m(含m)之内能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。 例如,若传给m的值为50,则程序输出: 7 11 14 21 22 28 33 35 42 44 49 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include<stdio.h> #include<stdlib.h> #define M 100 int fun(int m, int a[]) { /***************Begin************/ /*************** End ************/ } void main() { FILE *wf; int aa[M],n,k; n=fun(50,aa); for(k=0;k<n;k++) if((k+1)%20==0) /*每行输出20个数*/ {printf("%4d",aa[k]); printf("\n"); } else printf("%4d",aa[k]); printf("\n"); /******************************/ wf=fopen("debug\\out4.dat","w"); for(k=0;k<n;k++) fprintf(wf,"%d\n",aa[k]); fclose(wf); /*****************************/ } 【参考代码】 int i,j=0; for(i=1;i<=m;i++) if(i%7==0||i%11==0) a[j++]=i; return j; /*返回这些数的个数*/ /*请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转为整数的函数)。 例如,若输入字符串"-1234",则函数把它转换为整数值-1234。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:*/ #include <stdio.h> #include <string.h> long fun(char p[]) { /***************Begin************/ /*************** End ************/ } void main() { FILE *wf; char s[6]; long n; printf("Enter a string:\n"); gets(s); n=fun(s); printf("%ld\n",n); /******************************/ wf=fopen("debug\\out13.dat","w"); fprintf (wf,"%ld",fun("-1234")); fclose(wf); /*****************************/ } 【参考代码】 long n=0,i=0; int flag=1; if(p[i]=='-') /*负数时置flag为-1*/ {i++;flag= -1;} else if(p[i]=='+') /*正数时置flag为1*/ i++; while(p[i]!='\0') { n=n*10+p[i]-'0';/*将字符串转成相应的整数*/ i++; } return n*flag; /*请编写一个函数void fun(char ss[]),其功能是:将字符串ss中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。 例如,若输入abc4EFg,则应输出aBc4EFg。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:*/ #include <stdio.h> #include <string.h> void fun ( char ss[]) { /***************Begin************/ /*************** End ************/ } void main() { char tt[100]; FILE *out,*in; printf("Please enter an character string within 50 characters:\n"); gets(tt); printf("\n\nAfter changing,the string\n%s",tt); fun(tt); printf("\nbecomes\n %s",tt); /******************************/ in=fopen("in.dat","r"); out=fopen("debug\\out14.dat","w"); fgets(tt,16,in); strcat(tt,"After changing the string"); fun(tt); fprintf(out,"%s",tt); fclose(in); fclose(out); /******************************/ } 【参考代码】 int i,n=0; while(ss[i]) { n++; i++; } for(i=0;i<n;i++) if((ss[i]>='a'&&ss[i]<='z')&&i%2!=0) /*将下标为奇数位置的字母转换成大写*/ ss[i]=ss[i]-32; ss[i]='\0'; /*编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。 例如,分别输入下面两个字符串: FirstString SecondString 则程序输出:FirstStringSecondString 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:*/ #include<stdio.h> #include<stdlib.h> void fun(char p1[],char p2[]) { /***************Begin************/ /*************** End ************/ } void main() { FILE *wf,*in; char s1[80],s2[40]; char p1[80]="FirstString",p2[40]="SecondString"; printf("Enter s1 and s2:\n") ; scanf("%s%s",s1,s2); printf("s1=%s\n",s1); printf("s2=%s\n",s2); printf("Invoke fun(s1,s2):\n"); fun(s1,s2); printf("After invoking:\n"); printf("%s\n",s1); /******************************/ in=fopen("in.dat","r"); wf=fopen("debug\\out16.dat","w"); fscanf(in,"%s %s",p1,p2); fun(p1,p2); fprintf(wf,"%s",p1); fclose(in); fclose(wf); /*****************************/ } 【参考代码】 int i,j; for(i=0;p1[i]!='\0';i++); for(j=0;p2[j]!= '\0';j++) p1[i++]=p2[j]; p1[i]= '\0'; /*请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。 例如,输入17,则应输出4 6 8 9 10 12 14 15 16。 注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include<stdio.h> #include<stdlib.h> int fun(int m, int xx[]) { /***************Begin************/ /*************** End ************/ } void main() { FILE *wf; 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("debug\\out7.dat","w"); m=fun(30,zz); for(n=0;n<m;n++) fprintf(wf,"%d\n",zz[n]); fclose(wf); /*****************************/ } 【参考代码】 int i,j,n=0; for(i=4;i<m;i++) /*找出大于1小于整数m的非素数*/ {for(j=2;j<i;j++) if(i%j==0) break; if(j<i)xx[n++]=i; } return n; /*返回非素数的个数*/ /*请编写一个函数 void fun(char tt[],int pp[]),统计在tt字符串中"a"到"z"26个字母各自出现的次数, 并依次放在pp所指数组中。例如,当输入字符串abcdefghabcdeabc后, 程序的输出结果应该是:3 3 3 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:*/ #include <stdio.h> #include <stdlib.h> void fun(char tt[],int pp[] ) { /***************Begin************/ /*************** End ************/ } void main( ) { FILE *wf; char aa[1000]; int bb[26], k; system("CLS"); printf("\nPlease enter a char string : ") ; scanf("%s",aa); fun(aa,bb); for (k=0 ;k<26 ; k++) printf("%d\n",bb[k]) ; /******************************/ wf=fopen("debug\\out2.dat","w"); fun ("abcdefgabcdeabc",bb) ; for (k=0 ;k<26 ; k++) fprintf(wf,"%d\n",bb[k]) ; fclose(wf); /*****************************/ } 【参考代码】 int i; for(i=0;i<26;i++) pp[i]=0; i=0; for(;tt[i]!='\0';i++) if(tt[i]>='a'&&tt[i]<='z') pp[tt[i]-'a']++; 程序改错 /*下列给定程序中,函数fun的功能是:删除字符串s中所有空白字符(包括Tab符、回车符及换行符)。输入字符串时用"#"结束输入。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:*/ #include <string.h> #include <stdio.h> #include <ctype.h> fun(char *p) { int i, t; char c[80]; for(i=0,t=0;p[i];i++) if(!isspace(*(p+i))) c[t++]=p[i]; /**********ERROR**********/ c[t]="\0"; strcpy(p,c); } void main() {char c,s[80]; int i=0; printf("Input a string: "); c=getchar(); while(c!='#') { s[i]=c;i++;c=getchar();} s[i]='\0'; fun(s); puts(s); } 【参考答案】 c[t]=0; c[t]='\0'; /*下列给定程序中,函数fun的功能是:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和 a[1] 中的数对调。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:*/ #include<stdio.h> #define N 20 /**********ERROR**********/ void fun(int a[],int n); { int i, m, t, k; for(i=0; i<n;i++) { /**********ERROR**********/ m=0; for(k=i+1; k<n; k++) if(a[k]>a[m]) m=k; t=a[i]; a[i]=a[m]; a[m]=t; } } void main() { int b[N]={11,5,12,0,3,6,9,7,10,8},n=10,i; for(i=0; i<n; i++) printf("%d ",b[i]); printf("\n"); fun(b,n); for(i=0; i<n; i++) printf("%d ", b[i]); printf("\n"); } 【参考答案】 void fun(int a[],int n) 【参考答案】 m=i; /*下列给定程序中,函数fun的功能是:先从键盘上输入一个3行、3列的矩阵的各个元素的值,然后输出主对角线元素之和。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:*/ #include <stdio.h> void fun() { int a[3][3],sum; int i,j; /**********ERROR**********/ sum=1; for (i=0;i<3;i++) { for (j=0;j<3;j++) /**********ERROR**********/ scanf("%d",a[i][j]); } for(i=0;i<3;i++) sum=sum+a[i][i]; printf("Sum=%d\n",sum); } void main() { fun(); } 【参考答案】 sum=0; 【参考答案】 scanf("%d",&a[i][j]); 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: */ #include <stdio.h> double fun(int x[]) { /**********ERROR**********/ int sum=0.0; int c=0, I=0; while(x[I]!=0) { if(x[I]>0) { sum+=x[I]; c++; } I++; } /**********ERROR**********/ sum=sum\c; return sum; } void main() { int x[1000]; int i=0; printf("\nPlease enter some data(end with 0) :"); do { scanf("%d",&x[i]); }while(x[i++]!=0); printf("%f\n",fun(x)); } 【参考答案】 double sum=0; double sum=0.0; float sum=0; float sum=0.0; 【参考答案】 sum=sum/c; sum/=c; 程序填空 /*请补充函数fun,该函数的功能是:求一维数组x[N]的平均值,并对所得结果进行四舍五入(保留两位小数)。 例如,当x[10]={15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0},结果为:avg=15.030000。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序: */ #include <stdlib.h> #include <stdio.h> double fun(double x[10]) { int i; long t; double avg=0.0; double sum=0.0; for(i=0;i<10;i++) /**********FILL**********/ [1] ; avg=sum/10; /**********FILL**********/ avg= [2] ; /**********FILL**********/ t= [3] ; avg=(double)t/100; return avg; } void main() { double avg,x[10]={15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0}; int i; printf("\nThe original data is :\n"); for(i=0;i<10;i++) printf("%6.1f",x[i]); printf("\n\n"); avg=fun(x); printf("average=%f\n\n",avg); } 【参考答案】 sum+=x[i]; sum=sum+x[i]; 【参考答案】 avg*1000; 1000*avg; 【参考答案】 (avg+5)/10 ; (5+avg)/10; /*请补充函数fun,该函数的功能是:整除x且是偶数的数,把这些数保存在数组bb中,并按从大到小的顺序输出。 例如当x=20时,依次输出:20 10 4 2。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。试题程序:*/ #include <stdio.h> void fun(int k,int bb[]) { int i; int j=0; /**********FILL**********/ for( [1] ;i<=k;i++) { /**********FILL**********/ if( [2] ) bb[j++]=i; } printf("\n\n"); /**********FILL**********/ for(i= [3] ;i>=0;i--) printf("%d ",bb[i]); } int main() { int k=1; int bb[100]; printf("\nPlease input X="); scanf("%d",&k); fun(k,bb); return 0; } 【参考答案】 k%i==0&&i%2==0 i%2==0&&k%i==0 (k%i
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服