C语言程序设计学习与实践指导(源代码)
更新时间:2024-02-26 15:31:01 阅读量: 综合文库 文档下载
- c语言程序设计与实践答案推荐度:
- 相关推荐
2.2 例题分析与解答
2.2.1 选择题
3.以下程序的输出结果是 。
#include
int i=4,a; }
a=i++;
printf(\
4.下述程序的输出结果是 。
#include
char a=3,b=6; char c=a^b<<2; printf(\}
8.已知字符A的ASCII码值是65,以下程序 。
#include
{char a=’A’; int b=20; }
printf(\,%o\,(a=a+1,a+b,b),a+'a' – 'A',b );
2.3 测试题
选择题
8.如下程序的运行结果是 。
#include
{int y=3,x=3,z=1;
printf(\; }
10.以下程序的输出结果是 。
#include
printf(\,%d\\n\,++i,j--);
}
11.下列程序的输出结果是 。
#INCLUDE
{INT A=0,B=0,C=0; IF (++A>0 || ++B>0) ++C;
PRINTF(\; }
3.2.1 选择题
2.阅读以下程序:
#include
{char str[10];
scanf(\; printf(\; }
运行该程序,输入:HOW DO YOU DO,则程序的输出结果是( )。 3.若有以下程序段:
#include
{int a=2,b=5;
printf(\}
4.以下程序段:
int k;float a;double x;
scanf(\;
printf(\;
3.根据下面的程序及数据的输入和输出形式,程序中输入语句的正确形式应该为 。
main( )
{char ch1,ch2,ch3;
输入语句
printf(\;
}
4.2.1 选择题
2.读下列程序:
#include
{float a,b,t;
scanf(\;
if ( a>b) {t=a;a=b;b=t;} printf (\;
运行时从键盘输入3.8和–3.4,则正确的输出结果是 。
}
3.读下列程序:
#include
{ int x,y; scanf(\ }
y=0;
if (x>=0)
{if (x>0)y=1;} else y= -1; printf (\
当从键盘输入32时,程序输出结果为 。 4.对下述程序, 是正确判断。
#include
scanf(\if (x>y)
x=y:y=x; else x++;y++;
printf(\
5.以下程序的输出结果是 。
#include
{int x=1,y=0,a=0,b=0; switch (x) {case 1:
switch (y) {case 0:a++;break;
case 1:b++;break; }
case 2:a++;b++;break; case 3:a++;b++;
}
printf(\}
7.以下程序的输出结果是 。
#include
{int a=2,b= -1,c=2; if (a
8.以下程序的输出结果是 。
#include
main ()
{int w=4 ,x=3, y=2, z=1;
printf(\:z 4.2.2 填空题 3.请写出以下程序的输出结果 。 #include {int a=100; if(a>100) printf(\ else printf(\} 4.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是 。 if (a if(c if(b else x=6; else x=7; 6.执行以下程序段后,变量a,b,c的值分别为 。 int x=10,y=9; int a,b,c; a=(--x= =y++)? --x:++y; b=x++; c=y; 5.2.1 选择题 3.在下述程序中,判断i>j共执行了( )次。 #include {int i=0,j=10,k=2,s=0; for(;;) {i+=k; if(i>j) } {printf(\ break;} s+=i; } 4.以下程序段的输出结果是( )。 int x=3; do {printf(\}while(!(--x)); 5.2.2 填空题 1.以下程序段的输出结果是( )。 #include while(x--); printf(\} 2.以下程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入,请填空。 #include {float x,amax,amin; scanf(\amax=x;amin=x; while(【1】) } {if(x>amax)amax=x; if(【2】)amin=x; scanf(\ } printf(\ 3.以下程序段的输出结果是( )。 int k,n,m; n=10;m=1;k=1; while(k<=n) m*=2; printf(\ 4.下述程序的运行结果是( )。 #include {int s=0,k; for(k=7;k>4;k--) {switch(k) } { case 1: case 4: case 7:s++;break; case 2: case 3: case 6:break; case 0: case 5:s+=2;break; } printf(\} 5.3 测试题 5.3.1 选择题 4.下面程序段的运行结果是( )。 a=1;b=2;c=2; while(a 5.下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m和n中的较大者,请选择填空。 #include {int m=0,n=0; char c; while ((【1】)!= '\\n') {if(c>='A' && c<='Z') m++; if(c>='a' && c<='z') n++;} printf(\【2】); } 6.下面程序的功能是在输入的一批正整数中求出最大值,输入0结束循环,请选择填空。 #include {int a,max=0; scanf(\ while( ) {if(max 8.下面程序的功能是计算正整数2345的各位数字平方和,请选择填空。 #include {int n,sum=0; n=2345; do {sum=sum+【1】; n=【2】; }while(n); printf(\} 9.若运行以下程序时,从键盘输入ADescriptor #include main() {char c; int v0=0,v1=0,v2=0; do{switch(c=getchar()) {case 'a':case 'A': case 'e':case 'E': case 'i':case 'I': case 'o':case 'O': case 'u':case 'U':v1+=1; defaule:v0=v0+1;v2+=1; } }while(c!='\\n'); printf(\} 11.下面程序段的功能是将从键盘输入的偶数写成两个素数之和。请选择填空。 #include {int a,b,c,d; scanf(\ for(b=3;b<=a/2;b+=2) {for(c=2;c<=sqrt(b);c++) if(b%c= =0)break; if(c>sqrt(b)) d=【1】;else break; for(c=2;c<=sqrt(d);c++) if(d%c= =0) break; if(c>sqrt(d)) printf(\} 5.3.2 填空题 1.下面程序是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。请 填空。 int n=0,c; c=getchar( ); while( 【1】 ) {if ( 【2】 ) n++; c=getchar( ); } 1.下面程序是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。请 填空。 int n=0,c; c=getchar( ); while( 【1】 ) {if ( 【2】 ) n++; c=getchar( ); } ?21111?2?2?2???2,求π的近似值,直到最后一项2.下面程序的功能是用公式 6123n的值小于10–6 为止。请填空。 #include {long i=1; 【1】pi=0; while (i*i<=10e+6) {pi=【2】;i++;} pi=sqrt(6.0*pi); printf(\} 3.有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?请填空。 #include {int day,x1,x2; day=0;x1=1020; while (【1】) {x2=【2】;x1=x2;day++;} printf(\} 4.下面程序的功能是用“辗转相除法”求两个正整数的最大公约数。请填空。 #include scanf(\if(m r=m%n; while(r){m=n;n=r; r=【2】;} printf(\} 5.鸡兔共有30只,脚共有90个,下面程序段是计算鸡兔共有多少只,请填空。 for(x=1;x<=29;x++) {y=30-x; if(【1】) printf(\ } 6.下面程序的功能是计算1–3+5–7+?–99+101的值,请填空。 #include {int i,t=1,s=0; for(i=1;i<=101;i+=2) {【1】;s=s+t;【2】;} printf(\ } 7. #include {int i,n;double h ,s, a, b; printf(\ scanf(\【1】); n=100;h=【2】; s=0.5*(sin(a)*cos(a)+sin(b)*cos(b)); for(i=1;i<=n-1;i++)s+=【3】; s*=h; printf(\} 8. #include {int i;double e,new; 【1】;new=1.0; for(i=1;【2】;i++) {new=new/(double)i;e=e+new; } } 9. #include {int a ,i, m; for(a=1;a<=1000;a++) {for(【1】;i<=a/2;i++ ) if(!(a%i)) 【2】; if(m= =a) printf(“M”,a); } } 10. #include {int i,j,k,L=1; for(i=0;i<=20;i++) } for(j=0;j<=50;j++) {k=【1】; if(【2】) } {printf(\ L=L+1; if(L%5= =0)printf(\ } 6.3 测试题 6.3.1 选择题 2.下列程序执行后的输出结果是( )。 #include {char arr[2][4]; strcpy(arr,\ arr[0][3]='&'; printf(\} 3.当执行下面的程序时,如果输入ABC,则输出结果是( )。 #include {char ss[10]=\ gets(ss);strcat(ss, \} 4.以下程序的输出结果是( )。 #include f(int b[ ],int m,int n) {int i,s=0; for(i=m;i main() {int x,a[ ]={1,2,3,4,5,6,7,8,9} ; x=f(a,3,7); printf(\ } 5.以下程序中函数sort()的功能是对数组a中的数据进行由大到小的排序。 #include void sort(int a[ ],int n) {int i,j,t; for(i=0;i<=n-1;i++) for(j=i+1;j if(a[i] main( ) {int aa[10]={1,2,3,4,5,6,7,8,9,10},i; sort(&aa[3],5); for(i=0;i<10;i++)printf(\printf(\} 6.以下程序中函数reverse( )的功能是将a所指数组中的内容进行逆置。 #include void reverse(int a[ ],int n) {int i,t; for(i=0;i main( ) {int b[10]={1,2,3,4,5,6,7,8,9,10};int i,s=0; reverse(b,8); for(i=6;i<10;i++)s+=b[i]; printf(\ } 10.当运行以下程序时,从键盘输入“AhaMA[空格]Aha<回车>”,则下面程序的运行结果是( )。 #include {char s[80],c='a'; int i=0; scanf(\ while(s[i]!= '\\0') {if(s[i]= =c) s[i]=s[i]-32; else if(s[i]= =c-32) s[i]=s[i]-32; i++; } puts(s); } 15.有已排好序的字符串a,下面的程序是将字符串s中的每个字符按升序的规律插入到a中。请选择填空。 #include {char a[20]=\ int i,k,j; for (k=0;s[k]!='\\0';k++) {j=0; while(s[k]>=a[j] && a[j]!= '\\0')j++; for( 【1】 ) 【2】 ; a[j]=s[k]; } puts(a); } 16.下面程序的功能是将已按升序排好的两个字符串a和b中的字符按升序归并到字符串c中,请选择填空。 #include {char a[ ]=\int i=0,j=0,k=0; while (a[i]!= '\\0' && b[j]!= '\\0') {if (a[i] while ( 【3】 ) {c[k++]=a[i++];} while(b[j]!='\\0') {c[k++]=b[j++];} c[k]= '\\0'; puts(c); } 17.下面程序的功能是将字符串s中的所有字符c删除。请选择填空。 #include gets(s); for(i=j=0;s[i]!='\\0';i++) if(s[i]!= 'c') 【 】 ; } s[j]= '\\0'; puts(s); 18.下面程序的功能是从键盘输入一行字符串,统计其中有多少个单词,单词之间用空格分隔。请选择填空。 #include {char s[80],c1,c2=' '; int i=0,num=0; gets(s); while(s[i]!= '\\0') {c1=s[i]; if(i= =0)c2=' '; else c2=s[i-1]; if ( 【 】 )num++; i++; } printf(\} 19.下面程序的运行结果是( )。 #include {char ch[7]={ \int i,s=0; for(i=0;ch[i]>='0' && ch[i]<= '9';i+=2) s=10*s+ch[i]–'0'; printf(\} 6.3.2 填空题 4.下面程序将二维数组a的行和列元素互换后存到另一个二维数组b中。请填空。 main( ) {int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2],i,j; for (i=0;i<=1;i++) {for(j=0; 【1】 ;j++) } {printf(\ 【2】 ;} printf(\ printf(\ for(i=0; 【3】 ;i++) } {for(j=0;j<=1;j++) printf(\ printf(\ 5.下面程序用“快速顺序查找法”查找数组a中是否存在某个数。请填空。 main( ) {int a[5]={25,57,34,56,12}; int i,x; scanf(\ for(i=0;i<8;i++) if (x= =a[i]) {printf(\【1】 ; } if ( 【2】 )printf(\Can’t found! \ } 6.下面程序用插入法对数组a进行降序排序。请填空。 main() {int a[5]={4,7,2,5,1}; int i,j,m; for (i=1;i<5;i++) {m=a[i];j= 【1】 ; while(j>=0 && m>a[j]) { 【2】 ; j--; } 【3】 =m; } for(i=0;i<5;i++) printf(\printf(\} 7.程序用“两路合并法”把两个已按升序排列的数组合并成一个升序数组。请填空。 main() {int a[3]={5,9,19}; int b[5]={12,24,26,34,56}; int c[8],i=0,j=0,k=0; while(i<3 && j<5) if( 【1】 ) {c[k]=b[j];k++;j++;} else {c[k]=a[i];k++;i++;} while( 【2】 ) {c[k]=a[i];i++;k++;} while( 【3】 ) {c[k]=b[j];k++;j++;} for(i=0;i } 8.若有以下输入(_代表空格, 1_2_3_4_5_6 {int a[6],i,j,k,m; for(i=0;i<6;i++) scanf(\for(i=5;i>=0;i--) } { k=a[5]; for(j=4;j>=0;j--) a[j+1]=a[j]; a[0]=k; for(m=0;m<6;m++) printf(\ printf(\} 9.下面程序段的运行结果是【 】。 char ch[ ]=\int a,s=0; for(a=0;ch[a]>= '0' && ch[a]<= '9';a++) s=10*s+ch[a] –'0'; printf(\ 10.下面程序的功能是在一个字符数组中查找一个指定的字符,若数组含有该字符则输出该字符在数组中第一次出现的位置(下标值);否则输出–1。请填空。 #include {char c='a',t[5]; int n,k,j; gets(t); n= 【1】 ; for(k=0;k else j=–1; printf(\} 11.下面程序的功能是在三个字符串中找出最小的。请填空。 #include {char s[20],str[3][20]; int i; for (i=0;i<3;i++) gets(str[i]); strcpy(s, 【1】 ); if(strcom(str[1],s)<0) 【2】 ; if(strcom(str[2],s)<0) strcpy(s,str[2]); printf(\【3】 ); } 12.下面程序的运行结果是( )。 #include char a[ ]=\ for(i=0;a[i]!='\\0' && b[i]!= '\\0';i++) if(a[i]= =b[i]) if(a[i]>= 'a' && a[i]<= 'z')printf(\,a[i] ―32); else printf(\ else printf(\*\} 7.2.1 选择题 3.以下程序的输出结果是( )。 #include fun(int a,int b,int c) {c=a*b;} main() {int c; fun(2,3,c); printf(\,c); } 4.有如下程序: #include main( ) {extern int a,b; printf(\} int a=3,b=5; 5.如下程序的运行结果为( )。 #include {auto int b=0; static c=3; b=b+1; c=c+1; return(a+b+c); } main( ) {int a=2,i; for(i=0;i<3;i++) printf(\} 6.下列程序的运行结果是( )。 #include 27.以下程序的正确运行结果是( )。 #include void num( ) {extern int x,y;int a=15,b=10; x=a–b; y=a+b; } int x,y; main() {int a=7,b=5; x=a+b; y=a–b; num(); printf(\,%d\\n\,x,y); } 34 .下述程序输出的结果是( #include void fun(int a,int b,int c) { a=456; b=567; c=678; } main() { int x=10,y=20,z=30; fun(x,y,z); printf(\} 36 .下述程序输出的结果是( #include int i=2,p; p=f(i,i+1) printf(\} int f(int a,int b) { int c; c=a; if(a>b) c=1; else if(a==b) c=0; else c=-1; return c; } )。 )。 37.下述程序输出的结果是( )。 #include { int a=8,b=1,p; p=func(a,b); printf(\ p=func(a,b); printf(\} func(int x,int y) { static int m=2,k=2; k+=m+1; m=k+x+y; return(m); } 39 .下述程序输出的结果是( #include int x=1; fun(fun(x)); } fun(int n) { static int s[3]={1,2,3}; int i; for(i=0;i<3;i++) s[i]+=s[i]-n; for(i=0;i<3;i++) printf(\ printf(\ return(s[n]); } 40 .下述程序输出的结果是( #include int x=0; x++; printf(\} void fun2() { static int x; x++; printf(\} )。 )。 main() { int i; for(i=0;i<3;i++) { fun1(); fun2(); } } 7.3.2 填空题 3.以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请填空。 #include float f(float,float); main( ) { float x,y,z,sum; scanf(\; sum=f(【1】) +f(【2】); printf(\,sum); } float f(float a,float b) { float value; value=a/b; return(value); } 5.以下程序的功能是用二分法求方程2x3–4x2+3x–6=0的根,并要求绝对误差不超过0.001。请填空。 #include {return(2*x*x*x–4*x*x+3*x–6);} main( ) {float m=–100,n=90,r; r=(m+n)/2; while(f(r)*f(n)!=0) { if(【1】) m=r; else n=r; if(【2】) break; r=(m+n)/2; } printf(\,r); } 6.若输入一个整数10,以下程序的运行结果是【 】 。 main() {int a,e[10],c,i=0; scanf(\,&a); while(a!=0) {c=sub(a); a=a/2; e[i]=c; i++; } for(;i>0;i--)printf(\,e[i–1]); } sub(int a) {int c; } c=a%2; return c; 7.已有函数pow,现要求取消变量i后pow函数的功能不变。请填空。 修改前的pow函数: pow(int x,int y) {int i,j=1; for(i=1;i<=y;++i) j=j*x; return(j); } 修改后的pow函数: pow(int x,int y) {int j; for(【1】;【2】;【3】)j=j*x; return(j); } 8.以下程序的功能是求三个数的最小公倍数,请填空。 #include max(int x,int y,int z) {if(x>y && x>z) return(x); else if(【1】)return(y); else return(z); } main() {int x1,x2,x3,i=1,j,x0; printf(\:\; scanf(\,&x1,&x2,&x3); x0=max(x1,x2,x3); while(1) {j=x0*i; if(【2】)break; i=i+1; } printf(\,j); } 9.函数fun的作用是求整数n1和n2的最大公约数,并返回该值。请填空。 fun(int n1,int n2) {int temp; if(n1【1】n2) {temp=n1;n1=n2;n2=temp;} temp=n1%n2; while(【2】) { n1=n2;n2=temp;temp=n1%n2;} return(n2); 10.函数f中的形参a为一个3×3的二维数组,以下程序段的运行结果为【 】 。 f(int a[3][3]) {int i,j,k,n=3; j=n/2+1;a[1][j]=1;i=1; for(k=2;k<=n*n;k++) } {i=i–1;j=j+1; if(i<1 && j>n) {i=i+2;j=j–1;} else {if(i<1)i=n; if(j>n)j=1;} if(a[i][j]= =0) a[i][j]=k; else {i=i+2;j=j–1;a[i][j]=k;} } } 11.以下程序段的功能是用递归方法计算学生的年龄,已知第一位学生年龄最小,为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。请填空。 递归公式如下: 10 (n=1) age(n)= age(n-1)+2 (n>1) #include if(n= =1)c=10; else c=【1】 ; return(c); } main() {int n=5; printf(\: %d\\n\,【2】); } 12.下面程序的运行结果是【 】 。 main( ) {int i=5; printf(\,sub(i)); } sub(int n) {int a; if(n= =1)return 1; a=n+sub(n–1); return(a); } 13.函数嵌套调用与递归调用的区别是【 】 。 14.下面程序的运行结果是【 】 。 f() { int x=7; static y=4; x+=1; y+=1; printf(\ } main() { f(); f(); } 15.下面程序的输出结果是【 】 。 main() { int i=2,x=5,j=7; fun(j,6); printf(\ } fun(int i,int j) { int x=7; printf(\ 16.若已定义:“int a[10],i;”,以下fun函数的功能是:在第一个循环中给前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1,请填空。 fun(int a[]) { int i; for(i=1;i<=10;i++) 【1】 =i; for(i=0;i<5;i++) 【2】 =a[i]; } } 8.2.1 选择题 3.以下程序的输出结果是( )。 char cchar(char ch) { if(ch>='A'&&ch<='Z') ch=ch-'A'+'a'; return ch; } main() { char s[]=\*p=s; while(*p) { *p=cchar(*p); p++; } printf(\ } 4.以下程序调用findmax函数返回数组中的最大值,在下划线处应填入的是( )。 findmax(int *a,int n) { int *p,*s; for(p=a, s=a; p-a return(*s); } main() { int x[5]={12,21,13,6,18}; printf(\ } 7.以下程序的输出结果是( )。 #include main() { char b1[8]=\*pb=b1+3; while(--pb>=b1) strcpy(b2,pb); printf(\ } 8.2.2 填空题 1.以下程序的输出结果是【 】 。 main() { char *p=\*r; long *q; q=(long*)p; q++; r=(char*)q; printf(\ } 3.以下程序求a数组中的所有素数的和,函数isprime用来判断自变量是否为素数。素数是只能被1和本身整除且大于1的自然数。 #include main() { int i,a[10],*p=a,sum=0; printf(\ for(i=0;i<10;i++) scanf(\ for(i=0;i<10;i++) if(isprime(*(p+ 【1】 ))==1) { printf(\*(a+i)); sum+=*(a+i); } printf(\ } isprime(x) int x; { int i; for(i=2;i<=x/2;i++) if(x%i==0) return (0); 【2】 ; } 4.以下四个程序中,_______不能对两个整型变量的值进行交换。 A. #include int a=10,b=20; swap(&a,&b); printf(\ } swap(p,q) int *p,*q; { int *t; t=(int*)malloc(sizeof(int)); t=p; *p=*q; *q=*t; B. } #include int a=10,b=20; swap(&a,&b); printf(\} swap(p,q) int p,q; { int *t; t=*p; *p=*q; *q=t; C. #include { int *a,*b; *a=10,*b=20; swap(a,b); printf(\*a,*b); } swap(p,q) int *p,*q; { int t; t=*p; *p=*q; *q=t; } } D. #include { int a=10,b=20; int x=&a,y=&b; swap(x,y); printf(\} swap(p,q) int *p,*q; { int t; t=*p;*p=*q;*q=t; } 5.下面的程序调用getone函数开辟一个动态存储单元,调用assone函数把数据输入此动态存储单元,调用outone函数输出此动态存储单元中的数据,请填空。 #include { *s=(int *)malloc(sizeof(int)); } assone(a) int *a; { scanf(\【1】 ); } outone(b) int *b; { printf(\【2】 ); } main( ) { int *p; getone(&p); assone(p); outone(p); } 8.3.1 选择题 1.若有定义“int x,*pb;”,则以下正确的赋值表达式是(A.pb=&x B.pb=x C.*pb=&x 2 .以下程序的输出结果是( )。 #include { printf(\ A.因变量无定义输出不定值 B.0 C.–1 D.1 3 .以下程序的输出结果是( )。 void sub(int x,int y,int *z) { *z=y-x; } main() { int a,b,c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c); printf(\} 7 .以下程序的输出结果是( )。 void fun(float *a,float *b) { float w; *a=*a+*a; w=*a; *a=*b; *b=w; } main() { float x=2.0,y=3.0; float *px=&x,*py=&y; fun(px,py); printf(\} 。 D.*pb=*x ) 8.以下程序的输出结果是( )。 void sub(float x,float *y,float *z) { *y=*y-1.0; *z=*z+x; } main() { float a=2.5,b=9.0,*pa,*pb; pa=&a,pb=&b; sub(b-a,pa,pa); printf(\} 9 .以下四个程序中不能对两个整型值进行交换的是(A.main() { int a=10,b=20; swap(&a,&b); printf(\} swap(int *p, int *q) { int *t,a; t=&a; *t=*p; *p=*q; *q=*t; } B.main() { int a=10,b=20; swap(&a,&b); printf(\} swap(int *p, int *q) { int t; t=*p; *p=*q; *q=t; } C.main() { int *a,*b; *a=10,*b=20; swap(a,b); printf(\*a,*b); } swap(int *p, int *q) { int t; t=*p; *p=*q; *q=t; } D.main() { int a=10,b=20; int *x=&a,*y=&b; swap(x,y); printf(\} 。 ) swap(int *p, int *q) { int t; t=*p; *p=*q; *q=st; } 10.以下count函数的功能是统计substr在母串str中出现的次数,请将程序补充完整。 int count(char *str,char *substr) { int i,j,k,num=0; for(i=0; 【1】 ;i++) {for( 【2】 ,k=0;substr[k]==str[j];k++,j++) if(substr[ 【3】 ]==’\\0’) {num++;break;} } return num; } 11.以下Delblank函数的功能是删除字符串s中的所有空格(包括Tab、回车符和换行符),请将程序补充完整。 void Delblank(char *s) { int i,t; char c[80]; for(i=0,t=0; 【1】 ;i++) if(!isspace( 【2】 ))c[t++]=s[i]; c[t]='\\0'; strcpy(s,c); } 12.以下conj函数的功能是将两个字符串s和t连接起来,请将程序补充完整。 char *conj(char *s,char *t) { char *p=s; while(*s) 【1】 ; while(*t) { *s= 【2】 ;s++;t++;} *s='\\0'; 【3】 ; } 8.3.2 填空题 8.以下程序用指针指向三个整型存储单元,输入三个整数,并保持这三个存储单元中的值不变,选出其中最小值并输出。 #include\ main() { int 【1】 a=(int *)malloc(sizeof(int)); b=(int *)malloc(sizeof(int)); c=(int *)malloc(sizeof(int)); min=(int *)malloc(sizeof(int)); printf(\输入三个整数:\ scanf(\【2】 ); printf(\输出以上整数:%d%d%d\\n\【3】 ); *min=*a; if(*a>*b) 【4】 ; if( 【5】 >*c) 【6】 ; printf(\输出最小的整数:%d\\n\【7】 ); } 9.阅读以下程序: main() { char str1[]=\ char *ip1=str1,*ip2=str2; scanf(\ printf(\ printf(\ 运行上面的程序,输入字符串HOW DO YOU DO,则程序的输出结果是______。 10.阅读下面的程序: main() { static char *name[]={\ \ char **ip; int i; for(i=0;i<5;i++) { 【1】 ; printf(\*ip); } } } 11.阅读并运行上面的程序,如果从键盘上输入字符串qwerty和字符串abcd则程序的输出结果是 【1】 。 #include\#include\ strlen(char a[],char b[]) { int num=0,n=0; while(*(a+num)!='\\0') num++; while(b[n]) { *(a+num)=b[n]; num++; n++; } return (num); } main() { char str1[81],str2[81],*p1=str1,*p2=str2; gets(p1); gets(p2); printf(\} 13.以下程序的输出结果是 【1】 。 int ast(int x,int y,int *cp,int *dp) { *cp=x+y; *dp=x-y; } main() { int a,b,c,d; a=4; b=3; ast(a,b,&c,&d); printf(\ } 9.3 测试题 填空题 5.已知head指向一个带头结点的单向链表,链表中每个结点包含数据域(data)和指针域(next),数据域为整型。下面的sum函数是求出链表中所有结点数据域值的和,作为函数值返回。请填空完善程序。 struct link { int data; struct link *next;} main() { struct link *head; int s; ? s=sum(head); ? } int sum( struct link *head ) { struct link *p; int s=0; } while(p) { s+= 【1】 ; return(s); p=head->next; p= 【2】 ; } 10.2 例题分析与解答 6.以下程序的输出结果是( )。 void fun(float *p1,float *p2,float *s) { s=(float *)calloc(1,sizeof(float)); *s=*p1+*p2++; } main() { float a[2]={1.1,2.2},b[2]={10.0,20.0},*s=a; fun(a,b,s); printf(\*s); } 10.3.2 填空题 1.C语言提供了三种预处理语句,它们是 【1】 、 【2】 和条件编译。 2.下面程序中for循环的执行次数是 【1】 ,输出结果为 【2】 。 #include\ #define N 2 #define M N+1 #define NUM (M+1)*M/2 void main() { int i; for(i=1;i<=NUM;i++); printf(\ 3.下面程序的输出是 【1】 。 #define PR(ar) printf(\ main() { int j, a[]={ 1,3,5,7,9,11,13,15},*p=a+5; for(j=3; j; j--) { switch(j) {case 1: case 2: PR(*p++); break; case 3: PR(*(--p)); } } } } 4.以下程序的输出结果是 【1】 。 #define PR(ar) printf(\main() { int j,a[]={1,3,5,7,9,11,13,15},*p=a+5; for(j=3; j; j--) switch(j) { case 1: case 2:PR(*p++); break; case 3:PR(*(--p)); } } 5.下面程序调用getone 函数开辟一个动态存储单元,调用assone 函数把数据输入此动态存储单元,调用outone 函数输出此动态存储单元中的数据。请填空。 #include \getone(int **s) { *s=( 【1】 )malloc(sizeof(int)); } assone(int *s) fseek(myf,0,SEEK_END); f1=ftell(myf); fclose(myf); printf(\ 6.下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为 bi.dat 的新文件中,请填空。 #include\ main() { FILE *fp; char ch; if((fp=fopen(______))==NULL) exit(0); while((ch=getchar())!='@') fputc(ch,fp); fclose(fp); } 12.3.2 填空题 3.以下C语言程序将磁盘中的一个文件复制到另一个文件中,两个文件名在命令行中给出。请将程序补充完整。 #include\ main(argc,argv) int argc; char *argv[]; { FILE *f1,*f2; char ch; if(argc< 【1】 ) { printf(\ exit(0); } if(((f1=fopen(argv[1],\ NULL)) { printf(\ exit(0); } while( 【2】 ) fputc(fgetc(f1),f2); fclose(f1); fclose(f2); } 4.以下C语言程序将磁盘中的一个文件复制到另一个文件中,两个文件名在命令行中给出,请填空。 #include \ main(int argc, char *argv[]) { FILE *f1,f2; char ch; if(argc< 【1】 ) { printf(\命令行参数错!\\n\ f1=fopen(argv[1],\ f2=fopen(argv[2],\ while( 【2】 ) fputc(fgetc(f1), 【3】 ); 【4】 ; 【5】 ; } 5.以下程序由终端键盘输入一个文件名,然后把终端键盘输入的字符依次存放到该文件中,用“#”号作为结束输入标志,请填空。 #include \main() { FIlE *fp; char ch,fname[10]; printf(\ if((fp= 【1】 )==NULL) { printf(\ printf(\ while((ch=getchar())!='#') fputc( 【2】 ,fp); fclose(fp); } 6.以下程序用来统计文件中字符的个数,请填空。 #include \main() { FILE *fp; long num=0; if((fp=fopen(\【1】 )==NULL) { printf(\ while 【2】 { 【3】 ; num++; } printf(\ fclose(fp); ) 7.以下程序编译、连接后生成可执行文件cpy.exe: #include \void fc(FILE *); main(int argc, char *argv[]) { FILE *fp; int i=1; while(--argc>0) { fp=fopen(argv[i++],\ fc(fp); fclose(fp); } } void fc(FILE *ifp) { char c; while (c=getc(ifp)!='#') putchar(c-32); } 14.2.2 实验内容和步骤 (1)输入并运行下面的程序: main( ) {int a,b,c,d,e; char s1,s2,s3; a=100; b=32; c=a+b; d=c/3; e=a%b; s1='a'; s2='b'; printf(\,%d,%d\\n\printf(\,%c\\n\ (2)输入并运行下面程序: main( ) {int i,j,m,n; i=1.4; j=10; m=++i,j++; printf(\,%d,%d\,i,j,m); } 实验15.2.1 从大到小输出两个数 方法1: main( ) {float a,b; scanf(\,%f\,&a,&b); if ( ) printf(\,%f\\n\,a,b); else printf(\,%f\\n\,b,a); } 方法2: main( ) { float a,b,t; scanf(\,%f\,&a,&b); if ( a 实验15.3.2 求两个数的最大公约数和最小公倍数 main( ) {int p,r,n,m,k; scanf(\,%d\,&m,&n); p=m*n /*保存m*n的积,以便求最小公倍数时使用*/ r=m%n; while( ) /求m和n的最大公约数*/ { ; ; ; } printf(\它们的最大公约数为:%d\\n\, ); k= ; printf(\它们的最小公倍数为:%d\\n\,k ); } 实验18.1 编写函数判断是否闰年 实验要求 编一函数,判断某年是否为闰年,若是返回1,否则返回0。 算法分析 #include return (m%4==0)&&(m0!=0)||(m@0==0); } main() { int n; for (n=1987;n<2009;n++) if(fun(n)) printf(\} 实验18.2 编写函数计算三角形的面积 实验要求 编写计算三角形面积的程序,将计算面积定义成函数。三角形面积公式为: A?s(s?a)(s?b)(s?c) 其中,A为三角形面积,a、b、c为三角形的三条边的长度,s=(a+b+c)/2。 算法分析 #include float fun(float a,float b,float c) {float f,s; s=(a+b+c)/2; if((s<=a)||(s<=b)||(s<=c))//或(a+b)>c&&(a+c)>b&&(b+c)>a f=0; else f=sqrt(s*(s.a)*(s.b)*(s.c)); return f; } main() { float a,b,c; scanf(\ printf(\} 实验18.3 编写函数求最大公约数和最小公倍数 实验要求 编写两个函数,分别求出两个整数的最大公约数和最小公倍数,用主函数调用这两个函 数,并输出结果,两个整数由键盘输入。 算法分析 #include while (r!=0) {m=n;n=r;r=m%n;} return n; } int fmin(int m,int n) { return m*n/fmax(m,n); } main() { int a,b; scanf(\ printf(\ printf(\} 实验18.4 编写函数求圆周率的近似值 实验要求 编写函数,利用公式: ?1121231234?1???????????? 23353573579–5 计算π的近似值,当某一项的值小于10时,认为达到精度要求。 算法分析 #include int n; double pi=1,t=1; n=1; do { t=t*n/(2*n+1); pi=pi+t; n++; }while(t>1e.5); return 2*pi; } main() { printf(\ } 实验18.5 编写函数判断某一整数是否回文数 实验要求 编一函数,判断某一整数是否为回文数,若是返回1,否则返回0。所谓回文数就是该数正读与反读是一样的。例如12321就是一个回文数。 算法分析 #include while(t) {n++; t=t/10;} //求出M是几位的数 t=m; while(t) {if(t/(int)pow(10,n.1)!=t) return 0; else {t=t%(int)pow(10,n.1); t=t/10; n=n.2; } } return 1; } main() { int x; scanf(\ if (huiwen(x)) //比较其最高位和最低位 //去掉其最高位 //去掉其最低位 //位数去掉了两位 printf(\ else printf(\} 实验18.6 编写函数求整数的所有因子 实验要求 编一函数primedec(m),求整数m的所有因子并输出。例如:120的因子为:2,2,2,3,5。 算法分析 #include {printf(\ n++; } printf(\} main() { int x; scanf(\} 实验18.7 编写函数求整数的逆序数 实验要求 编一函数,求末位数非0的正整数的逆序数,如:reverse(3407)=7043。 算法分析 #include {x=x*10+m; m=m/10; } return x; } main() { int w; scanf(\ printf(\ } 实验18.8 编写函数求字符串中字符、数字、空格的个数 实验要求 编一函数,统计一个字符串中字母、数字、空格和其他字符的个数。 算法分析 #include {int i,num=0,ch=0,sp=0,oh=0; char c; for(i=0;(c=s[i])!='\\0';i++) if(c==' ') sp++; else if(c>='0'&&c<='9') num++; else if(toupper(c)>='A' && toupper(c)<='Z') ch++; else oh++; printf(\} main() { char s1[81]; gets(s1); fun13(s1); } 实验18.9 用递归方法求累加和 实验要求 用递归的方法实现求1+2+3+?+n。 算法分析 #include w=fun14(m.1)+m; return w; } main() { int x,i; scanf(\ printf(\ } 实验18.10 用递归方法将数值转换为字符串 实验要求 用递归的方法编程,将一个整数转换成字符串。例如:输入345,应输出字符串“345”。 算法分析 #include {fun15(m/10); printf(\ } } main() { int x; scanf(\ printf(\ fun15(x); printf(\} 实验18.11 用递归方法求x的n次方 实验要求 采用递归的方法计算x的n次方。 算法分析 #include \#include \float p(float x,int n) {float f; if(n==0) f=1; else f=p(x,n.1)*x; return f; } main() { printf(\} 实验18.12 实现分段函数 实验要求 根据勒让德多项式的定义计算Pn(x)。n和x为任意正整数,把计算Pn(x)定义成递归函数。 n?0?1?Pn(x)??xn=1 ?((2n-1)P(x)?(n?1)P(x))/n)n>1n-1n-2?算法分析 #include \ float p(float x,int n) {float f; if(n==0) f=1; else if(n==1) f=x; else f=((2*n.1)*p(x,n.1).(n.1)*p(x,n.2))/n; return f; } main() { printf(\ } 实验18.13 函数跟踪调试 实验要求 (1)编写如下程序:用Visual C++ 6.0的单步跟踪功能和Variables窗口,对该程序进行调试。注意观察函数执行过程(要用Step Into)和函数参数的变化。 #include if (x>y) return x; else return y; } void main() { int a,b; scanf(\ printf(\ (2)编写如下程序,用Visual C++6.0的单步跟踪功能和Variables窗口,对该程序进行调试。注意观察函数执行过程(要用Step Into)和函数参数的变化,体会为什么没有实现两个参数的交换。 #include void swap(int x,int y) { int temp; printf(\ temp=x; x=y; y=temp; printf(\} void main() { int a,b; printf(\ scanf(\ printf(\ swap(a,b); printf(\ } }
正在阅读:
C语言程序设计学习与实践指导(源代码)02-26
福建省交通建设质量安全监督廉政风险防控手册 - 图文03-25
2018年河南财经政法大学传媒经济学802西方经济学之西方经济学(宏观部分)考研基础五套测试题05-07
2002-2010年浙江教师资格考试---教育学心理学历年真题及答案07-25
空调系统方案选择10-15
循化县治理黄斑星天牛的主要措施05-10
L心理学理论10-04
丰盛的晚餐作文600字06-22
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 程序设计
- 源代码
- 实践
- 语言
- 指导
- 学习
- 情感教育在中职语文教学中的作用及实施策略
- 重要的国际组织
- 第二章 马克思主义中国化理论成果的精髓
- 2017年秋部编版二年级语文上册五至八单元集体备课教案
- 各章检测试题库一(附参考答案)
- 农田水利工程施工组织设计(1)
- 任职资格辞典 - 图文
- 2014四号发电机励磁系统定期试验报告课件
- 关于中国女排精神的学习心得范本参阅-文档资料
- 中考英语 考点跟踪突破38 完形填空
- 中考考生食谱
- 中国古代文学名词解释--论述题题库
- 《红楼梦》情节简述题(第1-60回)
- 辽宁省锦州市实验学校2014-2015学年八年级数学下学期第一
- 利息理论习题
- 《oracle 10g数据库管理 应用开发 标准教程》课后答案
- 高速公路运营管理概念
- 《上海交响乐团音乐厅》阅读理解及答案
- 经济型连锁酒店调研报告
- 九年级物理上第十六章从指南针到磁悬浮列车单元测试沪科版