}
4. 程序的运行结果是_________ void fun(int a[ ],int n) { int I,j,t;
for(i=0;i if(a[i] { int aa[10]={1,2,3,4,5,6,7,8,9,10},i; fun(&&aa[2],6 ); for(i=0;i<10;i++)printf(“%d,”,aa[i]); printf(“\\n”); } 5. 程序的运行结果是_________ main() {int a[7]={11 ,13,14,15,16,17,18},i=0,k=0; while(i<7&&a[i]%2){k=k+a[i];i++;} printf(“%d\\n”,k); } if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/ for(i=0;i<4;i++)printf(“%d,”,a[i][j]); }程序运行后的输出结果是 A)1,6,5,7,B)8,7,3,1,C)4,7,5,2, D)1,6,2,1, 4. 有以下程序 main() {int a[4][4]={{1,4,3,2,},{8,6,5,7,},{3,7,2,5,},{4,8,6,1,}},i,k,t; for(i=0;i<3;i++) for(k=i+i;k<4;k++) if(a[i][i] for(i=0;i<4;i++)printf(“%d,”,a[0][i]); }程序运行后的输出结果是(B) A)6,2,1,1, B)6,4,3,2, C)1,1,2,6, D)2,3,4,6, 5. 若有定义语句:int a[3][6]; ,按在内存中的存放顺序, a数组的第10个元素是____ A)a[0][4] B)a[1][3] C)a[0][3] D)a[1][4] 练习二: 1. #include {int i,x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++)printf(“%d”,x[i][2-i]); } A 1,5,9 B 1,4,7 C 3,5,7 D 3,6,9 2.下面初始化正确的语句是________ 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}}; 3. 有以下程序 6.若有定义语句:int a[2][3],*p[3]; ,则以下语句中正确 的是 A)p=a; B)p[0]=a; C) p[0]=&a[1][2]; D)p[1]=&a; 7有以下程序 main() {int a[4][4]={{1,4,3,2,},{8,6,5,7,},{3,7,2,5,},{4,8,6,1,}},i,j,k,t; for(i=0;i<4;i++) for(j=0;j<3;j++) for(k=j+1;k<4;k++) if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/ for(i=0;i<4;i++)printf(“%d,”,a[i][j]); }程序运行后的输出结果是____ A)1,6,5,7,B)8,7,3,1,C)4,7,5,2, D)1,6,2,1, 8 有以下程序 main() 第 29 页 共 38 页 main() {int a[4][4]={{1,4,3,2,},{8,6,5,7,}, {3,7,2,5,},{4,8,6,1,} },i,j,k,t; for(i=0;i<4;i++) for(j=0;j<3;j++) for(k=j+1;k<4;k++) {int a[4][4]={{1,4,3,2,},{8,6,5,7,},{3,7,2,5,},{4,8,6,1,}},i,k,t; for(i=0;i<3;i++) for(k=i+i;k<4;k++) if(a[i][i] for(i=0;i<4;i++)printf(“%d,”,a[0][i]); }程序运行后的输出结果是() A)6,2,1,1, B)6,4,3,2, C)1,1,2,6, D)2,3,4,6, 9.若有定义:int a[3][4],不能表示数组元素a[1][1]的是________ A *(a[1]+1) B*(&a[1][1]) C (*(a+1)[1]) D*(a+5) {700,800,900}} 编写函数使数组a的行列倒置.a={ {100,400,700}, {200,500,800}, {300,600,900}} 6. 编写函数fun,功能是求出二维数组周边元素之和, 并通过函数返回到主函数中. 7.编写函数fun,使二维数组周边元素为0,二维数组在主函数内输入. 8.编写函数fun,求二维数组每列(行)中最大(小)的元素,把他放在指定的一维数组中. 第二部分:上机题 1.编写程序,定义一个含有30个元素的int 类型数组.依次给数组元素赋奇数,每行10个顺序输出,然后在逆序输出. 2编写程序:求指定整数m内所有的素数(或非素数),并把这些数存放在指定的数组a中. 3. 已知数组 a={1,9,7,2,3,8,4,5,6};编写函数fun(int a[ ][N],int n),他的功能是:是N*N的二维数组左下三角中的值乘以n; 4.编写函数fun(int *a);他的功能是将二维数组中的数据:w w w w s s s s s h h h h 第十章字符串 1.以下选项正确的是_____ char x[]=”12345”; char y={?1?,?2?,?3?,?4?,?5?}; A x数组和y数组长度相同 B x数组大于y数组长度 C x数组小于y数组长度 D x数组等价y数组 2.合法的数组说明语句: A int a[ ]=”string”,*p=a[]; B char *p=”hello”; C char a=”string” Dchar *a[ ]={“hello”}; 4. s1和s2已经指向两个字符串,若要求当s1所 指的字符串大于s2 所指的字符串,就执行语 句S,则下面正确的是: A if(s1>s2) S; Bif(strcmp(s1,s2))S; 转换为 w w w w s s s s s Cif(strcmp(s2,s1)>0)S; D if(strcmp(s1,s2)>0)S; h h h h 5. 下面程序运行的结果___ 5已知数组:a={ {100,200,300}, {400,500,600}, char a[ ]={?a?,?b?.?\\0?,?c?,?\\0?};printf(“%s”,c); 6. 说法正确的是__ A int a[]=”string”; B int a[5]={0,1,2,3,4,5}; 第 30 页 共 38 页 C char a=”string”; D char a[]={0,1,2,3,4,5} 7.main() { char str[][10]={“china”,”Beijing”},*p=str; printf(“%s\\n”,p+10); } Achina B Bejing C ng D ing 8.调用strlen(“abcd\\0ef\\0g”)的返回值_____ A 4 B 5 C 8 D 9 9.main() {char s[]=”\\n123\\\\”; printf(“%d,%d”strlen(s),sizeof(s));}结果_____ A 题目有错误B 6,7 C 5,6 D6,6 10.结果是___ #include { char s[]=”abcdefg”; char *cp=&s[7]; while(--cp>=s)putchar(*p);putchar(?\\n?); } 11. 有以下程序 #include p[20]={?a?,?b?,?c?,?d?},q[]=”abc”, main() void f(char p[][10], int n ) /* 字符串从小到大排序 */ { char t[10]; int i,j; for(i=0;i if(strcmp(p[i],p[j])>0) main() {char p[5][10]={“abc”,”aabdfg”,”abbd”,”dcdbe”,”c” }; f(p,5); printf(“%d\\n”,strlen(p[0]));} 程序运行后的输出结果是(C) A) 2 B) 4 C) 6 D) 3 14. 有以下程序 main() {char ch[]=“uvwxyz”,*pc; pc=ch; printf(“%c\\n”,*(pc+5)); } 程序运行后的输出结果是 A)z B)0 C)元素ch[5]的地址 D)字符y的地址 15. 有以下程序 #include while(*s<=?9?&&*s>=?0?) {n=10*n+*s-?0?;s++;} return(n);} main() {char s[10]={?6?,?1?,?*?,?4?,?*?,?9?,?*?,?0?,?*?}; printf(\}程序运行的结果是 A)9 B)61490 C)61 D)5 {strcpy(t,p[i]); strcpy(p[i],p[j]); strcpy(p[i],t); }} strcpy(p+strlen(q),r); strcat(p,q); printf(“%d%d\\n”,sizeof(p),strlen(p));} 程序运行后的输出结果是(C) A)20 9 B)9 9 C)20 11 D)11 11 12. 有以下程序 #include p[20]={?a?,?b?,?c?,?d?},q[]=”abc”, r[]=”abcde” strcat(p,r); Strcpy(p+strlen(q),q); printf(“%d \\n”,sizeof(p)); } 程序运行后的输出结果是() A)9 B)6 C)11 D)7 13. 有以下程序 #include 第二部分:上机题 1. 编写函数,判断一字符串是否为回文,若是 第 31 页 共 38 页 返回1,否则返回0 2. 编写程序,删除指定位置上的字符,删除成 功函数返回被删除字符,否则返回空值。 3. 编写函数fun,他的功能是将指定字符串s中 除了下标为偶数,同时ASCII值也为偶数的字符除外。其余的字符都删除。例如“ABCDEFG123456”结果为246(1) 4. 编写函数fun,其功能是比较两字符串的长短。(不得使用C语言提供的比较函数)(2) 5. 编写函数fun,其功能是将ss所指的字符串所有下标为寄数位置上的字母转化为大写字母,其他不变。 6. 编写函数,统计输入的一行字符中,单词的 个数。 7. 编写函数fun,实现把两个字符串连接在一 起,(不得使用字符函数) 8. 编写函数fun,统计一个长度为2的字符串在 另一个字符串中出现的次数。例如输入的字 符串为“ababababababahafskjhkg”,子字符串为“ab” 则结果为 6 9. 编写函数fun,功能是使字符逆序;例如:字 符串为“abcdef”变换后为“fedcba” 10. 课本上的例题 在C语言中函数名代表函数的入口地址,因此可以定义一种指向函数的指针来存放这种地址 2.double fun(int ,int *); 函数说明 double (*p)(int ,int *); 函数指针 若有p=fun则以上两个等价,p与fun必须类型名与参数类型一一匹配。 3.例如: double fun(int a,int *p) {......} main() {double (*fp)(int ,int *),y; int n; fp=fun; ...... y=(*fp)(56,&n); ...... } 二:函数名或指向函数的指针变量作为实参。 函数名或指向函数的指针变量作为实参是将函数首地址传递给形参。 例如: #include\ double tran(double(*)(double ),double(*)(double ),double ); main() {double y,v; v=60*3.14/180; y=tran(sin,cos,v); printf(\y=tran(cos,sin,v); printf(\} double tran(double (*f1)(double),double(*f2)(double),double x) { return (*f1)(x)/(*f2)(x); } 函数的递归调用 1.概念:C语言中的函数可以递归调用,即:可以直接或间接地自己调用自己。前者称为简单递 第十一章函数2 知识体系: 函数的运行: 1.输入程序: main(int argc,char **argv) {int i; printf(\for(i=0;i 2.f2保存,记住文件名: 3.Alt+c--------compile to obj------make exe file 回车取消对话框 alt+f-----os shell 1.指向函数的指针变量的定义 第 32 页 共 38 页