c同步练习 下载本文

}

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 main()

{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 main()

{ char s[]=”abcdefg”; char *cp=&s[7];

while(--cp>=s)putchar(*p);putchar(?\\n?); }

11. 有以下程序 #include main() {char r[]=”abcde”;

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 int fun(char s[]) {int n=0;

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 main() {char

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 页