




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上第一章 基础知识1、c语言支持三种数制,下列哪个数制不支持?A)十进制B)八进制C)二进制D)十六进制【答案】:选择C。计算机可以识别的是二进制数,八进制和十六进制的提出是为了“压缩”二进制,所以本质上八进制和十六进制一样,故而两者要么都选,要么都不选。熟悉c语言的人都知道,十进制数可以在c程序中直接使用而二进制则不可以。二进制是机器可以识别的码,在c语言中不可以直接被识别。第二章 c语言的组成结构及数据1、下列标识符在c语言中属于合法的用户自定义的标识符?A)a_12 B)a12 C)3m D)do E)aa.txt F)c#bh 【答案】c语言中允许的合法的用户标
2、识符只有数字、字母、下划线,且必须以字母或者下划线开始,不能使用系统预定于的关键字作为标识符。因此,C、D、E、F均不正确。2、在c语言中下列常量的写法正确的是?A)、-32767 、023f 、0x123dfh分析:正确。是一个十进制整型常量的正确表示法。 :错误。以“0”开头的是八进制数,在其表示的数中只能出现07这七种符号。正确的写法为:023. :错误。以0x开头的是十六进制数,在其表示的数中只能出现09和AF这十六种符号,正确的写法为:0x123df。B)、123.46 、123. 、.456 、0.456分析:以上均是c语言中实型数据的一种正确表示小数形式。 小数形式定义:由数字和
3、小数点组成。C):123.4E4 、5.4E0.5 、4E 、1.23e-5 :3E2分析:、不正确,其余全部正确。考查实型数据的指数表示形式。指数形式应注意:一、 字母E或e之前之后必须有数字,且后必须是整数。二、 字母E或e的前后及各数字之间不能有空格。C)、”abbchkdl” 、”a” 、” 、 、n 、分析:、不正确,其余全部正确。考查字符型常量和字符串常量的表示方法。字符型常量应注意:一、 有一对单引号括一个字符。二、 转移字符常量,必须以一个反斜杠”开头。字符串常量应注意:一、 用一对双引号括起来若干个字符。3、若int a,b;,则表达式a=3,b=1,b=a+b;的值为 4
4、,此时a= 3 ,b= 4 。分析:逗号表达式的形式为:表达式1,表达式2,表达式n。 功能:逗号表达式的值就是表达式n的值,求值顺序是从左至右依次求解。令注:可以编写如下程序对题目结果进行验证。#include<stdio.h>void main() int a,b; printf("%d n",(a=3,b=1,b=a+b); printf("a=%d , b=%dn",a,b);/程序2-1.cpp运行结果,如下图所示:4、若float x=123.456,y=0.6;求解下列表达式的值。 1)、(int) x= 123 ,(int)
5、(x)= 123 。 2)、(int) x+y= 123. ,(int)(x+y)= 124 。分析:此题考查了强制类型转换以及不同类型的数据在做算术运算时最终结果如何得到。 (int)x:表示对浮点型x进行强制类型转化为整型。 (int)x+y:表示将x强制类型转换成整型后,再与浮点型数据y进行相加运算。由于浮点型数据高于整型,故而整个表达式的结果为浮点型数据且与y保留一样位数的小数。令注,可以编写如下程序对题目进行验证。#include<stdio.h>void main()float x=123.456,y=0.6;printf("%dn",(int)x)
6、;printf("%dn",(int)(x);printf("%fn",(int)x+y);printf("%dn",(int)(x+y);/程序2-2.cpp运行结果,如下图所示:5、求下列表达式的值。注意:求余(%)运算符两侧的操作数应均为整数。1)、17%3= 2 。2)、17%-3= 2 。C语言中,凡是表达式都有一个确定的值。3)、-17%3= -2 。4)、-17%-3= -2 。分析:求余表达式的求解过程:先忽略负号不计求出余数,再将所得余数的符号定成与被除数相同的符号即可。编写如下程序对题目进行验证:#include&
7、lt;stdio.h>void main()printf("17%3=%dn",17%3);printf("17%-3=%dn",17%-3);printf("-17%3=%dn",-17%3);printf("17%-3=%dn",-17%-3);/程序2-3.cpp程序运行结果如下图所示:6、下面程序的输出结果为 9, 6.#include<stdio.h>void main()int k=3,w;w=(k+)+(k+)+(k+);printf("%d %dn",w,k);
8、第三章 顺序结构顺序结构程序设计示例: 编写一个求某同学的3门课程的平均成绩程序。程序如下:#include<stdio.h>void main()int a,b,c;float average;a=87;b=69;c=95;average=(a+b+c)/3;printf("该同学3门课程的平均成绩为:");printf("%fn",average);/程序3-1.cpp程序运行结果,如下图所示:以上就是一个顺序结构程序的示例。1、 若char a,b;a=getchar();b=getchar();当进行如下输入时,分别求a,b的值。1)
9、、输入:fg<回车>,则a= f ,b= g 。2)、输入:f,h<回车>,则a= f ,b= , 。3)、输入:f<回车><回车>,则a= f ,b= <回车>。分析:此题考查了getchar()函数的使用,该函数的输入可以是键盘上的任意字符。第五章 循环结构1、编写一个由goto和if语句组合使用的循环语句的程序,实现1+2+3+100。编写的程序如下:#include<stdio.h>void main()int i,sum;i=0;sum=0;LP:sum=sum+i;/此时LP为标号 i=i+1; if(i<
10、;=100)goto LP;/转向LP标号所在的行 printf("sun=1+2+3+.+100=%dn",sum); /程序5-1.cpp程序运行结果如下图所示:2、如果x=3,求如下程序的输出结果 1 -2 。doprintf("%dt",x-=2);while(!(-x);分析:根据“直到型循环”的特点,依次判断程序每走一步的变量x的值。令注:可以编写如下程序验证题目:#include<stdio.h>void main()int x=3;doprintf("%dt",x-=2);while(!(-x);/5-2.
11、cpp程序运行的结果如下图所示:3、求如下程序循环体的语句被执行的次数 5 。int i=0;int x,y;for(x=0,y=0;y!=250|x<4;x+)y+=50;分析:此题考查了逻辑运算符“|”为“假”时的条件,即其左右两侧的表达式同时为假时,整个表达式才是“假”。可以编写如下程序对题目进行验证:#include<stdio.h>void main()int i=0;int x,y;for(x=0,y=0;y!=250|x<4;x+)i+;y+=50;printf("循环的次数为%dn",i);/程序5-3.cpp4、求如下程序的输出结果
12、 。int x=3,y=6,a=0;while(x+!=(y-=1)a+=1;if(y<x)break;分析:注意x+与x=x+1以及+x等这些表达式求值的结果。例如x=3时,表达式x+的结果为3,表达式x=x+1的结果为4,表达式+x的结果为4.可以编写如下程序对题目进行验证:#include<stdio.h>void main()int x=3,y=6,a=0;while(x+!=(y-=1)a+=1;if(y<x)break;printf("x=%d,y=%d,a=%dn",x,y,a);/程序5-4.cpp5、求如下程序的输出结果 1 。in
13、t m=7,n=9;while(m!=n)while(m>n)m-=n;while(n>m)n-=m;printf("m=%dn",m);分析:本题主要了while()循环的循环结束条件。可以编写如下程序对题目进行验证:#include<stdio.h>void main()int m=7,n=9;while(m!=n)while(m>n)m-=n;while(n>m)n-=m;printf("m=%dn",m);/程序5-5.cpp6、设计一个求1000以内的“完数”的程序。(提示:完数:一个数恰好等于它的因子之和)
14、#include<stdio.h>void main()int i,a,m;for(i=1;i<1000;i+)for(m=0,a=1;a<=i/2;a+)if(!(i%a)m=m+a;if(m=i)printf("%4dn",i);运行结果如下图所示:7、设计一个程序求100499之间的所有水仙花数。提示,水仙花数:各位数字的立方和恰好等于该数字本身。#include<stdio.h>#include<math.h>void main()int i,j,k,m,n;for(i=1;i<=4;i+)for(j=0;j&l
15、t;=9;j+)for(k=0;k<=9;k+)/*m=i*100+j*10+k;n=i*i*i+j*j*j+k*k*k;*/m=i*100+j*10+k;n=pow(i,3)+pow(j,3)+pow(k,3);if(m=n)printf("%3dn",m);第六章 数组一、选择题1、若有数组定义:char array=”china”;则数组array所占的空间为()A、4个字节 B、5个字节C、6个字节D、7个字节答案:C2、 以下程序的输出结果是()main()char str12=a,b,d,c,t,h;printf(“%dn”,strlen(str);A、6
16、B、7C、11D、12答案:A 函数strlen()计算的是字符的实际有效长度即不包含自负结束标志位0。3、下述对C语言字符数组的描述中错误的是()A、字符数组可以存放字符串。B、字符数组中的字符串可以整体输入和输出。C、可以在赋值语句中用赋值运算符“=”对字符数组整体赋值。D、不可以用关系运算符对字符数组中的字符串进行比较。答案:C4、若有定义:int array8;。则以下表达式中不能代表数组array1的地址的是()A、&array0+1B、&array1C、&array0+D、array+1答案:C 注意:地址常量不能进行自增或者自减运算。5、不合法的main函
17、数命令行参数表示形式是()A、main(int a,char *c) B、main(int arc,char *arv)C、main(int argc,char *argv) D、main(int argv,char *argc)答案:C main函数的第一个形参是一个整型变量,第二个形参是一个指针数组,其元素指向字符型数据。6、有定义语句:char s10;若要从终端给s输入5个字符,错误的输入语句是()A、gets(&s0);B、scanf(“%s”,s+1);C、gets(s);D、scanf(“%s”,s1);答案:D scanf
18、()函数的输入列表参数为变量的“地址”;7、下列对数组的定义正确的是()A、int a1.5;B、int a-10;C、int N=9; int aN;D、int a0;E、#define N 10 Int aN;答案:E 定义数组时,方括号内的表达式必须为大于零的正整数。二、填空题1、C程序在执行的过程中,不检查数组下标是否 越界 。2、下面程序段的运行结果是 编译出错 。main()注意:字符数组的初始化方法;char s6;s="abcd"printf(""%s"n");3、下面程序段的运行结果是 “abcd” 。#includ
19、e<stdio.h>void main()char s6="abcd"printf(""%s"n",s);4、以下程序运行后的输出结果是 5 。main()char *p=”abcde0fghjik0”;printf(“%dn”,strlen(p);5、若有定义和语句;int a4=1,2,4,5,*p;p=&a2;,则*-p的值是 2 ,-*p的值是 3 。6、若有如下定义和语句: int *p3,a6,n; for(n=0;n<3;n+) pm=&a2*m;则*p0引用的是a数组元素 a0 ;*(
20、p1+1)引用的是a数组元素 a3 。7、以下程序的输出结果是 3 , 5 。void swap(int *a,int *b)int *t;t=a;a=b;b=t;void main()Int i=3,j=5,*p=&i,*q=&j;swap(p,q);printf(“%d,%dn”,*p,*q);三、阅读程序题1、运行下面的程序,如果从键盘上输入:123<空格>456<空格>789<回车>,输出结果是 。main()char s100;int c,i;scanf("%c",&c);scanf("%d&q
21、uot;,&i);scanf("%s",s);printf("%c,%d,%sn",c,i,s);/程序6-2.cpp答案:1,23,456.分析:本题考查了函数scanf()进行数据输入时遇到回车、空格等则输入结束。可以编写如下程序对题目进行验证:2、以下程序段的输出结果 。main()char b="Hello,you"b5=0;printf("%sn",b);答案:Hello分析:本题考查了字符串输出时遇到0结束。可以编写如下程序对题目进行验证:#include<stdio.h>void
22、main()char b="Hello,you"b5=0;printf("%sn",b);/程序6-3.cpp四、程序设计题1、设计一个程序实现如下功能:计算一个字符串在另一个字符串中出现的次数。设计的程序如下;#include<stdio.h>#include<string.h>void main()int i,j,k,count;char s120,s220;printf("输入主串s1:n");gets(s1);printf("输入子串s2:n");gets(s2);count=0;/
23、计数器清零for(i=0;i<strlen(s1);i+)for(j=i,k=0;s1j=s2k;j+,k+)if(strlen(s2)=1+k)count+;printf("s2在s1中出现的次数为:%dn",count);/程序6-4.cpp3、 设计一个程序实现如下功能:将一个十进制数转化成k进制数,并按位输出。设计的程序如下:#include<stdio.h>void main()int a100,i=0,m,k,s;printf("请输入要转化的数字:n");scanf("%d",&m);print
24、f("请输入要将此数转化成的进制:n");s=m;scanf("%d",&k);while(m)ai=m%k;m=m/k;i+;i-;printf("%d转化成的%d进制数为:",s,k);for(;i>=0;i-)printf("%d",ai);printf("n");/程序6-5.cpp4、 fun函数把形参字符数组s中下标为偶数的小写字母转化成对应的大写字母,结果仍保存在原数组中。设计的程序如下:#include<stdio.h>#include<strin
25、g.h>void fun(char s)int i=0;while(i<strlen(s)if(i%2=0&&(si>='a'&&si<='z')si=si-32;i+;void main()char str80;printf("input a string:n");gets(str);fun(str);printf("result:n");printf("%s n",str);/程序6-6.cpp5、 有一个3×4的二维数组a,要求编写
26、程序求出其中最大的那个元素的值,以及其所在的行号和列号。设计的程序如下:#include<stdio.h>void main()int i,j,row=0,colum=0,max;int a34=1,2,3,4,9,78,456,2134,233,12,897,334;max=a00;for(i=0;i<=2;i+)for(j=0;j<=3;j+)if(aij>max)row=i;colum=j;max=aij;printf("max=%d,row=%d,colum=%dn",max,row,colum);/程序6-7.cpp6、 分析如下程序
27、,回答其运行结果为什么是如下结果。#include<stdio.h>void main()char a1="abcdef",a2100,a3100;Printf(“%s n”,a1);输出时,遇到结束符0就停止输出。又因为在c语言中,系统对字符串的末尾自动加上了一个0字符。因此,输出结果为abcedfa20='a'a21='d'a22='v'a23='n'printf("%s n",a1);注意:a1和a3可以作为字符串来对待,而a2则不可以。printf("%s n&
28、quot;,a2);a30='a'a31='d'a32='v'a33='n'a34='0'printf("%s n",a3);/程序6-8.cpp7、 设计一个程序实现对已经有序(递增)的两个数组中的元素进行排序。#include<stdio.h>void main()int a100,a1=1,3,6,9,10,a2=2,4,7,8,15,s,i=0,j=0,k;s=(sizeof(a1)+sizeof(a2)/sizeof(int);for(k=0;k<s;k+)if(a1
29、i<a2j)ak=a1i;i+;elseak=a2j;j+;for(k=0;k<s;k+)printf("%3d",ak);/程序6-9.cpp8、 设计一个程序使得数组中的原有元素的顺序倒置。#include<stdio.h>void main()int a=1,2,3,4,5,6,7,8,9,10,11,23,45,643,213;int i,temp,s;s=sizeof(a)/sizeof(int);for(i=0;i<s/2;i+)temp=ai;ai=as-i-1;as-i-1=temp;printf("n");
30、for(i=0;i<s;i+)printf("%4d",ai);/程序6-10.cpp9、 设计一个算法求得一个二维数组中某个元素使得其为所在行的最小值,同时也是其所在列的最小值。#include<iostream.h>void FindMin(int a4,int m,int n)int i,j,k;int min,minlie,flag;for(i=0;i<m;i+)min=ai0;minlie=0;for(j=0;j<n;j+)if(min>aij)min=aij;minlie=j;flag=1;for(k=0;k<n;k+)
31、if(min>akj)flag=0;break;if(flag)cout<<min<<","<<i<<","<<minlie<<""<<endl;cout<<endl;void main()int arry44=1,2,3,4,5,-3,8,9,10,11,13,20,23,45,67,-10;FindMin(arry,4,4);/程序6-11.cpp10设计一个算法将一维数组中的奇数元素移动到偶数元素之前。要求时间复杂度为O(n)。
32、#include<iostream.h>#include <time.h>#include <stdlib.h>void divide(int a,int n)int i,j,temp;i=0;j=n-1;while(i<j)while(ai%2=1&&i<j)i+;while(aj%2=0&&i<j)j-;if(i<j)temp=ai;ai=aj;aj=temp;+i;-j;void main()int a20,i=0;srand(unsigned)time(NULL);for(i=0;i<20
33、;i+)ai=rand();cout<<ai<<" "cout<<endl;divide(a,20);for(i=0;i<20;i+)cout<<ai<<" "/程序6-12.cpp第七章 函数1、关于return语句,下列说法正确的是(C)A、在主函数和其他函数中均要出现B、必须在每个函数中出现C、可以在一个函数中出现多次D、只能在除主函数之外的函数中出现一次2、c语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是(B)A、voidB、intC、floatD、double3、下面叙
34、述中不正确的是(B)A、函数调用时,先求出实参表达式,然后带入形参。而是用带参的宏只是进行简单的字符替换B、函数调用是在程序运行时处理的,分配临时的内存单元。而宏展开则是在编译时进行的,在展开时也要分配内存单元,进行值传递C、对于函数中的变参和形参都要定义类型,二者的类型要求一致,而宏不存在类型问题,宏没有类型D、调用函数只可得到一个返回值,而用宏可以设法得到几个结果4、下面叙述中不正确的是(D)A、使用宏的次数较多时,宏展开后的源程序长度增加。而函数调用不会使源程序变长B、函数调用是在程序运行时处理的,分配临时的内存单元,而宏展开则是在编译时进行的,在展开时不分配内存单元,不进行值传递C、宏
35、替换占用编译时间D、函数调用占用编译时间5、写出下面程序的运行结果#include<stdio.h>void main()int a=3,b=9;int a=1,c=7;a=a+b;b=c+a;printf("a=%d,b=%dn",a,b);printf("a=%d,b=%dn",a,b);/7-1.cpp分析:本题考查了有关变量的作用域问题。程序运行结果如下图:6、阅读如下程序并写出程序运行结果。#include<stdio.h>int a;void fun1()a=100;void fun2()a=1000;main()a=
36、10000;printf("a=%dn",a);fun2();printf("a=%dn",a);fun1();printf("a=%dn",a);/7-2.cpp分析:此题与上一道题目类似,仍然考查的是变量的作用域问题。程序运行结果如下图所示:7、阅读如下程序并写出运行结果#include<stdio.h>int a,b;/全局变量void fun()a=100;b=200;main()int a=5,b=7;/内部变量fun();printf("a=%d b=%dn",a,b);/7-3.cpp分析
37、:此题考查了变量的作用域问题。程序运行结果如下图:8、阅读如下程序并写出运行结果#include<stdio.h>int fun(int x,int y)static int m=0,i=2;i+=m+1;m=i+x+y;return m;main()int j=4,m=1,k;k=fun(j,m);printf("%dn",k);k=fun(j,m);printf("%dn",k);/7-4.cpp分析:做此题时,应该注意static变量的特点,静态变量在程序运行的整个生命周期均存在。程序运行的结果如下图:9、阅读如下程序并写出执行结果#i
38、nclude<stdio.h>int d=1;fun(int p)static int d=5;d+=p;printf("%dn",d);return(d);void main()int a=3;printf("%dn",fun(a+fun(d);/7-5.cpp分析:此题与上一道题目考查知识点类似。程序运行结果如下图所示:10、阅读如下程序并写出执行结果#include<stdio.h>main()extern x,y;printf("%d,%dn",x,y);int x=1,y=3;/7-6.cpp分析:此
39、题考查了引用外部变量的方法。程序运行结果如下图:11、阅读如下程序并写出程序运行结果#include<stdio.h>int a=1;void main()int s=3;int a=5;s+=+a;s+=+a;printf("%dn",s);/7-7.cpp分析:此题仍然考查变量的作用域问题。程序运行结果如下图所示:12、阅读如下程序并写出执行结果#include<stdio.h>int w=3;int fun(int k)if(k=0)return w;return (fun(k-1)*k);void main()int w=10;printf(
40、"%dn",fun(5)*w);/7-8.cpp分析:此题考查了变量的作用域问题。程序运行结果如下图:13、阅读如下程序并写出执行结果#include<stdio.h>int a,b;void fun()a=100;b=200;void main()int a=5,b=7;fun();printf("%d%dn",a,b);/7-9.cpp分析:此题考查了变量的作用域问题。程序运行的结果如下图所示;14、下面程序的运行结果是 2,2.main()char s="1357",*t;t=s;printf("%c,%c
41、n",*t,+*t);分析:本题目主要考查了printf()函数中参数列表中表达式的运算顺序自右至左,以及+和*运算符的结合性自右至左。可以编写如下程序对题目进行验证:#include<stdio.h>void main()char s="1357",*t;t=s;printf("%c,%cn",*t,+*t);/程序9-12.cpp15、若有以下函数调用语句:fun(a+b,(x,y),fun(n+k,d,(a,b);在此函数调用语句中实际参数个数是( A )A 3 B 4 C 5 D 6三、简答题1、在C语言中,全局变量和局部变
42、量的主要区别是什么?答:(1)定义位置不同:全局变量定义在所有函数之外;局部变量定义在函数体中;(自加)(2)生命期不同:全局变量随着主程序创建而创建,随着主程序销毁而释放;局部变量是在函数内部,程序执行到其作用域时创建,退出其作用域时释放。(3)作用域不同:全局变量具有文件作用域,在程序中的每个函数中都可以引用;局部变量具有块作用域,只是在其作用域内才能引用;(4)分配位置不同:全局变量被分配在全局静态存储区,而局部变量分配在栈区;(自加)三、 程序设计题1、 设计一个程序使得输入的一个整型数据(例如:1234)逆序输出(结果为:4321)。注意:要求用递归函数来实现。#include<
43、;stdio.h>void convert(int n)int i;putchar(n%10+'0');if(i=n/10)!=0)convert(i);void main()long number;printf("Please input number:n");scanf("%dl",&number);convert(number);printf("n");/程序7-13.cpp第九章 指针一、选择题1、若有说明:int a=2,*p=&a,*q=p;,则以下非法的赋值语句是()A、p=qB、*
44、p=*qC、a=*qD、q=a答案:D 赋值符号两侧的数据类型应该一致。2、下面程序段的运行结果是()char *s=”abcde” s+=2; printf(“%d”,s);A、 acdB、 字符cC、 字符c的地址D、 无确定的输出结果答案:C3、有以下语句和定义,对s数组元素引用形式正确的是()Int s45, (*ps)5; ps=s;A、 ps+1B、 *(ps+3)C、 ps02D、 (*(ps+1)+3)答案:C4、若有定义:int a=1,2,3,4,5,6,7,8,9,10,11,12,*p3,m;则下面程序段的输出结果为()For(m=0;m<3;m+) pm=&am
45、p;am*3;Printf(“%dn”,p22);A、4B、7C、11D、12答案:C二、填空题1、阅读如下程序,写出运行结果 .void fun(int *x,int *y)printf("%d %dn",*x,*y);*x=3;*y=4;void main()int x=1,y=2;fun(&y,&x);printf("%d %dn",x,y);答案:2 1 4 3可以编写如下程序对题目进行验证。#include<stdio.h>void fun(int *x,int *y)printf("%d %dn"
46、;,*x,*y);*x=3;*y=4;void main()int x=1,y=2;fun(&y,&x);printf("%d %dn",x,y);/9-1.cpp程序运行结果,如下图所示:2、阅读如下程序,写出运行结果 .void swap(int *p1,int *p2)int temp;temp=*p1;*p1=*p2;*p2=temp;void main()int a,b;int *p1=&a,*p2=&b;a=1;b=2;swap(p1,p2);printf("%d %dn",*p1,*p2);/9-2.cpp答
47、案:1 2.可以编写如下程序对题目进行验证。#include<stdio.h>void swap(int *p1,int *p2)int temp;temp=*p1;*p1=*p2;*p2=temp;void main()int a,b;int *p1=&a,*p2=&b;a=1;b=2;swap(p1,p2);printf("%d %dn",*p1,*p2);程序运行的结果,如下图所示;3、阅读如下程序,写出运行结果 .void swap(int *p1,int *p2)int *temp;temp=p1;p1=p2;p2=temp;void
48、main()int a,b;int *p1=&a,*p2=&b;a=1,b=2;swap(p1,p2);printf("%d,%dn",*p1,*p2);可以编写如下程序对题目进行验证。#include<stdio.h>void swap(int *p1,int *p2)int *temp;temp=p1;p1=p2;p2=temp;void main()int a,b;int *p1=&a,*p2=&b;a=1,b=2;swap(p1,p2);printf("%d,%dn",*p1,*p2);/9-3.cpp
49、程序运行的结果,如下图所示;4、阅读如下程序,分析是否有误?如果有请说明错误原因。#include<stdio.h>void swap(int *p1,int *p2)正确的写法应该为temp=(int*)malloc(sizeof(int);int *temp;*temp=*p1;*p1=*p2;*p2=*temp;void main()int a,b;int *p1=&a,*p2=&b;a=1;b=2;swap(p1,p2);printf("%d,%dn",*p1,*p2);/9-4.cpp答案:本程序有错误。原因swap()函数中的temp
50、指针变量没有指定其所指向的内容,程序运行时其指向地址是随机的。如果在程序运行期间其所指向的单元为系统空间,则很危险。如下图所示,编译程序时,编译器有警告的提示。5、完整如下程序,实现利用指向数组的指针变量来完成对数组的相关操作。#include<stdio.h>void main()int *p,a3,i;p=a;for(i=0;i<3;i+)scanf("%d", );printf("n");for(p=&a0;p<a+3;)printf("%d ", );整个程序如下:#include<std
51、io.h>void main()int *p,a3,i;p=a;for(i=0;i<3;i+)scanf("%d",p+);printf("n");for(p=&a0;p<a+3;)printf("%d ",*p+);/9-5.cpp程序运行结果如下图:6、完成如下程序:#include<stdio.h>void main()int a33=1,2,3,4,5,6,7,8,9,*p;for(p=a0;p<a0+9;p+)printf("%d ", );完整的程序如下;#i
52、nclude<stdio.h>void main()int a33=1,2,3,4,5,6,7,8,9,*p;for(p=a0;p<a0+9;p+)printf("%d ",*p);/9-6.cpp程序运行结果如下图:7、利用指针实现对二维数组的操作。#include<stdio.h>void main()int a33=1,2,3,4,5,6,7,8,9;int (*p)3;p=a;int i,j;for(i=0;i<3;i+)for(j=0;j<3;j+)printf("%d ",pij);printf(&q
53、uot;n");/9-7.cpp程序运行结果如下图:10、 设计一个程序,实现对字符串中的所有数字字符删除。#include<stdio.h>#include<malloc.h>void delnum(char *t);void main()char *s;s=(char*)malloc(sizeof(char);printf("input original string:n");gets(s);delnum(s);puts(s);void delnum(char *t)int i,j;for(i=0,j=0;tj!='0'j+)if(tj<'0'|tj>'9')ti=tj;i+;ti='0'/程序9-13.cpp运行结果如下图所示:10、设计一个程序,判断一个字符串是否是回文。(回文:顺度和捯读都一样)#include<stdio.h>#include<string.h>void main()char s80,*t1,*t2;int m;gets(s);m=strlen(s);t1=s;t2=s+m-1;while(t1<t2)if(*t1!=*t2)break;elset1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海洋油气开采国际交流与合作考核试卷
- 钛媒体数字化转型新思先行者优势与复利效应
- 环境工程伦理课件
- 航空货物运输业务流程再造考核试卷
- 货运火车站物流行业交流与合作考核试卷
- 土地生态规划与设计讲解
- 医药人才公园景观设计
- 环保作文课件
- 2025年初级经济师之初级经济师工商管理过关检测试卷A卷附答案
- 小学生教育方法与实施路径
- 职域行销BBC模式开拓流程-企业客户营销技巧策略-人寿保险营销实战-培训课件
- 二年级下册竖式计算题-大全-
- 【基于4P理论的得物APP网络营销策略优化探究14000字(论文)】
- 外研版七年级上册英语单词表
- 氧气吸入操作评分标准(中心供氧)
- 2019年压力性损伤预防治疗临床实践指南
- 中国古诗词探胜 知到智慧树网课答案
- 内科人卫一类模拟考试题(含答案)
- 我国化工新材料发展趋势及展望
- 24秋国家开放大学《计算机系统与维护》实验1-13参考答案
- 2022年广东省深圳市南山区小升初数学试卷
评论
0/150
提交评论